commit 205a8514e63a221c3a5071f27521013444e43e5f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Oct 22 14:43:44 2015 -0700

    Linux 4.1.11

commit baf19f15c8d54395b338a34004ff1f0c1d7c15e7
Author: Christoph Hellwig <hch@lst.de>
Date:   Sat Oct 3 19:16:07 2015 +0200

    3w-9xxx: don't unmap bounce buffered commands
    
    commit 15e3d5a285ab9283136dba34bbf72886d9146706 upstream.
    
    3w controller don't dma map small single SGL entry commands but instead
    bounce buffer them.  Add a helper to identify these commands and don't
    call scsi_dma_unmap for them.
    
    Based on an earlier patch from James Bottomley.
    
    Fixes: 118c85 ("3w-9xxx: fix command completion race")
    Reported-by: Tóth Attila <atoth@atoth.sote.hu>
    Tested-by: Tóth Attila <atoth@atoth.sote.hu>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Adam Radford <aradford@gmail.com>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8ef8d4e5bbc5035a1e9789592ca7e8db09c2ea8
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Aug 30 21:19:58 2015 -0700

    MIPS: Fix console output for Fulong2e system
    
    commit fc2ca674470bbfe11d72a20a3f19fd3dc43bfca0 upstream.
    
    Commit 3adeb2566b9b ("MIPS: Loongson: Improve LEFI firmware interface")
    made the number of UARTs dynamic if LEFI_FIRMWARE_INTERFACE is configured.
    Unfortunately, it did not initialize the number of UARTs if
    LEFI_FIRMWARE_INTERFACE is not configured. As a result, the Fulong2e
    system has no console.
    
    Fixes: 3adeb2566b9b ("MIPS: Loongson: Improve LEFI firmware interface")
    Acked-by: Huacai Chen <chenhc@lemote.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Markos Chandras <markos.chandras@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/11076/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3f916d20c2dc6169a14cb8266bbdb88a97bbbae
Author: Joonsoo Kim <js1304@gmail.com>
Date:   Thu Oct 1 15:36:54 2015 -0700

    mm/slab: fix unexpected index mapping result of kmalloc_size(INDEX_NODE+1)
    
    commit 03a2d2a3eafe4015412cf4e9675ca0e2d9204074 upstream.
    
    Commit description is copied from the original post of this bug:
    
      http://comments.gmane.org/gmane.linux.kernel.mm/135349
    
    Kernels after v3.9 use kmalloc_size(INDEX_NODE + 1) to get the next
    larger cache size than the size index INDEX_NODE mapping.  In kernels
    3.9 and earlier we used malloc_sizes[INDEX_L3 + 1].cs_size.
    
    However, sometimes we can't get the right output we expected via
    kmalloc_size(INDEX_NODE + 1), causing a BUG().
    
    The mapping table in the latest kernel is like:
        index = {0,   1,  2 ,  3,  4,   5,   6,   n}
         size = {0,   96, 192, 8, 16,  32,  64,   2^n}
    The mapping table before 3.10 is like this:
        index = {0 , 1 , 2,   3,  4 ,  5 ,  6,   n}
        size  = {32, 64, 96, 128, 192, 256, 512, 2^(n+3)}
    
    The problem on my mips64 machine is as follows:
    
    (1) When configured DEBUG_SLAB && DEBUG_PAGEALLOC && DEBUG_LOCK_ALLOC
        && DEBUG_SPINLOCK, the sizeof(struct kmem_cache_node) will be "150",
        and the macro INDEX_NODE turns out to be "2": #define INDEX_NODE
        kmalloc_index(sizeof(struct kmem_cache_node))
    
    (2) Then the result of kmalloc_size(INDEX_NODE + 1) is 8.
    
    (3) Then "if(size >= kmalloc_size(INDEX_NODE + 1)" will lead to "size
        = PAGE_SIZE".
    
    (4) Then "if ((size >= (PAGE_SIZE >> 3))" test will be satisfied and
        "flags |= CFLGS_OFF_SLAB" will be covered.
    
    (5) if (flags & CFLGS_OFF_SLAB)" test will be satisfied and will go to
        "cachep->slabp_cache = kmalloc_slab(slab_size, 0u)", and the result
        here may be NULL while kernel bootup.
    
    (6) Finally,"BUG_ON(ZERO_OR_NULL_PTR(cachep->slabp_cache));" causes the
        BUG info as the following shows (may be only mips64 has this problem):
    
    This patch fixes the problem of kmalloc_size(INDEX_NODE + 1) and removes
    the BUG by adding 'size >= 256' check to guarantee that all necessary
    small sized slabs are initialized regardless sequence of slab size in
    mapping table.
    
    Fixes: e33660165c90 ("slab: Use common kmalloc_index/kmalloc_size...")
    Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Reported-by: Liuhailong <liu.hailong6@zte.com.cn>
    Acked-by: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13bc967d64d56b232189218b435178a3c2388de3
Author: Prarit Bhargava <prarit@redhat.com>
Date:   Mon Jun 15 13:43:29 2015 -0400

    intel_pstate: Fix overflow in busy_scaled due to long delay
    
    commit 7180dddf7c32c49975c7e7babf2b60ed450cb760 upstream.
    
    The kernel may delay interrupts for a long time which can result in timers
    being delayed. If this occurs the intel_pstate driver will crash with a
    divide by zero error:
    
    divide error: 0000 [#1] SMP
    Modules linked in: btrfs zlib_deflate raid6_pq xor msdos ext4 mbcache jbd2 binfmt_misc arc4 md4 nls_utf8 cifs dns_resolver tcp_lp bnep bluetooth rfkill fuse dm_service_time iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi nf_conntrack_netbios_ns nf_conntrack_broadcast nf_conntrack_ftp ip6t_rpfilter ip6t_REJECT ipt_REJECT xt_conntrack ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6table_mangle ip6table_security ip6table_raw ip6table_filter ip6_tables iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack iptable_mangle iptable_security iptable_raw iptable_filter ip_tables intel_powerclamp coretemp vfat fat kvm_intel iTCO_wdt iTCO_vendor_support ipmi_devintf sr_mod kvm crct10dif_pclmul
     crc32_pclmul crc32c_intel ghash_clmulni_intel aesni_intel cdc_ether lrw usbnet cdrom mii gf128mul glue_helper ablk_helper cryptd lpc_ich mfd_core pcspkr sb_edac edac_core ipmi_si ipmi_msghandler ioatdma wmi shpchp acpi_pad nfsd auth_rpcgss nfs_acl lockd uinput dm_multipath sunrpc xfs libcrc32c usb_storage sd_mod crc_t10dif crct10dif_common ixgbe mgag200 syscopyarea sysfillrect sysimgblt mdio drm_kms_helper ttm igb drm ptp pps_core dca i2c_algo_bit megaraid_sas i2c_core dm_mirror dm_region_hash dm_log dm_mod
    CPU: 113 PID: 0 Comm: swapper/113 Tainted: G        W   --------------   3.10.0-229.1.2.el7.x86_64 #1
    Hardware name: IBM x3950 X6 -[3837AC2]-/00FN827, BIOS -[A8E112BUS-1.00]- 08/27/2014
    task: ffff880fe8abe660 ti: ffff880fe8ae4000 task.ti: ffff880fe8ae4000
    RIP: 0010:[<ffffffff814a9279>]  [<ffffffff814a9279>] intel_pstate_timer_func+0x179/0x3d0
    RSP: 0018:ffff883fff4e3db8  EFLAGS: 00010206
    RAX: 0000000027100000 RBX: ffff883fe6965100 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000010 RDI: 000000002e53632d
    RBP: ffff883fff4e3e20 R08: 000e6f69a5a125c0 R09: ffff883fe84ec001
    R10: 0000000000000002 R11: 0000000000000005 R12: 00000000000049f5
    R13: 0000000000271000 R14: 00000000000049f5 R15: 0000000000000246
    FS:  0000000000000000(0000) GS:ffff883fff4e0000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f7668601000 CR3: 000000000190a000 CR4: 00000000001407e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Stack:
     ffff883fff4e3e58 ffffffff81099dc1 0000000000000086 0000000000000071
     ffff883fff4f3680 0000000000000071 fbdc8a965e33afee ffffffff810b69dd
     ffff883fe84ec000 ffff883fe6965108 0000000000000100 ffffffff814a9100
    Call Trace:
     <IRQ>
    
     [<ffffffff81099dc1>] ? run_posix_cpu_timers+0x51/0x840
     [<ffffffff810b69dd>] ? trigger_load_balance+0x5d/0x200
     [<ffffffff814a9100>] ? pid_param_set+0x130/0x130
     [<ffffffff8107df56>] call_timer_fn+0x36/0x110
     [<ffffffff814a9100>] ? pid_param_set+0x130/0x130
     [<ffffffff8107fdcf>] run_timer_softirq+0x21f/0x320
     [<ffffffff81077b2f>] __do_softirq+0xef/0x280
     [<ffffffff816156dc>] call_softirq+0x1c/0x30
     [<ffffffff81015d95>] do_softirq+0x65/0xa0
     [<ffffffff81077ec5>] irq_exit+0x115/0x120
     [<ffffffff81616355>] smp_apic_timer_interrupt+0x45/0x60
     [<ffffffff81614a1d>] apic_timer_interrupt+0x6d/0x80
     <EOI>
    
     [<ffffffff814a9c32>] ? cpuidle_enter_state+0x52/0xc0
     [<ffffffff814a9c28>] ? cpuidle_enter_state+0x48/0xc0
     [<ffffffff814a9d65>] cpuidle_idle_call+0xc5/0x200
     [<ffffffff8101d14e>] arch_cpu_idle+0xe/0x30
     [<ffffffff810c67c1>] cpu_startup_entry+0xf1/0x290
     [<ffffffff8104228a>] start_secondary+0x1ba/0x230
    Code: 42 0f 00 45 89 e6 48 01 c2 43 8d 44 6d 00 39 d0 73 26 49 c1 e5 08 89 d2 4d 63 f4 49 63 c5 48 c1 e2 08 48 c1 e0 08 48 63 ca 48 99 <48> f7 f9 48 98 4c 0f af f0 49 c1 ee 08 8b 43 78 c1 e0 08 44 29
    RIP  [<ffffffff814a9279>] intel_pstate_timer_func+0x179/0x3d0
     RSP <ffff883fff4e3db8>
    
    The kernel values for cpudata for CPU 113 were:
    
    struct cpudata {
      cpu = 113,
      timer = {
        entry = {
          next = 0x0,
          prev = 0xdead000000200200
        },
        expires = 8357799745,
        base = 0xffff883fe84ec001,
        function = 0xffffffff814a9100 <intel_pstate_timer_func>,
        data = 18446612406765768960,
    <snip>
        i_gain = 0,
        d_gain = 0,
        deadband = 0,
        last_err = 22489
      },
      last_sample_time = {
        tv64 = 4063132438017305
      },
      prev_aperf = 287326796397463,
      prev_mperf = 251427432090198,
      sample = {
        core_pct_busy = 23081,
        aperf = 2937407,
        mperf = 3257884,
        freq = 2524484,
        time = {
          tv64 = 4063149215234118
        }
      }
    }
    
    which results in the time between samples = last_sample_time - sample.time
    = 4063149215234118 - 4063132438017305 = 16777216813 which is 16.777 seconds.
    
    The duration between reads of the APERF and MPERF registers overflowed a s32
    sized integer in intel_pstate_get_scaled_busy()'s call to div_fp().  The result
    is that int_tofp(duration_us) == 0, and the kernel attempts to divide by 0.
    
    While the kernel shouldn't be delaying for a long time, it can and does
    happen and the intel_pstate driver should not panic in this situation.  This
    patch changes the div_fp() function to use div64_s64() to allow for "long"
    division.  This will avoid the overflow condition on long delays.
    
    [v2]: use div64_s64() in div_fp()
    
    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Thomas Renninger <trenn@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a1d5ab8258cfd3143eae034ee2a07e08ae2cf42
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Wed Sep 23 08:57:40 2015 +0200

    serial: atmel: fix error path of probe function
    
    commit 8f1bd8f2ad2358d6a88c115481ff3e69817d1bde upstream.
    
    If atmel_init_gpios fails the port has already been marked as busy (in
    line 2629), so this must be undone in the error path.
    
    This bug was introduced because I created the patch that finally
    became 722ccf416ac2 ("serial: atmel: fix error handling when
    mctrl_gpio_init fails") on top of 3.19 which didn't have commit
    6fbb9bdf0f3f ("tty/serial: at91: fix error handling in
    atmel_serial_probe()") yet.
    
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Fixes: 722ccf416ac2 ("serial: atmel: fix error handling when mctrl_gpio_init fails")
    Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e2b2e1c44da4a44931466eb0a47b097840be43a
Author: Mans Rullgard <mans@mansr.com>
Date:   Fri Oct 2 17:50:31 2015 +0100

    serial: 8250: add uart_config entry for PORT_RT2880
    
    commit 3c5a0357fdb3a9116a48dbdb0abb91fd23fbff80 upstream.
    
    This adds an entry to the uart_config table for PORT_RT2880
    enabling rx/tx FIFOs.  The UART is actually a Palmchip BK-3103
    which is found in several devices from Alchemy/RMI, Ralink, and
    Sigma Designs.
    
    Signed-off-by: Mans Rullgard <mans@mansr.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f98531e220596953ce62c5df084bf073d88f901
Author: Jann Horn <jann@thejh.net>
Date:   Sun Oct 4 19:29:12 2015 +0200

    drivers/tty: require read access for controlling terminal
    
    commit 0c55627167870255158db1cde0d28366f91c8872 upstream.
    
    This is mostly a hardening fix, given that write-only access to other
    users' ttys is usually only given through setgid tty executables.
    
    Signed-off-by: Jann Horn <jann@thejh.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 614ea4ea2c3face1f54dcc8e9a0ba134adce427e
Author: Kosuke Tatsukawa <tatsu@ab.jp.nec.com>
Date:   Fri Oct 2 08:27:05 2015 +0000

    tty: fix stall caused by missing memory barrier in drivers/tty/n_tty.c
    
    commit e81107d4c6bd098878af9796b24edc8d4a9524fd upstream.
    
    My colleague ran into a program stall on a x86_64 server, where
    n_tty_read() was waiting for data even if there was data in the buffer
    in the pty.  kernel stack for the stuck process looks like below.
     #0 [ffff88303d107b58] __schedule at ffffffff815c4b20
     #1 [ffff88303d107bd0] schedule at ffffffff815c513e
     #2 [ffff88303d107bf0] schedule_timeout at ffffffff815c7818
     #3 [ffff88303d107ca0] wait_woken at ffffffff81096bd2
     #4 [ffff88303d107ce0] n_tty_read at ffffffff8136fa23
     #5 [ffff88303d107dd0] tty_read at ffffffff81368013
     #6 [ffff88303d107e20] __vfs_read at ffffffff811a3704
     #7 [ffff88303d107ec0] vfs_read at ffffffff811a3a57
     #8 [ffff88303d107f00] sys_read at ffffffff811a4306
     #9 [ffff88303d107f50] entry_SYSCALL_64_fastpath at ffffffff815c86d7
    
    There seems to be two problems causing this issue.
    
    First, in drivers/tty/n_tty.c, __receive_buf() stores the data and
    updates ldata->commit_head using smp_store_release() and then checks
    the wait queue using waitqueue_active().  However, since there is no
    memory barrier, __receive_buf() could return without calling
    wake_up_interactive_poll(), and at the same time, n_tty_read() could
    start to wait in wait_woken() as in the following chart.
    
            __receive_buf()                         n_tty_read()
    ------------------------------------------------------------------------
    if (waitqueue_active(&tty->read_wait))
    /* Memory operations issued after the
       RELEASE may be completed before the
       RELEASE operation has completed */
                                            add_wait_queue(&tty->read_wait, &wait);
                                            ...
                                            if (!input_available_p(tty, 0)) {
    smp_store_release(&ldata->commit_head,
                      ldata->read_head);
                                            ...
                                            timeout = wait_woken(&wait,
                                              TASK_INTERRUPTIBLE, timeout);
    ------------------------------------------------------------------------
    
    The second problem is that n_tty_read() also lacks a memory barrier
    call and could also cause __receive_buf() to return without calling
    wake_up_interactive_poll(), and n_tty_read() to wait in wait_woken()
    as in the chart below.
    
            __receive_buf()                         n_tty_read()
    ------------------------------------------------------------------------
                                            spin_lock_irqsave(&q->lock, flags);
                                            /* from add_wait_queue() */
                                            ...
                                            if (!input_available_p(tty, 0)) {
                                            /* Memory operations issued after the
                                               RELEASE may be completed before the
                                               RELEASE operation has completed */
    smp_store_release(&ldata->commit_head,
                      ldata->read_head);
    if (waitqueue_active(&tty->read_wait))
                                            __add_wait_queue(q, wait);
                                            spin_unlock_irqrestore(&q->lock,flags);
                                            /* from add_wait_queue() */
                                            ...
                                            timeout = wait_woken(&wait,
                                              TASK_INTERRUPTIBLE, timeout);
    ------------------------------------------------------------------------
    
    There are also other places in drivers/tty/n_tty.c which have similar
    calls to waitqueue_active(), so instead of adding many memory barrier
    calls, this patch simply removes the call to waitqueue_active(),
    leaving just wake_up*() behind.
    
    This fixes both problems because, even though the memory access before
    or after the spinlocks in both wake_up*() and add_wait_queue() can
    sneak into the critical section, it cannot go past it and the critical
    section assures that they will be serialized (please see "INTER-CPU
    ACQUIRING BARRIER EFFECTS" in Documentation/memory-barriers.txt for a
    better explanation).  Moreover, the resulting code is much simpler.
    
    Latency measurement using a ping-pong test over a pty doesn't show any
    visible performance drop.
    
    Signed-off-by: Kosuke Tatsukawa <tatsu@ab.jp.nec.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0533fb8cf60edd38790a8b4a6ebf4b78d1f771c
Author: covici@ccs.covici.com <covici@ccs.covici.com>
Date:   Wed May 20 05:44:11 2015 -0400

    staging: speakup: fix speakup-r regression
    
    commit b1d562acc78f0af46de0dfe447410bc40bdb7ece upstream.
    
    Here is a patch to make speakup-r work again.
    
    It broke in 3.6 due to commit 4369c64c79a22b98d3b7eff9d089196cd878a10a
    "Input: Send events one packet at a time)
    
    The problem was that the fakekey.c routine to fake a down arrow no
    longer functioned properly and putting the input_sync fixed it.
    
    Fixes: 4369c64c79a22b98d3b7eff9d089196cd878a10a
    Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Signed-off-by: John Covici <covici@ccs.covici.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 383f72c17c5f1b4e27f8dd5887a78ce6ce577179
Author: Joe Thornber <ejt@redhat.com>
Date:   Fri Oct 9 14:03:38 2015 +0100

    dm cache: fix NULL pointer when switching from cleaner policy
    
    commit 2bffa1503c5c06192eb1459180fac4416575a966 upstream.
    
    The cleaner policy doesn't make use of the per cache block hint space in
    the metadata (unlike the other policies).  When switching from the
    cleaner policy to mq or smq a NULL pointer crash (in dm_tm_new_block)
    was observed.  The crash was caused by bugs in dm-cache-metadata.c
    when trying to skip creation of the hint btree.
    
    The minimal fix is to change hint size for the cleaner policy to 4 bytes
    (only hint size supported).
    
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16d4c27cb8ca5b7955efbf4389e1537ff948f7ef
Author: Junichi Nomura <j-nomura@ce.jp.nec.com>
Date:   Thu Oct 1 08:31:51 2015 +0000

    dm: fix AB-BA deadlock in __dm_destroy()
    
    commit 2a708cff93f1845b9239bc7d6310aef54e716c6a upstream.
    
    __dm_destroy() takes io_barrier SRCU lock (dm_get_live_table) and
    suspend_lock in reverse order.  Doing so can cause AB-BA deadlock:
    
      __dm_destroy                    dm_swap_table
      ---------------------------------------------------
                                      mutex_lock(suspend_lock)
      dm_get_live_table()
        srcu_read_lock(io_barrier)
                                      dm_sync_table()
                                        synchronize_srcu(io_barrier)
                                          .. waiting for dm_put_live_table()
      mutex_lock(suspend_lock)
        .. waiting for suspend_lock
    
    Fix this by taking the locks in proper order.
    
    Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
    Fixes: ab7c7bb6f4ab ("dm: hold suspend_lock while suspending device during device deletion")
    Acked-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2058efbcb0eb148db2086266cfb048da42fd0a93
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Fri Oct 9 13:44:34 2015 -0400

    namei: results of d_is_negative() should be checked after dentry revalidation
    
    commit daf3761c9fcde0f4ca64321cbed6c1c86d304193 upstream.
    
    Leandro Awa writes:
     "After switching to version 4.1.6, our parallelized and distributed
      workflows now fail consistently with errors of the form:
    
      T34: ./regex.c:39:22: error: config.h: No such file or directory
    
      From our 'git bisect' testing, the following commit appears to be the
      possible cause of the behavior we've been seeing: commit 766c4cbfacd8"
    
    Al Viro says:
     "What happens is that 766c4cbfacd8 got the things subtly wrong.
    
      We used to treat d_is_negative() after lookup_fast() as "fall with
      ENOENT".  That was wrong - checking ->d_flags outside of ->d_seq
      protection is unreliable and failing with hard error on what should've
      fallen back to non-RCU pathname resolution is a bug.
    
      Unfortunately, we'd pulled the test too far up and ran afoul of
      another kind of staleness.  The dentry might have been absolutely
      stable from the RCU point of view (and we might be on UP, etc), but
      stale from the remote fs point of view.  If ->d_revalidate() returns
      "it's actually stale", dentry gets thrown away and the original code
      wouldn't even have looked at its ->d_flags.
    
      What we need is to check ->d_flags where 766c4cbfacd8 does (prior to
      ->d_seq validation) but only use the result in cases where we do not
      discard this dentry outright"
    
    Reported-by: Leandro Awa <lawa@nvidia.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=104911
    Fixes: 766c4cbfacd8 ("namei: d_is_negative() should be checked...")
    Tested-by: Leandro Awa <lawa@nvidia.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 645b9d3806330fc9fb5bc0b30ff6845e344888de
Author: Ben Dooks <ben.dooks@codethink.co.uk>
Date:   Tue Sep 29 15:01:08 2015 +0100

    clk: ti: fix dual-registration of uart4_ick
    
    commit 19e79687de22f23bcfb5e79cce3daba20af228d1 upstream.
    
    On the OMAP AM3517 platform the uart4_ick gets registered
    twice, causing any power management to /dev/ttyO3 to fail
    when trying to wake the device up.
    
    This solves the following oops:
    
    [] Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa09e008
    [] PC is at serial_omap_pm+0x48/0x15c
    [] LR is at _raw_spin_unlock_irqrestore+0x30/0x5c
    
    Fixes: aafd900cab87 ("CLK: TI: add omap3 clock init file")
    Cc: mturquette@baylibre.com
    Cc: sboyd@codeaurora.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-omap@vger.kernel.org
    Cc: linux-kernel@lists.codethink.co.uk
    Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
    Signed-off-by: Tero Kristo <t-kristo@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 863e9b4f5ab7e6c7230b289397b06ca4c77a671d
Author: Kinglong Mee <kinglongmee@gmail.com>
Date:   Mon Sep 14 20:12:21 2015 +0800

    nfs/filelayout: Fix NULL reference caused by double freeing of fh_array
    
    commit 3ec0c97959abff33a42db9081c22132bcff5b4f2 upstream.
    
    If filelayout_decode_layout fail, _filelayout_free_lseg will causes
    a double freeing of fh_array.
    
    [ 1179.279800] BUG: unable to handle kernel NULL pointer dereference at           (null)
    [ 1179.280198] IP: [<ffffffffa027222d>] filelayout_free_fh_array.isra.11+0x1d/0x70 [nfs_layout_nfsv41_files]
    [ 1179.281010] PGD 0
    [ 1179.281443] Oops: 0000 [#1]
    [ 1179.281831] Modules linked in: nfs_layout_nfsv41_files(OE) nfsv4(OE) nfs(OE) fscache(E) xfs libcrc32c coretemp nfsd crct10dif_pclmul ppdev crc32_pclmul crc32c_intel auth_rpcgss ghash_clmulni_intel nfs_acl lockd vmw_balloon grace sunrpc parport_pc vmw_vmci parport shpchp i2c_piix4 vmwgfx drm_kms_helper ttm drm serio_raw mptspi scsi_transport_spi mptscsih e1000 mptbase ata_generic pata_acpi [last unloaded: fscache]
    [ 1179.283891] CPU: 0 PID: 13336 Comm: cat Tainted: G           OE   4.3.0-rc1-pnfs+ #244
    [ 1179.284323] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 05/20/2014
    [ 1179.285206] task: ffff8800501d48c0 ti: ffff88003e3c4000 task.ti: ffff88003e3c4000
    [ 1179.285668] RIP: 0010:[<ffffffffa027222d>]  [<ffffffffa027222d>] filelayout_free_fh_array.isra.11+0x1d/0x70 [nfs_layout_nfsv41_files]
    [ 1179.286612] RSP: 0018:ffff88003e3c77f8  EFLAGS: 00010202
    [ 1179.287092] RAX: 0000000000000000 RBX: ffff88001fe78900 RCX: 0000000000000000
    [ 1179.287731] RDX: ffffea0000f40760 RSI: ffff88001fe789c8 RDI: ffff88001fe789c0
    [ 1179.288383] RBP: ffff88003e3c7810 R08: ffffea0000f40760 R09: 0000000000000000
    [ 1179.289170] R10: 0000000000000000 R11: 0000000000000001 R12: ffff88001fe789c8
    [ 1179.289959] R13: ffff88001fe789c0 R14: ffff88004ec05a80 R15: ffff88004f935b88
    [ 1179.290791] FS:  00007f4e66bb5700(0000) GS:ffffffff81c29000(0000) knlGS:0000000000000000
    [ 1179.291580] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1179.292209] CR2: 0000000000000000 CR3: 00000000203f8000 CR4: 00000000001406f0
    [ 1179.292731] Stack:
    [ 1179.293195]  ffff88001fe78900 00000000000000d0 ffff88001fe78178 ffff88003e3c7868
    [ 1179.293676]  ffffffffa0272737 0000000000000001 0000000000000001 ffff88001fe78800
    [ 1179.294151]  00000000614fffce ffffffff81727671 ffff88001fe78100 ffff88001fe78100
    [ 1179.294623] Call Trace:
    [ 1179.295092]  [<ffffffffa0272737>] filelayout_alloc_lseg+0xa7/0x2d0 [nfs_layout_nfsv41_files]
    [ 1179.295625]  [<ffffffff81727671>] ? out_of_line_wait_on_bit+0x81/0xb0
    [ 1179.296133]  [<ffffffffa040407e>] pnfs_layout_process+0xae/0x320 [nfsv4]
    [ 1179.296632]  [<ffffffffa03e0a01>] nfs4_proc_layoutget+0x2b1/0x360 [nfsv4]
    [ 1179.297134]  [<ffffffffa0402983>] pnfs_update_layout+0x853/0xb30 [nfsv4]
    [ 1179.297632]  [<ffffffffa039db24>] ? nfs_get_lock_context+0x74/0x170 [nfs]
    [ 1179.298158]  [<ffffffffa0271807>] filelayout_pg_init_read+0x37/0x50 [nfs_layout_nfsv41_files]
    [ 1179.298834]  [<ffffffffa03a72d9>] __nfs_pageio_add_request+0x119/0x460 [nfs]
    [ 1179.299385]  [<ffffffffa03a6bd7>] ? nfs_create_request.part.9+0x37/0x2e0 [nfs]
    [ 1179.299872]  [<ffffffffa03a7cc3>] nfs_pageio_add_request+0xa3/0x1b0 [nfs]
    [ 1179.300362]  [<ffffffffa03a8635>] readpage_async_filler+0x85/0x260 [nfs]
    [ 1179.300907]  [<ffffffff81180cb1>] read_cache_pages+0x91/0xd0
    [ 1179.301391]  [<ffffffffa03a85b0>] ? nfs_read_completion+0x220/0x220 [nfs]
    [ 1179.301867]  [<ffffffffa03a8dc8>] nfs_readpages+0x128/0x200 [nfs]
    [ 1179.302330]  [<ffffffff81180ef3>] __do_page_cache_readahead+0x203/0x280
    [ 1179.302784]  [<ffffffff81180dc8>] ? __do_page_cache_readahead+0xd8/0x280
    [ 1179.303413]  [<ffffffff81181116>] ondemand_readahead+0x1a6/0x2f0
    [ 1179.303855]  [<ffffffff81181371>] page_cache_sync_readahead+0x31/0x50
    [ 1179.304286]  [<ffffffff811750a6>] generic_file_read_iter+0x4a6/0x5c0
    [ 1179.304711]  [<ffffffffa03a0316>] ? __nfs_revalidate_mapping+0x1f6/0x240 [nfs]
    [ 1179.305132]  [<ffffffffa039ccf2>] nfs_file_read+0x52/0xa0 [nfs]
    [ 1179.305540]  [<ffffffff811e343c>] __vfs_read+0xcc/0x100
    [ 1179.305936]  [<ffffffff811e3d15>] vfs_read+0x85/0x130
    [ 1179.306326]  [<ffffffff811e4a98>] SyS_read+0x58/0xd0
    [ 1179.306708]  [<ffffffff8172caaf>] entry_SYSCALL_64_fastpath+0x12/0x76
    [ 1179.307094] Code: c4 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 55 48 89 e5 41 55 41 54 53 8b 07 49 89 f4 85 c0 74 47 48 8b 06 49 89 fd <48> 8b 38 48 85 ff 74 22 31 db eb 0c 48 63 d3 48 8b 3c d0 48 85
    [ 1179.308357] RIP  [<ffffffffa027222d>] filelayout_free_fh_array.isra.11+0x1d/0x70 [nfs_layout_nfsv41_files]
    [ 1179.309177]  RSP <ffff88003e3c77f8>
    [ 1179.309582] CR2: 0000000000000000
    
    Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Cc: William Dauchy <william@gandi.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aaf19f122d2e826cab6a56dabfdfcd485430a9bc
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Jul 12 10:39:45 2015 -0400

    fix a braino in ovl_d_select_inode()
    
    commit 9391dd00d13c853ab4f2a85435288ae2202e0e43 upstream.
    
    when opening a directory we want the overlayfs inode, not one from
    the topmost layer.
    
    Reported-By: Andrey Jr. Melnikov <temnota.am@gmail.com>
    Tested-By: Andrey Jr. Melnikov <temnota.am@gmail.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: "Kamata, Munehisa" <kamatam@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9abb3b81094857a1e2d7dea5b2a8605e29d8c77d
Author: David Howells <dhowells@redhat.com>
Date:   Thu Jun 18 14:32:31 2015 +0100

    overlayfs: Make f_path always point to the overlay and f_inode to the underlay
    
    commit 4bacc9c9234c7c8eec44f5ed4e960d9f96fa0f01 upstream.
    
    Make file->f_path always point to the overlay dentry so that the path in
    /proc/pid/fd is correct and to ensure that label-based LSMs have access to the
    overlay as well as the underlay (path-based LSMs probably don't need it).
    
    Using my union testsuite to set things up, before the patch I see:
    
    	[root@andromeda union-testsuite]# bash 5</mnt/a/foo107
    	[root@andromeda union-testsuite]# ls -l /proc/$$/fd/
    	...
    	lr-x------. 1 root root 64 Jun  5 14:38 5 -> /a/foo107
    	[root@andromeda union-testsuite]# stat /mnt/a/foo107
    	...
    	Device: 23h/35d Inode: 13381       Links: 1
    	...
    	[root@andromeda union-testsuite]# stat -L /proc/$$/fd/5
    	...
    	Device: 23h/35d Inode: 13381       Links: 1
    	...
    
    After the patch:
    
    	[root@andromeda union-testsuite]# bash 5</mnt/a/foo107
    	[root@andromeda union-testsuite]# ls -l /proc/$$/fd/
    	...
    	lr-x------. 1 root root 64 Jun  5 14:22 5 -> /mnt/a/foo107
    	[root@andromeda union-testsuite]# stat /mnt/a/foo107
    	...
    	Device: 23h/35d Inode: 40346       Links: 1
    	...
    	[root@andromeda union-testsuite]# stat -L /proc/$$/fd/5
    	...
    	Device: 23h/35d Inode: 40346       Links: 1
    	...
    
    Note the change in where /proc/$$/fd/5 points to in the ls command.  It was
    pointing to /a/foo107 (which doesn't exist) and now points to /mnt/a/foo107
    (which is correct).
    
    The inode accessed, however, is the lower layer.  The union layer is on device
    25h/37d and the upper layer on 24h/36d.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: "Kamata, Munehisa" <kamatam@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d2ea357d7aaaa93c81bae718f3eb88f90e337e3
Author: David Howells <dhowells@redhat.com>
Date:   Thu Jun 18 14:32:23 2015 +0100

    overlay: Call ovl_drop_write() earlier in ovl_dentry_open()
    
    commit f25801ee4680ef1db21e15c112e6e5fe3ffe8da5 upstream.
    
    Call ovl_drop_write() earlier in ovl_dentry_open() before we call vfs_open()
    as we've done the copy up for which we needed the freeze-write lock by that
    point.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Cc: "Kamata, Munehisa" <kamatam@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 583c46f9ce3818c85da204eeb19adfe1d4ea860a
Author: NeilBrown <neilb@suse.com>
Date:   Thu Oct 1 16:03:38 2015 +1000

    md/bitmap: don't pass -1 to bitmap_storage_alloc.
    
    commit da6fb7a9e5bd6f04f7e15070f630bdf1ea502841 upstream.
    
    Passing -1 to bitmap_storage_alloc() causes page->index to be set to
    -1, which is quite problematic.
    
    So only pass ->cluster_slot if mddev_is_clustered().
    
    Fixes: b97e92574c0b ("Use separate bitmaps for each nodes in the cluster")
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cf68c236f11431677c2dee17161cec5df42a5b9
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Sep 26 12:23:56 2015 +0100

    genirq: Fix race in register_irq_proc()
    
    commit 95c2b17534654829db428f11bcf4297c059a2a7e upstream.
    
    Per-IRQ directories in procfs are created only when a handler is first
    added to the irqdesc, not when the irqdesc is created.  In the case of
    a shared IRQ, multiple tasks can race to create a directory.  This
    race condition seems to have been present forever, but is easier to
    hit with async probing.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Link: http://lkml.kernel.org/r/1443266636.2004.2.camel@decadent.org.uk
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f9611c8005b4d066f7d7fd8384d9a5486acc5f6
Author: Stefan Assmann <sassmann@kpanic.de>
Date:   Fri Jul 10 15:01:12 2015 +0200

    igb: do not re-init SR-IOV during probe
    
    commit 6423fc34160939142d72ffeaa2db6408317f54df upstream.
    
    During driver probing the following code path is triggered.
    igb_probe
    ->igb_sw_init
      ->igb_probe_vfs
        ->igb_pci_enable_sriov
          ->igb_sriov_reinit
    
    Doing the SR-IOV re-init is not necessary during probing since we're
    starting from scratch. Here we can call igb_enable_sriov() right away.
    
    Running igb_sriov_reinit() during igb_probe() also seems to cause
    occasional packet loss on some onboard 82576 NICs. Reproduced on
    Dell and HP servers with onboard 82576 NICs.
    Example:
    Intel Corporation 82576 Gigabit Network Connection [8086:10c9] (rev 01)
    Subsystem: Dell Device [1028:0481]
    
    Signed-off-by: Stefan Assmann <sassmann@kpanic.de>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Cc: Daniel J Blueman <daniel@numascale.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9373e7b420ec7dc8b9c20c5eae472c2906c67893
Author: Chas Williams <3chas3@gmail.com>
Date:   Thu Aug 27 12:28:46 2015 -0400

    net/xen-netfront: only napi_synchronize() if running
    
    commit 274b045509175db0405c784be85e8cce116e6f7d upstream.
    
    If an interface isn't running napi_synchronize() will hang forever.
    
    [  392.248403] rmmod           R  running task        0   359    343 0x00000000
    [  392.257671]  ffff88003760fc88 ffff880037193b40 ffff880037193160 ffff88003760fc88
    [  392.267644]  ffff880037610000 ffff88003760fcd8 0000000100014c22 ffffffff81f75c40
    [  392.277524]  0000000000bc7010 ffff88003760fca8 ffffffff81796927 ffffffff81f75c40
    [  392.287323] Call Trace:
    [  392.291599]  [<ffffffff81796927>] schedule+0x37/0x90
    [  392.298553]  [<ffffffff8179985b>] schedule_timeout+0x14b/0x280
    [  392.306421]  [<ffffffff810f91b9>] ? irq_free_descs+0x69/0x80
    [  392.314006]  [<ffffffff811084d0>] ? internal_add_timer+0xb0/0xb0
    [  392.322125]  [<ffffffff81109d07>] msleep+0x37/0x50
    [  392.329037]  [<ffffffffa00ec79a>] xennet_disconnect_backend.isra.24+0xda/0x390 [xen_netfront]
    [  392.339658]  [<ffffffffa00ecadc>] xennet_remove+0x2c/0x80 [xen_netfront]
    [  392.348516]  [<ffffffff81481c69>] xenbus_dev_remove+0x59/0xc0
    [  392.356257]  [<ffffffff814e7217>] __device_release_driver+0x87/0x120
    [  392.364645]  [<ffffffff814e7cf8>] driver_detach+0xb8/0xc0
    [  392.371989]  [<ffffffff814e6e69>] bus_remove_driver+0x59/0xe0
    [  392.379883]  [<ffffffff814e84f0>] driver_unregister+0x30/0x70
    [  392.387495]  [<ffffffff814814b2>] xenbus_unregister_driver+0x12/0x20
    [  392.395908]  [<ffffffffa00ed89b>] netif_exit+0x10/0x775 [xen_netfront]
    [  392.404877]  [<ffffffff81124e08>] SyS_delete_module+0x1d8/0x230
    [  392.412804]  [<ffffffff8179a8ee>] system_call_fastpath+0x12/0x71
    
    Signed-off-by: Chas Williams <3chas3@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: "Kamata, Munehisa" <kamatam@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59c73a0acf07e06480bb0e253f059317827aa623
Author: Andreas Schwab <schwab@linux-m68k.org>
Date:   Wed Sep 23 23:12:09 2015 +0200

    m68k: Define asmlinkage_protect
    
    commit 8474ba74193d302e8340dddd1e16c85cc4b98caf upstream.
    
    Make sure the compiler does not modify arguments of syscall functions.
    This can happen if the compiler generates a tailcall to another
    function.  For example, without asmlinkage_protect sys_openat is compiled
    into this function:
    
    sys_openat:
    	clr.l %d0
    	move.w 18(%sp),%d0
    	move.l %d0,16(%sp)
    	jbra do_sys_open
    
    Note how the fourth argument is modified in place, modifying the register
    %d4 that gets restored from this stack slot when the function returns to
    user-space.  The caller may expect the register to be unmodified across
    system calls.
    
    Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f01570729d1ee1293c25517087672f73277d354f
Author: Mark Salyzyn <salyzyn@android.com>
Date:   Mon Sep 21 21:39:50 2015 +0100

    arm64: readahead: fault retry breaks mmap file read random detection
    
    commit 569ba74a7ba69f46ce2950bf085b37fea2408385 upstream.
    
    This is the arm64 portion of commit 45cac65b0fcd ("readahead: fault
    retry breaks mmap file read random detection"), which was absent from
    the initial port and has since gone unnoticed. The original commit says:
    
    > .fault now can retry.  The retry can break state machine of .fault.  In
    > filemap_fault, if page is miss, ra->mmap_miss is increased.  In the second
    > try, since the page is in page cache now, ra->mmap_miss is decreased.  And
    > these are done in one fault, so we can't detect random mmap file access.
    >
    > Add a new flag to indicate .fault is tried once.  In the second try, skip
    > ra->mmap_miss decreasing.  The filemap_fault state machine is ok with it.
    
    With this change, Mark reports that:
    
    > Random read improves by 250%, sequential read improves by 40%, and
    > random write by 400% to an eMMC device with dm crypto wrapped around it.
    
    Cc: Shaohua Li <shli@kernel.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Wu Fengguang <fengguang.wu@intel.com>
    Signed-off-by: Mark Salyzyn <salyzyn@android.com>
    Signed-off-by: Riley Andrews <riandrews@android.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 249af812dcf37ef58f24f152d07c585cdb4f2153
Author: Li Bin <huawei.libin@huawei.com>
Date:   Wed Sep 30 10:49:55 2015 +0800

    arm64: ftrace: fix function_graph tracer panic
    
    commit ee556d00cf20012e889344a0adbbf809ab5015a3 upstream.
    
    When function graph tracer is enabled, the following operation
    will trigger panic:
    
    mount -t debugfs nodev /sys/kernel
    echo next_tgid > /sys/kernel/tracing/set_ftrace_filter
    echo function_graph > /sys/kernel/tracing/current_tracer
    ls /proc/
    
    ------------[ cut here ]------------
    [  198.501417] Unable to handle kernel paging request at virtual address cb88537fdc8ba316
    [  198.506126] pgd = ffffffc008f79000
    [  198.509363] [cb88537fdc8ba316] *pgd=00000000488c6003, *pud=00000000488c6003, *pmd=0000000000000000
    [  198.517726] Internal error: Oops: 94000005 [#1] SMP
    [  198.518798] Modules linked in:
    [  198.520582] CPU: 1 PID: 1388 Comm: ls Tainted: G
    [  198.521800] Hardware name: linux,dummy-virt (DT)
    [  198.522852] task: ffffffc0fa9e8000 ti: ffffffc0f9ab0000 task.ti: ffffffc0f9ab0000
    [  198.524306] PC is at next_tgid+0x30/0x100
    [  198.525205] LR is at return_to_handler+0x0/0x20
    [  198.526090] pc : [<ffffffc0002a1070>] lr : [<ffffffc0000907c0>] pstate: 60000145
    [  198.527392] sp : ffffffc0f9ab3d40
    [  198.528084] x29: ffffffc0f9ab3d40 x28: ffffffc0f9ab0000
    [  198.529406] x27: ffffffc000d6a000 x26: ffffffc000b786e8
    [  198.530659] x25: ffffffc0002a1900 x24: ffffffc0faf16c00
    [  198.531942] x23: ffffffc0f9ab3ea0 x22: 0000000000000002
    [  198.533202] x21: ffffffc000d85050 x20: 0000000000000002
    [  198.534446] x19: 0000000000000002 x18: 0000000000000000
    [  198.535719] x17: 000000000049fa08 x16: ffffffc000242efc
    [  198.537030] x15: 0000007fa472b54c x14: ffffffffff000000
    [  198.538347] x13: ffffffc0fada84a0 x12: 0000000000000001
    [  198.539634] x11: ffffffc0f9ab3d70 x10: ffffffc0f9ab3d70
    [  198.540915] x9 : ffffffc0000907c0 x8 : ffffffc0f9ab3d40
    [  198.542215] x7 : 0000002e330f08f0 x6 : 0000000000000015
    [  198.543508] x5 : 0000000000000f08 x4 : ffffffc0f9835ec0
    [  198.544792] x3 : cb88537fdc8ba316 x2 : cb88537fdc8ba306
    [  198.546108] x1 : 0000000000000002 x0 : ffffffc000d85050
    [  198.547432]
    [  198.547920] Process ls (pid: 1388, stack limit = 0xffffffc0f9ab0020)
    [  198.549170] Stack: (0xffffffc0f9ab3d40 to 0xffffffc0f9ab4000)
    [  198.582568] Call trace:
    [  198.583313] [<ffffffc0002a1070>] next_tgid+0x30/0x100
    [  198.584359] [<ffffffc0000907bc>] ftrace_graph_caller+0x6c/0x70
    [  198.585503] [<ffffffc0000907bc>] ftrace_graph_caller+0x6c/0x70
    [  198.586574] [<ffffffc0000907bc>] ftrace_graph_caller+0x6c/0x70
    [  198.587660] [<ffffffc0000907bc>] ftrace_graph_caller+0x6c/0x70
    [  198.588896] Code: aa0003f5 2a0103f4 b4000102 91004043 (885f7c60)
    [  198.591092] ---[ end trace 6a346f8f20949ac8 ]---
    
    This is because when using function graph tracer, if the traced
    function return value is in multi regs ([x0-x7]), return_to_handler
    may corrupt them. So in return_to_handler, the parameter regs should
    be protected properly.
    
    Signed-off-by: Li Bin <huawei.libin@huawei.com>
    Acked-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b23b63c222d2fc0d342ff8f4d6b0bf9bd894135f
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Fri Sep 25 23:02:19 2015 +0100

    arm64/efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME regions
    
    commit 0ce3cc008ec04258b6a6314b09f1a6012810881a upstream.
    
    The new Properties Table feature introduced in UEFIv2.5 may
    split memory regions that cover PE/COFF memory images into
    separate code and data regions. Since these regions only differ
    in the type (runtime code vs runtime data) and the permission
    bits, but not in the memory type attributes (UC/WC/WT/WB), the
    spec does not require them to be aligned to 64 KB.
    
    Since the relative offset of PE/COFF .text and .data segments
    cannot be changed on the fly, this means that we can no longer
    pad out those regions to be mappable using 64 KB pages.
    Unfortunately, there is no annotation in the UEFI memory map
    that identifies data regions that were split off from a code
    region, so we must apply this logic to all adjacent runtime
    regions whose attributes only differ in the permission bits.
    
    So instead of rounding each memory region to 64 KB alignment at
    both ends, only round down regions that are not directly
    preceded by another runtime region with the same type
    attributes. Since the UEFI spec does not mandate that the memory
    map be sorted, this means we also need to sort it first.
    
    Note that this change will result in all EFI_MEMORY_RUNTIME
    regions whose start addresses are not aligned to the OS page
    size to be mapped with executable permissions (i.e., on kernels
    compiled with 64 KB pages). However, since these mappings are
    only active during the time that UEFI Runtime Services are being
    invoked, the window for abuse is rather small.
    
    Tested-by: Mark Salter <msalter@redhat.com>
    Tested-by: Mark Rutland <mark.rutland@arm.com> [UEFI 2.4 only]
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Matt Fleming <matt.fleming@intel.com>
    Reviewed-by: Mark Salter <msalter@redhat.com>
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Leif Lindholm <leif.lindholm@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: linux-kernel@vger.kernel.org
    Link: http://lkml.kernel.org/r/1443218539-7610-3-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eed13ce27f481cba65352e73403ca15e67bc26a4
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Sat Aug 15 20:27:13 2015 -0500

    vfs: Test for and handle paths that are unreachable from their mnt_root
    
    commit 397d425dc26da728396e66d392d5dcb8dac30c37 upstream.
    
    In rare cases a directory can be renamed out from under a bind mount.
    In those cases without special handling it becomes possible to walk up
    the directory tree to the root dentry of the filesystem and down
    from the root dentry to every other file or directory on the filesystem.
    
    Like division by zero .. from an unconnected path can not be given
    a useful semantic as there is no predicting at which path component
    the code will realize it is unconnected.  We certainly can not match
    the current behavior as the current behavior is a security hole.
    
    Therefore when encounting .. when following an unconnected path
    return -ENOENT.
    
    - Add a function path_connected to verify path->dentry is reachable
      from path->mnt.mnt_root.  AKA to validate that rename did not do
      something nasty to the bind mount.
    
      To avoid races path_connected must be called after following a path
      component to it's next path component.
    
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f4e45e35c02fd23589a62aab0dc84286cc1302c
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Sat Aug 15 13:36:12 2015 -0500

    dcache: Handle escaped paths in prepend_path
    
    commit cde93be45a8a90d8c264c776fab63487b5038a65 upstream.
    
    A rename can result in a dentry that by walking up d_parent
    will never reach it's mnt_root.  For lack of a better term
    I call this an escaped path.
    
    prepend_path is called by four different functions __d_path,
    d_absolute_path, d_path, and getcwd.
    
    __d_path only wants to see paths are connected to the root it passes
    in.  So __d_path needs prepend_path to return an error.
    
    d_absolute_path similarly wants to see paths that are connected to
    some root.  Escaped paths are not connected to any mnt_root so
    d_absolute_path needs prepend_path to return an error greater
    than 1.  So escaped paths will be treated like paths on lazily
    unmounted mounts.
    
    getcwd needs to prepend "(unreachable)" so getcwd also needs
    prepend_path to return an error.
    
    d_path is the interesting hold out.  d_path just wants to print
    something, and does not care about the weird cases.  Which raises
    the question what should be printed?
    
    Given that <escaped_path>/<anything> should result in -ENOENT I
    believe it is desirable for escaped paths to be printed as empty
    paths.  As there are not really any meaninful path components when
    considered from the perspective of a mount tree.
    
    So tweak prepend_path to return an empty path with an new error
    code of 3 when it encounters an escaped path.
    
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 344fa142ddc8d2316d0fc30eddf32bf56d19c01f
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Mon Sep 14 12:18:55 2015 +0200

    mmc: core: Don't return an error for CD/WP GPIOs when GPIOLIB is unset
    
    commit 43934ece2ea72c1dd279c0b0478c1a036d5d77ee upstream.
    
    When CONFIG_GPIOLIB is unset, its stubs will return -ENOSYS. That means
    when the mmc core parses DT for CD/WP GPIOs via mmc_of_parse(), -ENOSYS
    becomes propagated to the caller. Typically this means that the mmc host
    driver fails to probe.
    
    As the CD/WP GPIOs are already treated as optional, let's extend that to
    cover the case when CONFIG_GPIOLIB is unset.
    
    Reported-by: Michal Simek <michal.simek@xilinx.com>
    Fixes: 16b23787fc70 ("mmc: sdhci-of-arasan: Call OF parsing for MMC")
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Tested-by: Michal Simek <michal.simek@xilinx.com>
    Acked-by: Venu Byravarasu <vbyravarasu@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1d40e01ad8c01eb36557dab69cefd972f5f0415
Author: Haibo Chen <haibo.chen@freescale.com>
Date:   Tue Aug 25 10:02:11 2015 +0800

    mmc: sdhci: fix dma memory leak in sdhci_pre_req()
    
    commit d31911b9374a76560d2c8ea4aa6ce5781621e81d upstream.
    
    Currently one mrq->data maybe execute dma_map_sg() twice
    when mmc subsystem prepare over one new request, and the
    following log show up:
    	sdhci[sdhci_pre_dma_transfer] invalid cookie: 24, next-cookie 25
    
    In this condition, mrq->date map a dma-memory(1) in sdhci_pre_req
    for the first time, and map another dma-memory(2) in sdhci_prepare_data
    for the second time. But driver only unmap the dma-memory(2), and
    dma-memory(1) never unmapped, which cause the dma memory leak issue.
    
    This patch use another method to map the dma memory for the mrq->data
    which can fix this dma memory leak issue.
    
    Fixes: 348487cb28e6 ("mmc: sdhci: use pipeline mmc requests to improve performance")
    Reported-and-tested-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Haibo Chen <haibo.chen@freescale.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef110859613fdbe6e866b09c3b2fd9081faa25dd
Author: shengyong <shengyong1@huawei.com>
Date:   Mon Sep 28 17:57:19 2015 +0000

    UBI: return ENOSPC if no enough space available
    
    commit 7c7feb2ebfc9c0552c51f0c050db1d1a004faac5 upstream.
    
    UBI: attaching mtd1 to ubi0
    UBI: scanning is finished
    UBI error: init_volumes: not enough PEBs, required 706, available 686
    UBI error: ubi_wl_init: no enough physical eraseblocks (-20, need 1)
    UBI error: ubi_attach_mtd_dev: failed to attach mtd1, error -12 <= NOT ENOMEM
    UBI error: ubi_init: cannot attach mtd1
    
    If available PEBs are not enough when initializing volumes, return -ENOSPC
    directly. If available PEBs are not enough when initializing WL, return
    -ENOSPC instead of -ENOMEM.
    
    Signed-off-by: Sheng Yong <shengyong1@huawei.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Reviewed-by: David Gstir <david@sigma-star.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 189c815c3535412f80f3cc628149aa8dda50b3d2
Author: Richard Weinberger <richard@nod.at>
Date:   Tue Sep 22 23:58:07 2015 +0200

    UBI: Validate data_size
    
    commit 281fda27673f833a01d516658a64d22a32c8e072 upstream.
    
    Make sure that data_size is less than LEB size.
    Otherwise a handcrafted UBI image is able to trigger
    an out of bounds memory access in ubi_compare_lebs().
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Reviewed-by: David Gstir <david@sigma-star.at>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 207663ca0d556e09d14c743cdf507e50b12e76fe
Author: Richard Weinberger <richard@nod.at>
Date:   Wed Jul 8 11:46:36 2015 +0200

    UBIFS: Kill unneeded locking in ubifs_init_security
    
    commit cf6f54e3f133229f02a90c04fe0ff9dd9d3264b4 upstream.
    
    Fixes the following lockdep splat:
    [    1.244527] =============================================
    [    1.245193] [ INFO: possible recursive locking detected ]
    [    1.245193] 4.2.0-rc1+ #37 Not tainted
    [    1.245193] ---------------------------------------------
    [    1.245193] cp/742 is trying to acquire lock:
    [    1.245193]  (&sb->s_type->i_mutex_key#9){+.+.+.}, at: [<ffffffff812b3f69>] ubifs_init_security+0x29/0xb0
    [    1.245193]
    [    1.245193] but task is already holding lock:
    [    1.245193]  (&sb->s_type->i_mutex_key#9){+.+.+.}, at: [<ffffffff81198e7f>] path_openat+0x3af/0x1280
    [    1.245193]
    [    1.245193] other info that might help us debug this:
    [    1.245193]  Possible unsafe locking scenario:
    [    1.245193]
    [    1.245193]        CPU0
    [    1.245193]        ----
    [    1.245193]   lock(&sb->s_type->i_mutex_key#9);
    [    1.245193]   lock(&sb->s_type->i_mutex_key#9);
    [    1.245193]
    [    1.245193]  *** DEADLOCK ***
    [    1.245193]
    [    1.245193]  May be due to missing lock nesting notation
    [    1.245193]
    [    1.245193] 2 locks held by cp/742:
    [    1.245193]  #0:  (sb_writers#5){.+.+.+}, at: [<ffffffff811ad37f>] mnt_want_write+0x1f/0x50
    [    1.245193]  #1:  (&sb->s_type->i_mutex_key#9){+.+.+.}, at: [<ffffffff81198e7f>] path_openat+0x3af/0x1280
    [    1.245193]
    [    1.245193] stack backtrace:
    [    1.245193] CPU: 2 PID: 742 Comm: cp Not tainted 4.2.0-rc1+ #37
    [    1.245193] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140816_022509-build35 04/01/2014
    [    1.245193]  ffffffff8252d530 ffff88007b023a38 ffffffff814f6f49 ffffffff810b56c5
    [    1.245193]  ffff88007c30cc80 ffff88007b023af8 ffffffff810a150d ffff88007b023a68
    [    1.245193]  000000008101302a ffff880000000000 00000008f447e23f ffffffff8252d500
    [    1.245193] Call Trace:
    [    1.245193]  [<ffffffff814f6f49>] dump_stack+0x4c/0x65
    [    1.245193]  [<ffffffff810b56c5>] ? console_unlock+0x1c5/0x510
    [    1.245193]  [<ffffffff810a150d>] __lock_acquire+0x1a6d/0x1ea0
    [    1.245193]  [<ffffffff8109fa78>] ? __lock_is_held+0x58/0x80
    [    1.245193]  [<ffffffff810a1a93>] lock_acquire+0xd3/0x270
    [    1.245193]  [<ffffffff812b3f69>] ? ubifs_init_security+0x29/0xb0
    [    1.245193]  [<ffffffff814fc83b>] mutex_lock_nested+0x6b/0x3a0
    [    1.245193]  [<ffffffff812b3f69>] ? ubifs_init_security+0x29/0xb0
    [    1.245193]  [<ffffffff812b3f69>] ? ubifs_init_security+0x29/0xb0
    [    1.245193]  [<ffffffff812b3f69>] ubifs_init_security+0x29/0xb0
    [    1.245193]  [<ffffffff8128e286>] ubifs_create+0xa6/0x1f0
    [    1.245193]  [<ffffffff81198e7f>] ? path_openat+0x3af/0x1280
    [    1.245193]  [<ffffffff81195d15>] vfs_create+0x95/0xc0
    [    1.245193]  [<ffffffff8119929c>] path_openat+0x7cc/0x1280
    [    1.245193]  [<ffffffff8109ffe3>] ? __lock_acquire+0x543/0x1ea0
    [    1.245193]  [<ffffffff81088f20>] ? sched_clock_cpu+0x90/0xc0
    [    1.245193]  [<ffffffff81088c00>] ? calc_global_load_tick+0x60/0x90
    [    1.245193]  [<ffffffff81088f20>] ? sched_clock_cpu+0x90/0xc0
    [    1.245193]  [<ffffffff811a9cef>] ? __alloc_fd+0xaf/0x180
    [    1.245193]  [<ffffffff8119ac55>] do_filp_open+0x75/0xd0
    [    1.245193]  [<ffffffff814ffd86>] ? _raw_spin_unlock+0x26/0x40
    [    1.245193]  [<ffffffff811a9cef>] ? __alloc_fd+0xaf/0x180
    [    1.245193]  [<ffffffff81189bd9>] do_sys_open+0x129/0x200
    [    1.245193]  [<ffffffff81189cc9>] SyS_open+0x19/0x20
    [    1.245193]  [<ffffffff81500717>] entry_SYSCALL_64_fastpath+0x12/0x6f
    
    While the lockdep splat is a false positive, becuase path_openat holds i_mutex
    of the parent directory and ubifs_init_security() tries to acquire i_mutex
    of a new inode, it reveals that taking i_mutex in ubifs_init_security() is
    in vain because it is only being called in the inode allocation path
    and therefore nobody else can see the inode yet.
    
    Reported-and-tested-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reviewed-and-tested-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: dedekind1@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3a1196bfc462943694623412d8e03aaf172bdc1
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Aug 13 15:44:51 2015 -0700

    inet: fix potential deadlock in reqsk_queue_unlink()
    
    commit 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af upstream.
    
    When replacing del_timer() with del_timer_sync(), I introduced
    a deadlock condition :
    
    reqsk_queue_unlink() is called from inet_csk_reqsk_queue_drop()
    
    inet_csk_reqsk_queue_drop() can be called from many contexts,
    one being the timer handler itself (reqsk_timer_handler()).
    
    In this case, del_timer_sync() loops forever.
    
    Simple fix is to test if timer is pending.
    
    Fixes: 2235f2ac75fd ("inet: fix races with reqsk timers")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Holger Hoffstätte <holger.hoffstaette@googlemail.com>
    Cc: Andre Tomt <andre@tomt.net>
    Cc: Chris Caputo <ccaputo@alt.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a58897f9e663bb9b64b703f7dd451c7089cb28bb
Author: Christian Engelmayer <cengelma@gmx.at>
Date:   Fri Aug 21 23:14:26 2015 +0200

    rsi: Fix possible leak when loading firmware
    
    commit a8b9774571d46506a0774b1ced3493b1245cf893 upstream.
    
    Commit 5d5cd85ff441 ("rsi: Fix failure to load firmware after memory
    leak fix and fix the leak") also added a check on the allocation of
    DMA-accessible memory that may directly return. In that case the
    already allocated firmware data is leaked. Make sure the data is
    always freed correctly. Detected by Coverity CID 1316519.
    
    Fixes: 5d5cd85ff441 ("rsi: Fix failure to load firmware after memory leak fix and fix the leak")
    Signed-off-by: Christian Engelmayer <cengelma@gmx.at>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6b5ff2bbb2f2b10860efaa052783eeaa3cd257d
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Thu Sep 10 14:36:21 2015 +1000

    powerpc/MSI: Fix race condition in tearing down MSI interrupts
    
    commit e297c939b745e420ef0b9dc989cb87bda617b399 upstream.
    
    This fixes a race which can result in the same virtual IRQ number
    being assigned to two different MSI interrupts.  The most visible
    consequence of that is usually a warning and stack trace from the
    sysfs code about an attempt to create a duplicate entry in sysfs.
    
    The race happens when one CPU (say CPU 0) is disposing of an MSI
    while another CPU (say CPU 1) is setting up an MSI.  CPU 0 calls
    (for example) pnv_teardown_msi_irqs(), which calls
    msi_bitmap_free_hwirqs() to indicate that the MSI (i.e. its
    hardware IRQ number) is no longer in use.  Then, before CPU 0 gets
    to calling irq_dispose_mapping() to free up the virtal IRQ number,
    CPU 1 comes in and calls msi_bitmap_alloc_hwirqs() to allocate an
    MSI, and gets the same hardware IRQ number that CPU 0 just freed.
    CPU 1 then calls irq_create_mapping() to get a virtual IRQ number,
    which sees that there is currently a mapping for that hardware IRQ
    number and returns the corresponding virtual IRQ number (which is
    the same virtual IRQ number that CPU 0 was using).  CPU 0 then
    calls irq_dispose_mapping() and frees that virtual IRQ number.
    Now, if another CPU comes along and calls irq_create_mapping(), it
    is likely to get the virtual IRQ number that was just freed,
    resulting in the same virtual IRQ number apparently being used for
    two different hardware interrupts.
    
    To fix this race, we just move the call to msi_bitmap_free_hwirqs()
    to after the call to irq_dispose_mapping().  Since virq_to_hw()
    doesn't work for the virtual IRQ number after irq_dispose_mapping()
    has been called, we need to call it before irq_dispose_mapping() and
    remember the result for the msi_bitmap_free_hwirqs() call.
    
    The pattern of calling msi_bitmap_free_hwirqs() before
    irq_dispose_mapping() appears in 5 places under arch/powerpc, and
    appears to have originated in commit 05af7bd2d75e ("[POWERPC] MPIC
    U3/U4 MSI backend") from 2007.
    
    Fixes: 05af7bd2d75e ("[POWERPC] MPIC U3/U4 MSI backend")
    Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: Paul Mackerras <paulus@samba.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41f3fa173272bdc28e47f9e4004c62eb27a9474a
Author: Kapileshwar Singh <kapileshwar.singh@arm.com>
Date:   Tue Sep 22 14:22:03 2015 +0100

    tools lib traceevent: Fix string handling in heterogeneous arch environments
    
    commit c2e4b24ff848bb180f9b9cd873a38327cd219ad2 upstream.
    
    When a trace recorded on a 32-bit device is processed with a 64-bit
    binary, the higher 32-bits of the address need to ignored.
    
    The lack of this results in the output of the 64-bit pointer
    value to the trace as the 32-bit address lookup fails in find_printk().
    
    Before:
    
      burn-1778  [003]   548.600305: bputs:   0xc0046db2s: 2cec5c058d98c
    
    After:
    
      burn-1778  [003]   548.600305: bputs:   0xc0046db2s: RT throttling activated
    
    The problem occurs in PRINT_FIELD when the field is recognized as a
    pointer to a string (of the type const char *)
    
    Heterogeneous architectures cases below can arise and should be handled:
    
    * Traces recorded using 32-bit addresses processed on a 64-bit machine
    * Traces recorded using 64-bit addresses processed on a 32-bit machine
    
    Reported-by: Juri Lelli <juri.lelli@arm.com>
    Signed-off-by: Kapileshwar Singh <kapileshwar.singh@arm.com>
    Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Javi Merino <javi.merino@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: http://lkml.kernel.org/r/1442928123-13824-1-git-send-email-kapileshwar.singh@arm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42719676db08e05831407b4f0990cd98bd3ddc7b
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Tue Jun 30 23:45:26 2015 +0200

    batman-adv: Fix potentially broken skb network header access
    
    commit 53cf037bf846417fd92dc92ddf97267f69b110f4 upstream.
    
    The two commits noted below added calls to ip_hdr() and ipv6_hdr(). They
    need a correctly set skb network header.
    
    Unfortunately we cannot rely on the device drivers to set it for us.
    Therefore setting it in the beginning of the according ndo_start_xmit
    handler.
    
    Fixes: 1d8ab8d3c176 ("batman-adv: Modified forwarding behaviour for multicast packets")
    Fixes: ab49886e3da7 ("batman-adv: Add IPv4 link-local/IPv6-ll-all-nodes multicast support")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e6263c022b2c377bf883c99e278eb8bbe207325
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Tue Jun 16 17:10:26 2015 +0200

    batman-adv: Fix potential synchronization issues in mcast tvlv handler
    
    commit 8a4023c5b5e30b11f1f383186f4a7222b3b823cf upstream.
    
    So far the mcast tvlv handler did not anticipate the processing of
    multiple incoming OGMs from the same originator at the same time. This
    can lead to various issues:
    
    * Broken refcounting: For instance two mcast handlers might both assume
      that an originator just got multicast capabilities and will together
      wrongly decrease mcast.num_disabled by two, potentially leading to
      an integer underflow.
    
    * Potential kernel panic on hlist_del_rcu(): Two mcast handlers might
      one after another try to do an
      hlist_del_rcu(&orig->mcast_want_all_*_node). The second one will
      cause memory corruption / crashes.
      (Reported by: Sven Eckelmann <sven@narfation.org>)
    
    Right in the beginning the code path makes assumptions about the current
    multicast related state of an originator and bases all updates on that. The
    easiest and least error prune way to fix the issues in this case is to
    serialize multiple mcast handler invocations with a spinlock.
    
    Fixes: 60432d756cf0 ("batman-adv: Announce new capability via multicast TVLV")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dbeac75e6c679b87a6b50f0fc05c31cec1ed58c
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Tue Jun 16 17:10:25 2015 +0200

    batman-adv: Make MCAST capability changes atomic
    
    commit 9c936e3f4c4fad07abb6c082a89508b8f724c88f upstream.
    
    Bitwise OR/AND assignments in C aren't guaranteed to be atomic. One
    OGM handler might undo the set/clear of a specific bit from another
    handler run in between.
    
    Fix this by using the atomic set_bit()/clear_bit()/test_bit() functions.
    
    Fixes: 60432d756cf0 ("batman-adv: Announce new capability via multicast TVLV")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3dd853ed30efc82a19f3a1b5a05760d5803601e5
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Tue Jun 16 17:10:24 2015 +0200

    batman-adv: Make TT capability changes atomic
    
    commit ac4eebd48461ec993e7cb614d5afe7df8c72e6b7 upstream.
    
    Bitwise OR/AND assignments in C aren't guaranteed to be atomic. One
    OGM handler might undo the set/clear of a specific bit from another
    handler run in between.
    
    Fix this by using the atomic set_bit()/clear_bit()/test_bit() functions.
    
    Fixes: e17931d1a61d ("batman-adv: introduce capability initialization bitfield")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 505f068df9dd37bfa86114f746bacedc2b32437a
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Tue Jun 16 17:10:23 2015 +0200

    batman-adv: Make NC capability changes atomic
    
    commit 4635469f5c617282f18c69643af36cd8c0acf707 upstream.
    
    Bitwise OR/AND assignments in C aren't guaranteed to be atomic. One
    OGM handler might undo the set/clear of a specific bit from another
    handler run in between.
    
    Fix this by using the atomic set_bit()/clear_bit()/test_bit() functions.
    
    Fixes: 3f4841ffb336 ("batman-adv: tvlv - add network coding container")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88108b384f4817c9f935ad0932e2fce80d790a2e
Author: James Hogan <james.hogan@imgtec.com>
Date:   Fri Mar 27 08:33:43 2015 +0000

    MIPS: dma-default: Fix 32-bit fall back to GFP_DMA
    
    commit 53960059d56ecef67d4ddd546731623641a3d2d1 upstream.
    
    If there is a DMA zone (usually 24bit = 16MB I believe), but no DMA32
    zone, as is the case for some 32-bit kernels, then massage_gfp_flags()
    will cause DMA memory allocated for devices with a 32..63-bit
    coherent_dma_mask to fall back to using __GFP_DMA, even though there may
    only be 32-bits of physical address available anyway.
    
    Correct that case to compare against a mask the size of phys_addr_t
    instead of always using a 64-bit mask.
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Fixes: a2e715a86c6d ("MIPS: DMA: Fix computation of DMA flags from device's coherent_dma_mask.")
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/9610/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9885de37b322fe2b5fde15db6a080b6bde59fa74
Author: Viresh Kumar <viresh.kumar@linaro.org>
Date:   Wed Sep 2 14:36:50 2015 +0530

    cpufreq: dt: Tolerance applies on both sides of target voltage
    
    commit a2022001cebd0825b96aa0f3345ea3ad44ae79d4 upstream.
    
    Tolerance applies on both sides of the target voltage, i.e. both min and
    max sides. But while checking if a voltage is supported by the regulator
    or not, we haven't taken care of tolerance on the lower side. Fix that.
    
    Cc: Lucas Stach <l.stach@pengutronix.de>
    Fixes: 045ee45c4ff2 ("cpufreq: cpufreq-dt: disable unsupported OPPs")
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a84668027d9936f8f8bd0eb6d0c07964ef2ade0
Author: Borislav Petkov <bp@suse.de>
Date:   Sat Aug 8 10:46:02 2015 +0200

    cpu/cacheinfo: Fix teardown path
    
    commit 2110d70c5e58326a10e93cfefdc0b3686e2ada12 upstream.
    
    Philip Müller reported a hang when booting 32-bit 4.1 kernel on an AMD
    box. A fragment of the splat was enough to pinpoint the issue:
    
      task: f58e0000 ti: f58e8000 task.ti: f58e800
      EIP: 0060:[<c135a903>] EFLAGS: 00010206 CPU: 0
      EIP is at free_cache_attributes+0x83/0xd0
      EAX: 00000001 EBX: f589d46c ECX: 00000090 EDX: 360c2000
      ESI: 00000000 EDI: c1724a80 EBP: f58e9ec0 ESP: f58e9ea0
       DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
      CR0: 8005003b CR2: 000000ac CR3: 01731000 CR4: 000006d0
    
    cache_shared_cpu_map_setup() did check sibling CPUs cacheinfo descriptor
    while the respective teardown path cache_shared_cpu_map_remove() didn't.
    Fix that.
    
    >From tglx's version: to be on the safe side, move the cacheinfo
    descriptor check to free_cache_attributes(), thus cleaning up the
    hotplug path a little and making this even more robust.
    
    Reported-and-tested-by: Philip Müller <philm@manjaro.org>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Sudeep Holla <sudeep.holla@arm.com>
    Cc: Andre Przywara <andre.przywara@arm.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: linux-kernel@vger.kernel.org
    Cc: manjaro-dev@manjaro.org
    Cc: Philip Müller <philm@manjaro.org>
    Link: https://lkml.kernel.org/r/55B47BB8.6080202@manjaro.org
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 408bfba9544679db7a3c6a4268d4e668e35e5f0e
Author: Yao-Wen Mao <yaowen@google.com>
Date:   Mon Aug 31 14:24:09 2015 +0800

    USB: Add reset-resume quirk for two Plantronics usb headphones.
    
    commit 8484bf2981b3d006426ac052a3642c9ce1d8d980 upstream.
    
    These two headphones need a reset-resume quirk to properly resume to
    original volume level.
    
    Signed-off-by: Yao-Wen Mao <yaowen@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 866713d4ed8be3ced20229f31ce1ac9d4d96a7e9
Author: Vincent Palatin <vpalatin@chromium.org>
Date:   Thu Oct 1 14:10:22 2015 -0700

    usb: Add device quirk for Logitech PTZ cameras
    
    commit 72194739f54607bbf8cfded159627a2015381557 upstream.
    
    Add a device quirk for the Logitech PTZ Pro Camera and its sibling the
    ConferenceCam CC3000e Camera.
    This fixes the failed camera enumeration on some boot, particularly on
    machines with fast CPU.
    
    Tested by connecting a Logitech PTZ Pro Camera to a machine with a
    Haswell Core i7-4600U CPU @ 2.10GHz, and doing thousands of reboot cycles
    while recording the kernel logs and taking camera picture after each boot.
    Before the patch, more than 7% of the boots show some enumeration transfer
    failures and in a few of them, the kernel is giving up before actually
    enumerating the webcam. After the patch, the enumeration has been correct
    on every reboot.
    
    Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c381d2d524c82bee6c25f277faa2f341c98dbd1
Author: Alexander Inyukhin <shurick@sectorb.msk.ru>
Date:   Sat Sep 26 15:24:21 2015 +0300

    USB: chaoskey read offset bug
    
    commit 1d5c47f555c5ae050fad22e4a99f88856cae5d05 upstream.
    
    Rng reads in chaoskey driver could return the same data under
    the certain conditions.
    
    Signed-off-by: Alexander Inyukhin <shurick@sectorb.msk.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cd1e73994526a6647e16b631ba76bbb4944660c
Author: Felipe Balbi <balbi@ti.com>
Date:   Thu Aug 6 10:51:29 2015 -0500

    usb: musb: cppi41: allow it to work again
    
    commit b0a688ddcc5015eb26000c63841db7c46cfb380a upstream.
    
    since commit 33c300cb90a6 ("usb: musb: dsps:
    don't fake of_node to musb core") we have been
    preventing CPPI 4.1 from probing due to NULL
    of_node. We can't revert said commit otherwise
    a different regression would show up, so the fix
    is to look for the parent device's (glue layer's)
    of_node instead, since that's the thing which
    is actually described in DTS.
    
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 860964cd6311e32b217a180c262c938d366a28b4
Author: Roger Quadros <rogerq@ti.com>
Date:   Thu Aug 13 13:28:42 2015 +0300

    usb: phy: phy-generic: Fix reset behaviour on legacy boot
    
    commit 762982db33b23029e98c844611e2e8beeb75bc0d upstream.
    
    The gpio-desc migration done in v4.0 caused a regression
    with legacy boots due to reversed reset logic.
    e.g. omap3-beagle USB host breaks on legacy boot.
    
    Request the reset GPIO with GPIOF_ACTIVE_LOW flag so that
    it matches the driver logic and pin behaviour.
    
    Fixes: e9f2cefb0cdc ("usb: phy: generic: migrate to gpio_desc")
    Tested-by: Fabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 74830c233c3c2dc4b034399f3d4d029e35db9a11
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Sep 21 17:46:09 2015 +0300

    usb: Use the USB_SS_MULT() macro to get the burst multiplier.
    
    commit ff30cbc8da425754e8ab96904db1d295bd034f27 upstream.
    
    Bits 1:0 of the bmAttributes are used for the burst multiplier.
    The rest of the bits used to be reserved (zero), but USB3.1 takes bit 7
    into use.
    
    Use the existing USB_SS_MULT() macro instead to make sure the mult value
    and hence max packet calculations are correct for USB3.1 devices.
    
    Note that burst multiplier in bmAttributes is zero based and that
    the USB_SS_MULT() macro adds one.
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e1f01e6c0e99241b3b03e71385d0f4dfb9180ab
Author: Peter Chen <peter.chen@freescale.com>
Date:   Mon Aug 24 14:10:07 2015 +0800

    usb: chipidea: udc: using the correct stall implementation
    
    commit 56ffa1d154c7e12af16273f0cdc42690dd05caf5 upstream.
    
    According to spec, there are functional and protocol stalls.
    
    For functional stall, it is for bulk and interrupt endpoints,
    below are cases for it:
    - Host sends SET_FEATURE request for Set-Halt, the udc driver
    needs to set stall, and return true unconditionally.
    - The gadget driver may call usb_ep_set_halt to stall certain
    endpoints, if there is a transfer in pending, the udc driver
    should not set stall, and return -EAGAIN accordingly.
    These two kinds of stall need to be cleared by host using CLEAR_FEATURE
    request (Clear-Halt).
    
    For protocol stall, it is for control endpoint, this stall will
    be set if the control request has failed. This stall will be
    cleared by next setup request (hardware will do it).
    
    It fixed usbtest (drivers/usb/misc/usbtest.c) Test 13 "set/clear halt"
    test failure, meanwhile, this change has been verified by
    USB2 CV Compliance Test and MSC Tests.
    
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Peter Chen <peter.chen@freescale.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29a6161885e2fe7638e271a406521ba9ddd9e89c
Author: Bin Liu <b-liu@ti.com>
Date:   Wed Sep 16 14:49:28 2015 -0500

    usb: musb: dsps: fix polling in device-only mode
    
    commit b8239dcc03afbd0886c1d9b91ba8fee7c6c9a6cb upstream.
    
    Fix the regression caused by commit ad78c918602 ("usb: musb: dsps: just
    start polling already") which causes polling the ID pin status even in
    device-only mode.
    
    Fixes: ad78c918602c ("usb: musb: dsps: just start polling already")
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8ca14b73cf8b141c48d3ac47821b260b00d2462
Author: Jann Horn <jann@thejh.net>
Date:   Fri Sep 18 23:41:23 2015 +0200

    security: fix typo in security_task_prctl
    
    commit b7f76ea2ef6739ee484a165ffbac98deb855d3d3 upstream.
    
    Signed-off-by: Jann Horn <jann@thejh.net>
    Reviewed-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6340b49a7a0eade043c80a1c95842273e93eaa67
Author: Mark Brown <broonie@kernel.org>
Date:   Sat Sep 19 07:12:34 2015 -0700

    regmap: debugfs: Don't bother actually printing when calculating max length
    
    commit 176fc2d5770a0990eebff903ba680d2edd32e718 upstream.
    
    The in kernel snprintf() will conveniently return the actual length of
    the printed string even if not given an output beffer at all so just do
    that rather than relying on the user to pass in a suitable buffer,
    ensuring that we don't need to worry if the buffer was truncated due to
    the size of the buffer passed in.
    
    Reported-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86d7065eada688b6b8d2687cbc045ef88c43973f
Author: Mark Brown <broonie@kernel.org>
Date:   Sat Sep 19 07:00:18 2015 -0700

    regmap: debugfs: Ensure we don't underflow when printing access masks
    
    commit b763ec17ac762470eec5be8ebcc43e4f8b2c2b82 upstream.
    
    If a read is attempted which is smaller than the line length then we may
    underflow the subtraction we're doing with the unsigned size_t type so
    move some of the calculation to be additions on the right hand side
    instead in order to avoid this.
    
    Reported-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd0264a0f8e61cc2ee55600d7878eb65566bb82a
Author: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
Date:   Wed Aug 19 11:47:06 2015 -0300

    ipr: Enable SIS pipe commands for SIS-32 devices.
    
    commit e35d7f27fbd51a09a41a5439e39f22a3d102c00b upstream.
    
    Remove unnecessary check that disabled SIS pipe commands for SIS-32
    devices.  This change was sufficient to enable raw mode and send SIS
    pipe commands for a 57B3 device.
    
    Fixes: f8ee25d7d239 ("ipr: AF DASD raw mode implementation in ipr driver")
    Signed-off-by: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
    Reviewed-by: Wen Xiong <wenxiong@linux.vnet.ibm.com>
    Acked-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71cb8ae2808b3f738d01a634f0ac7e18bbb0b0d6
Author: Russell King <rmk+kernel@arm.linux.org.uk>
Date:   Thu Mar 26 10:22:20 2015 +0000

    pcmcia: sa11x0: fix missing clk_put() in sa11x0 socket drivers
    
    commit 72010aca55264cfe6516a955066c846d3885b0c6 upstream.
    
    Fix the lack of clk_put() in sa11xx_base.c's error cleanup paths by
    converting the driver to the devm_* API.
    
    Fixes: 86d88bfca475 ("ARM: 8247/2: pcmcia: sa1100: make use of device clock")
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b25c5418235ec7d7389eb8ca157758639e5db328
Author: Michal Kazior <michal.kazior@tieto.com>
Date:   Mon Aug 3 11:16:43 2015 +0200

    ath10k: reject 11b tx fragmentation configuration
    
    commit 92092fe528e79c9bd25784ca0ef341d5a1d1b642 upstream.
    
    Even though there's a WMI enum for fragmentation
    threshold no known firmware actually implements
    it. Moreover it is not possible to rely frame
    fragmentation to mac80211 because firmware clears
    the "more fragments" bit in frame control making
    it impossible for remote devices to reassemble
    frames.
    
    Hence implement a dummy callback just to say
    fragmentation isn't supported. This effectively
    prevents mac80211 from doing frame fragmentation
    in software.
    
    This fixes Tx becoming broken after setting
    fragmentation threshold.
    
    Fixes: 1010ba4c5d1c ("ath10k: unregister and remove frag_threshold callback")
    Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bff1c3b39ae30ec13d10a581655ec07af5c76608
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Aug 5 16:51:11 2015 +0300

    device property: fix potential NULL pointer dereference
    
    commit ecc87eed7beeb50c0be0b73322d62135277ea2b0 upstream.
    
    In device_add_property_set() we check pset parameter for a NULL, but few lines
    later we do a pointer arithmetic without check that will crash kernel in the
    set_secondary_fwnode().
    
    Here we check if pset parameter is NULL and return immediately.
    
    Fixes: 16ba08d5c9ec (device property: Introduce firmware node type for platform data)
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 453995c8b13b02acc4e82c718c13c98373167655
Author: Heiko Stuebner <heiko@sntech.de>
Date:   Tue Aug 4 21:36:12 2015 +0200

    PM / AVS: rockchip-io: depend on CONFIG_POWER_AVS
    
    commit 28c1f1628ee4b163e615eefe1b6463e3d229a873 upstream.
    
    The rockchip io-domain driver currently only depends on ARCH_ROCKCHIP
    itself. This makes it possible to select the power-domain driver, but
    not the POWER_AVS class and results in the iodomain-driver not getting
    build in this case.
    
    So add the additional dependency, which also results in the driver
    config option now being placed nicely into the AVS submenu.
    
    Fixes: 662a958638bd ("PM / AVS: rockchip-io: add driver handling Rockchip io domains")
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Acked-by: Kevin Hilman <khilman@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a693d9cb531a2d869d767796f1f3934bb951d78
Author: Boris BREZILLON <boris.brezillon@free-electrons.com>
Date:   Mon Sep 14 10:41:03 2015 +0200

    mtd: nand: sunxi: fix OOB handling in ->write_xxx() functions
    
    commit 03a0e8a7c5ea29b5c4e72dfd64900b47a8fb6f2d upstream.
    
    The USER_DATA register cannot be accessed using byte accessors on A13
    SoCs, thus triggering a bug when using memcpy_toio on this register.
    Declare an helper macros to convert an OOB buffer into a suitable
    USER_DATA value and vice-versa.
    
    This patch also fixes an error in the oob_required logic (some OOB data
    are not written even if the user required it) by removing the
    oob_required condition, which is perfectly valid since the core already
    fill ->oob_poi with FFs when oob_required is false.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Fixes: 1fef62c1423b ("mtd: nand: add sunxi NAND flash controller support")
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43c20144a4b4bd84d49bc1f5819481db9c000b34
Author: Boris BREZILLON <boris.brezillon@free-electrons.com>
Date:   Sun Sep 13 18:14:43 2015 +0200

    mtd: nand: sunxi: fix sunxi_nand_chips_cleanup()
    
    commit 8e375ccda31ccc73b087134e263c48d2114534f4 upstream.
    
    The sunxi_nand_chips_cleanup() function is missing a call to list_del()
    which generates a double free error.
    
    Reported-by: Priit Laes <plaes@plaes.org>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Fixes: 1fef62c1423b ("mtd: nand: add sunxi NAND flash controller support")
    Tested-by: Priit Laes <plaes@plaes.org>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f58388f5997f960598a1a899313c9cb970d50dd
Author: Antoine Ténart <antoine.tenart@free-electrons.com>
Date:   Tue Aug 18 10:59:10 2015 +0200

    mtd: pxa3xx_nand: add a default chunk size
    
    commit bc3e00f04cc1fe033a289c2fc2e5c73c0168d360 upstream.
    
    When keeping the configuration set by the bootloader (by using
    the marvell,nand-keep-config property), the pxa3xx_nand_detect_config()
    function is called and set the chunk size to 512 as a default value if
    NDCR_PAGE_SZ is not set.
    
    In the other case, when not keeping the bootloader configuration, no
    chunk size is set. Fix this by adding a default chunk size of 512.
    
    Fixes: 70ed85232a93 ("mtd: nand: pxa3xx: Introduce multiple page I/O
    support")
    
    Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
    Acked-by: Robert Jarzmik <robert.jarzmik@free>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61e7a13ec7bc432a42b283df4b02ff83f163e6e9
Author: Mario Carrillo <mario.alfredo.c.arevalo@intel.com>
Date:   Mon Aug 24 09:33:09 2015 -0500

    docs: update HOWTO for 3.x -> 4.x versioning
    
    commit e4144fe5d47c91c92d36cdbd5f31ed8d6e3a57ab upstream.
    
    The HOWTO document needed updating for the new kernel versioning.
    
    Signed-off-by: Mario Carrillo <mario.alfredo.c.arevalo@intel.com>
    Signed-off-by: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28f9166c7e4045bfeeaa188695e2c3f77dc5d773
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Sun Sep 13 12:14:32 2015 +0100

    irqchip/gic-v3-its: Add missing cache flushes
    
    commit 5a9a8915c8888b615521b17d70a4342187eae60b upstream.
    
    When the ITS is configured for non-cacheable transactions, make sure
    that the allocated, zeroed memory is flushed to the Point of
    Coherency, allowing the ITS to observe the zeros instead of random
    garbage (or even get its own data overwritten by zeros being evicted
    from the cache...).
    
    Fixes: 241a386c7dbb "irqchip: gicv3-its: Use non-cacheable accesses when no shareability"
    Reported-and-tested-by: Stuart Yoder <stuart.yoder@freescale.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Pavel Fedin <p.fedin@samsung.com>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Link: http://lkml.kernel.org/r/1442142873-20213-3-git-send-email-marc.zyngier@arm.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba8d3bb3dea5ca82cce82939535c4a65161dc8be
Author: Ludovic Desroches <ludovic.desroches@atmel.com>
Date:   Mon Sep 21 15:46:04 2015 +0200

    irqchip/atmel-aic5: Use per chip mask caches in mask/unmask()
    
    commit d32dc9aa10c739363c775baf4499416b2e0dc11f upstream.
    
    When masking/unmasking interrupts, mask_cache is updated and used later
    for suspend/resume. Unfortunately, it always was the mask_cache
    associated with the first irq chip which was updated. So when performing
    resume, only irqs 0-31 could be enabled.
    
    Fixes: b1479ebb7720 ("irqchip: atmel-aic: Add atmel AIC/AIC5 drivers")
    Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
    Cc: <sasha.levin@oracle.com>
    Cc: <linux-arm-kernel@lists.infradead.org>
    Cc: <nicolas.ferre@atmel.com>
    Cc: <alexandre.belloni@free-electrons.com>
    Cc: <boris.brezillon@free-electrons.com>
    Cc: <Wenyou.Yang@atmel.com>
    Cc: <jason@lakedaemon.net>
    Cc: <marc.zyngier@arm.com>
    Link: http://lkml.kernel.org/r/1442843173-2390-1-git-send-email-ludovic.desroches@atmel.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22ee53c3bdb8ab208056cf306fc60527f883b494
Author: Peter Seiderer <ps.report@gmx.net>
Date:   Thu Sep 17 21:40:12 2015 +0200

    cifs: use server timestamp for ntlmv2 authentication
    
    commit 98ce94c8df762d413b3ecb849e2b966b21606d04 upstream.
    
    Linux cifs mount with ntlmssp against an Mac OS X (Yosemite
    10.10.5) share fails in case the clocks differ more than +/-2h:
    
    digest-service: digest-request: od failed with 2 proto=ntlmv2
    digest-service: digest-request: kdc failed with -1561745592 proto=ntlmv2
    
    Fix this by (re-)using the given server timestamp for the
    ntlmv2 authentication (as Windows 7 does).
    
    A related problem was also reported earlier by Namjae Jaen (see below):
    
    Windows machine has extended security feature which refuse to allow
    authentication when there is time difference between server time and
    client time when ntlmv2 negotiation is used. This problem is prevalent
    in embedded enviornment where system time is set to default 1970.
    
    Modern servers send the server timestamp in the TargetInfo Av_Pair
    structure in the challenge message [see MS-NLMP 2.2.2.1]
    In [MS-NLMP 3.1.5.1.2] it is explicitly mentioned that the client must
    use the server provided timestamp if present OR current time if it is
    not
    
    Reported-by: Namjae Jeon <namjae.jeon@samsung.com>
    Signed-off-by: Peter Seiderer <ps.report@gmx.net>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76ff51ce2e55873e479c550127e405442fa09a7e
Author: Li Jun <jun.li@freescale.com>
Date:   Wed Sep 16 14:46:32 2015 +0800

    usb: chipidea: imx: fix a typo for imx6sx
    
    commit 8315b77d72c5f0b18ceb513303d845e73166133c upstream.
    
    Use imx6sx instead of imx6sl's platform flags for imx6sx.
    
    Fixes: e14db48dfcf3 ("usb: chipidea: imx: add runtime power management support")
    Signed-off-by: Li Jun <jun.li@freescale.com>
    Signed-off-by: Peter Chen <peter.chen@freescale.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c65e22e91c6adcb8bdf2e3097c2f4cffa3f3102
Author: Dong Aisheng <aisheng.dong@freescale.com>
Date:   Wed Jul 22 20:53:03 2015 +0800

    dts: imx25: fix sd card gpio polarity specified in device tree
    
    commit cf75eb15be2bdd054a76aeef6458beaa4a6ab770 upstream.
    
    cd-gpios polarity should be changed to GPIO_ACTIVE_LOW and wp-gpios
    should be changed to GPIO_ACTIVE_HIGH.
    Otherwise, the SD may not work properly due to wrong polarity inversion
    specified in DT after switch to common parsing function mmc_of_parse().
    
    Signed-off-by: Dong Aisheng <aisheng.dong@freescale.com>
    Acked-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 958847c5ed05cc1feb4b6202db98c893aed8c678
Author: Dong Aisheng <aisheng.dong@freescale.com>
Date:   Wed Jul 22 20:53:01 2015 +0800

    dts: imx53: fix sd card gpio polarity specified in device tree
    
    commit 94d76946859b4bcfa0da373357f14feda2af0622 upstream.
    
    cd-gpios polarity should be changed to GPIO_ACTIVE_LOW and wp-gpios
    should be changed to GPIO_ACTIVE_HIGH.
    Otherwise, the SD may not work properly due to wrong polarity inversion
    specified in DT after switch to common parsing function mmc_of_parse().
    
    Signed-off-by: Dong Aisheng <aisheng.dong@freescale.com>
    Acked-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67833edcfc736cc89a374959433ffb7fb36bb536
Author: Dong Aisheng <aisheng.dong@freescale.com>
Date:   Wed Jul 22 20:53:00 2015 +0800

    dts: imx51: fix sd card gpio polarity specified in device tree
    
    commit aca45c0e95dad1c4ba4d38da192756b0e10cbbbd upstream.
    
    cd-gpios polarity should be changed to GPIO_ACTIVE_LOW and wp-gpios
    should be changed to GPIO_ACTIVE_HIGH.
    Otherwise, the SD may not work properly due to wrong polarity inversion
    specified in DT after switch to common parsing function mmc_of_parse().
    
    Signed-off-by: Dong Aisheng <aisheng.dong@freescale.com>
    Acked-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5a8210d4b9e5fb39f187409addfe7b00dc1bbb9
Author: Dong Aisheng <aisheng.dong@freescale.com>
Date:   Wed Jul 22 20:53:05 2015 +0800

    mmc: sdhci-esdhc-imx: fix cd regression for dt platform
    
    commit 4800e87a2ee886c1972deb73f057d1a6541edb36 upstream.
    
    Current card detect probe process is that when driver finds a valid
    ESDHC_CD_GPIO, it will clear the quirk SDHCI_QUIRK_BROKEN_CARD_DETECTION
    which is set by default for all esdhc/usdhc controllers.
    Then host driver will know there's a valid card detect function.
    
    Commit 8d86e4fcccf6 ("mmc: sdhci-esdhc-imx: Call mmc_of_parse()")
    breaks GPIO CD function for dt platform that it will return directly
    when find ESDHC_CD_GPIO for dt platform which result in the later wrongly
    to keep SDHCI_QUIRK_BROKEN_CARD_DETECTION for all dt platforms.
    Then MMC_CAP_NEEDS_POLL will be used instead even there's a valid
    GPIO card detect.
    
    This patch adds back this function and follows the original approach to
    clear the quirk if find an valid CD GPIO for dt platforms.
    
    Fixes: 8d86e4fcccf6 ("mmc: sdhci-esdhc-imx: Call mmc_of_parse()")
    Signed-off-by: Dong Aisheng <aisheng.dong@freescale.com>
    Reviewed-by: Johan Derycke <johan.derycke@barco.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a2d8c9f46a31ace6a2bc66b3b367938a177af84
Author: Fabio Estevam <fabio.estevam@freescale.com>
Date:   Sat May 9 09:57:09 2015 -0300

    mmc: sdhci-esdhc-imx: Do not break platform data boards
    
    commit 7ccddeb08a632c713eca0a5f13bcbfa7e6e83982 upstream.
    
    The only user of this driver that has not been converted to fully
    device tree is the i.MX35 SoC.
    
    There is a i.MX35-based board (mach-pcm043.c) that uses platform data
    to pass wp_gpio and cd_gpio information.
    
    Commit 8d86e4fcccf61ba ("mmc: sdhci-esdhc-imx: Call mmc_of_parse()")
    broke the platform data case by removing mmc_gpio_request_ro() and
    mmc_gpio_request_cd(), so restore the functionality for the non-dt
    case.
    
    Also, restore the check for ESDHC_CD_CONTROLLER so that we can still
    support the "fsl,cd-controller" property.
    
    Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da81f3e68a13c4ab431119ed590b22e24e3e3469
Author: Fabio Estevam <fabio.estevam@freescale.com>
Date:   Sat May 9 09:57:08 2015 -0300

    mmc: sdhci-esdhc-imx: Move mmc_of_parse() to the dt probe
    
    commit 15064119273735c115fba381823b0746508bae3a upstream.
    
    mmc_of_parse() should be placed inside sdhci_esdhc_imx_probe_dt() as it
    suits only for the dt case.
    
    Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8468a2989dbef6e40cf3a56721b228f5e8ae436e
Author: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
Date:   Thu Jun 25 11:25:07 2015 +0300

    mmc: dw_mmc: handle data blocks > than 4kB if IDMAC is used
    
    commit 5959b32e3636f9bfe3f869d1e440bc4a4d660965 upstream.
    
    As per DW MobileStorage databook "each descriptor can transfer up to 4kB
    of data in chained mode", moreover buffer size that is put in "des1" is
    limited to 13 bits, i.e. for example on attempt to
    IDMAC_SET_BUFFER1_SIZE(desc, 8192) size value that's effectively written
    will be 0.
    
    On the platform with 8kB PAGE_SIZE I see dw_mmc gets data blocks in
    SG-list of 8kB size and that leads to unpredictable behavior of the
    SD/MMC controller.
    
    In particular on write to FAT partition of SD-card the controller will
    stuck in the middle of DMA transaction.
    
    Solution to the problem is simple - we need to pass large (> 4kB) data
    buffers to the controller via multiple descriptors. And that's what
    that change does.
    
    What's interesting I did try original driver on same platform but
    configured with 4kB PAGE_SIZE and may confirm that data blocks passed
    in SG-list to dw_mmc never exeed 4kB limit - that explains why nobody
    ever faced a problem I did.
    
    Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
    Cc: Seungwon Jeon <tgih.jun@samsung.com>
    Cc: Jaehoon Chung <jh80.chung@samsung.com>
    Cc: Ulf Hansson <ulf.hansson@linaro.org>
    Cc: arc-linux-dev@synopsys.com
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7abb2eeda8ce0ad0516d638e7bbeaacf745d4d75
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Tue Jun 16 17:10:22 2015 +0200

    batman-adv: Make DAT capability changes atomic
    
    commit 65d7d46050704bcdb8121ddbf4110bfbf2b38baa upstream.
    
    Bitwise OR/AND assignments in C aren't guaranteed to be atomic. One
    OGM handler might undo the set/clear of a specific bit from another
    handler run in between.
    
    Fix this by using the atomic set_bit()/clear_bit()/test_bit() functions.
    
    Fixes: 17cf0ea455f1 ("batman-adv: tvlv - add distributed arp table container")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 103c584bcde170c3035041d85e79a90eae177eaf
Author: Marek Lindner <mareklindner@neomailbox.ch>
Date:   Wed Jun 17 20:01:36 2015 +0800

    batman-adv: protect tt_local_entry from concurrent delete events
    
    commit ef72706a0543d0c3a5ab29bd6378fdfb368118d9 upstream.
    
    The tt_local_entry deletion performed in batadv_tt_local_remove() was neither
    protecting against simultaneous deletes nor checking whether the element was
    still part of the list before calling hlist_del_rcu().
    
    Replacing the hlist_del_rcu() call with batadv_hash_remove() provides adequate
    protection via hash spinlocks as well as an is-element-still-in-hash check to
    avoid 'blind' hash removal.
    
    Fixes: 068ee6e204e1 ("batman-adv: roaming handling mechanism redesign")
    Reported-by: alfonsname@web.de
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b046d646f1cbe1453b4ae63dc749e62f6e01c9c7
Author: Marek Lindner <mareklindner@neomailbox.ch>
Date:   Tue Jun 9 21:24:36 2015 +0800

    batman-adv: fix kernel crash due to missing NULL checks
    
    commit 354136bcc3c4f40a2813bba8f57ca5267d812d15 upstream.
    
    batadv_softif_vlan_get() may return NULL which has to be verified
    by the caller.
    
    Fixes: 35df3b298fc8 ("batman-adv: fix TT VLAN inconsistency on VLAN re-add")
    Reported-by: Ryan Thompson <ryan@eero.com>
    Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
    Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fc6fc1d5b9dc9c878b2b1c044e079b193e6cb92
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Tue Jul 28 15:31:12 2015 +0200

    fbdev: select versatile helpers for the integrator
    
    commit 2701fa0864ecb9e49d47a4aa1c02f172ab79639a upstream.
    
    Commit 11c32d7b6274cb0f554943d65bd4a126c4a86dcd
    "video: move Versatile CLCD helpers" missed the fact
    that the Integrator/CP is also using the helper, and
    as a result the platform got only stubs and no graphics.
    Add this as a default selection to Kconfig so we have
    graphics again.
    
    Fixes: 11c32d7b6274 (video: move Versatile CLCD helpers)
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5dadf3a1f95d56e117e0ac5b1be502bad398c6ad
Author: Julian Anastasov <ja@ssi.bg>
Date:   Thu Jul 9 11:15:27 2015 +0300

    ipvs: call skb_sender_cpu_clear
    
    commit e3895c0334d0ef46e80f22eaf2a52401ff6d5a67 upstream.
    
    Reset XPS's sender_cpu on forwarding.
    
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Fixes: 2bd82484bb4c ("xps: fix xps for stacked devices")
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f2abd993cda96fc118bab69a82f9f73233dae59
Author: Julian Anastasov <ja@ssi.bg>
Date:   Wed Jul 8 08:31:33 2015 +0300

    ipvs: fix crash with sync protocol v0 and FTP
    
    commit 56184858d1fc95c46723436b455cb7261cd8be6f upstream.
    
    Fix crash in 3.5+ if FTP is used after switching
    sync_version to 0.
    
    Fixes: 749c42b620a9 ("ipvs: reduce sync rate with time thresholds")
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64d449fd0659221fb927bf2257a750052fe1a8e3
Author: Alex Gartrell <agartrell@fb.com>
Date:   Sun Jul 5 14:28:26 2015 -0700

    ipvs: skb_orphan in case of forwarding
    
    commit 71563f3414e917c62acd8e0fb0edf8ed6af63e4b upstream.
    
    It is possible that we bind against a local socket in early_demux when we
    are actually going to want to forward it.  In this case, the socket serves
    no purpose and only serves to confuse things (particularly functions which
    implicitly expect sk_fullsock to be true, like ip_local_out).
    Additionally, skb_set_owner_w is totally broken for non full-socks.
    
    Signed-off-by: Alex Gartrell <agartrell@fb.com>
    Fixes: 41063e9dd119 ("ipv4: Early TCP socket demux.")
    Acked-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ec8fb23158797affae7993c15beba080488482f
Author: Julian Anastasov <ja@ssi.bg>
Date:   Mon Jun 29 21:51:40 2015 +0300

    ipvs: fix crash if scheduler is changed
    
    commit 05f00505a89acd21f5d0d20f5797dfbc4cf85243 upstream.
    
    I overlooked the svc->sched_data usage from schedulers
    when the services were converted to RCU in 3.10. Now
    the rare ipvsadm -E command can change the scheduler
    but due to the reverse order of ip_vs_bind_scheduler
    and ip_vs_unbind_scheduler we provide new sched_data
    to the old scheduler resulting in a crash.
    
    To fix it without changing the scheduler methods we
    have to use synchronize_rcu() only for the editing case.
    It means all svc->scheduler readers should expect a
    NULL value. To avoid breakage for the service listing
    and ipvsadm -R we can use the "none" name to indicate
    that scheduler is not assigned, a state when we drop
    new connections.
    
    Reported-by: Alexander Vasiliev <a.vasylev@404-group.com>
    Fixes: ceec4c381681 ("ipvs: convert services to rcu")
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1d62fb20245bc89d6ba93d829763450250a592b
Author: Julian Anastasov <ja@ssi.bg>
Date:   Sat Jun 27 14:39:30 2015 +0300

    ipvs: do not use random local source address for tunnels
    
    commit 4754957f04f5f368792a0eb7dab0ae89fb93dcfd upstream.
    
    Michael Vallaly reports about wrong source address used
    in rare cases for tunneled traffic. Looks like
    __ip_vs_get_out_rt in 3.10+ is providing uninitialized
    dest_dst->dst_saddr.ip because ip_vs_dest_dst_alloc uses
    kmalloc. While we retry after seeing EINVAL from routing
    for data that does not look like valid local address, it
    still succeeded when this memory was previously used from
    other dests and with different local addresses. As result,
    we can use valid local address that is not suitable for
    our real server.
    
    Fix it by providing 0.0.0.0 every time our cache is refreshed.
    By this way we will get preferred source address from routing.
    
    Reported-by: Michael Vallaly <lvs@nolatency.com>
    Fixes: 026ace060dfe ("ipvs: optimize dst usage for real server")
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66196fff4dddb5ff617b45f991f83a25f7629e1f
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Fri Jul 24 17:39:21 2015 +0100

    serial/amba-pl011: Disable interrupts around TX softirq
    
    pl011_tx_softirq() currently uses spin_{,un}lock(), which are not
    sufficient to inhibit pl011_int() from being triggered by a local
    IRQ and trying to re-take the same lock.  This can lead to
    deadlocks.
    
    This patch uses the _irq() locking variants instead to ensure that
    pl011_int() handling for a given port is deferred until any
    pl011_tx_softirq() work for that port is complete.
    
    
    Notes for stable:
    
    This patch fixes an issue that is fixed by the following upstream
    commit, which is a more substantial rewrite of the affected code,
    fixing multiple, mostly more minor issues:
    
            1e84d22322ceed4767db1e5342c830dd60c8210f
            serial/amba-pl011: Refactor and simplify TX FIFO handling
    
    The upstream patch was rejected for stable on the reasonable grounds
    that it was too big and complex a patch.  The original buggy code was
    merged in v4.1, and the rewrite was merged in v4.2, leaving only v4.1
    affected.
    
    
    This patch replaces the 1e84d22, for 4.1.x only.
    
    Fixes: 734745caeb9f serial/amba-pl011: Activate TX IRQ passively
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Tested-by: Robin Murphy <robin.murphy@arm.com>
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c04b33c93dc0c566b02ac573528bb82ac6065666
Author: Ben Segall <bsegall@google.com>
Date:   Mon Apr 6 15:28:10 2015 -0700

    sched/fair: Prevent throttling in early pick_next_task_fair()
    
    commit 54d27365cae88fbcc853b391dcd561e71acb81fa upstream.
    
    The optimized task selection logic optimistically selects a new task
    to run without first doing a full put_prev_task(). This is so that we
    can avoid a put/set on the common ancestors of the old and new task.
    
    Similarly, we should only call check_cfs_rq_runtime() to throttle
    eligible groups if they're part of the common ancestry, otherwise it
    is possible to end up with no eligible task in the simple task
    selection.
    
    Imagine:
    		/root
    	/prev		/next
    	/A		/B
    
    If our optimistic selection ends up throttling /next, we goto simple
    and our put_prev_task() ends up throttling /prev, after which we're
    going to bug out in set_next_entity() because there aren't any tasks
    left.
    
    Avoid this scenario by only throttling common ancestors.
    
    Reported-by: Mohammed Naser <mnaser@vexxhost.com>
    Reported-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: Ben Segall <bsegall@google.com>
    [ munged Changelog ]
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Roman Gushchin <klamm@yandex-team.ru>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: pjt@google.com
    Fixes: 678d5718d8d0 ("sched/fair: Optimize cgroup pick_next_task_fair()")
    Link: http://lkml.kernel.org/r/xm26wq1oswoq.fsf@sword-of-the-dawn.mtv.corp.google.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7983297d99ea11152a76420d4325f5d1925e2547
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Sep 30 12:48:40 2015 -0400

    Initialize msg/shm IPC objects before doing ipc_addid()
    
    commit b9a532277938798b53178d5a66af6e2915cb27cf upstream.
    
    As reported by Dmitry Vyukov, we really shouldn't do ipc_addid() before
    having initialized the IPC object state.  Yes, we initialize the IPC
    object in a locked state, but with all the lockless RCU lookup work,
    that IPC object lock no longer means that the state cannot be seen.
    
    We already did this for the IPC semaphore code (see commit e8577d1f0329:
    "ipc/sem.c: fully initialize sem_array before making it visible") but we
    clearly forgot about msg and shm.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: Davidlohr Bueso <dbueso@suse.de>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e34c36a797dc4ca1e0b9b97f668628801dd882b
Author: Reyad Attiyat <reyad.attiyat@gmail.com>
Date:   Thu Aug 6 19:23:58 2015 +0300

    usb: xhci: Add support for URB_ZERO_PACKET to bulk/sg transfers
    
    commit 4758dcd19a7d9ba9610b38fecb93f65f56f86346 upstream.
    
    This commit checks for the URB_ZERO_PACKET flag and creates an extra
    zero-length td if the urb transfer length is a multiple of the endpoint's
    max packet length.
    
    Signed-off-by: Reyad Attiyat <reyad.attiyat@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Cc: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc1a2e4e22baf5f6eeada5be042c208b1147fc1b
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Sep 21 17:46:17 2015 +0300

    xhci: init command timeout timer earlier to avoid deleting it uninitialized
    
    commit cc8e4fc0c3b5e8340bc8358990515d116a3c274c upstream.
    
    Don't check if timer is running with a timer_pending() before
    deleting it with del_timer_sync(), this defies the whole point of
    the sync part and can cause a possible race.
    
    Instead we just want to make sure the timer is initialized early enough
    before we have a chance to delete it.
    
    Reported-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0dee698fa202b662e9d2f8f2a44db5b2f68f44d7
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Sep 21 17:46:16 2015 +0300

    xhci: change xhci 1.0 only restrictions to support xhci 1.1
    
    commit dca7794539eff04b786fb6907186989e5eaaa9c2 upstream.
    
    Some changes between xhci 0.96 and xhci 1.0 specifications forced us to
    check the hci version in code, some of these checks were implemented as
    hci_version == 1.0, which will not work with new xhci 1.1 controllers.
    
    xhci 1.1 behaves similar to xhci 1.0 in these cases, so change these
    checks to hci_version >= 1.0
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit adaca10d389b17d75339e1338b929da45e6254a4
Author: Roger Quadros <rogerq@ti.com>
Date:   Mon Sep 21 17:46:15 2015 +0300

    usb: xhci: exit early in xhci_setup_device() if we're halted or dying
    
    commit 448116bfa856d3c076fa7178ed96661a008a5d45 upstream.
    
    During quick plug/removal of OTG adapter during dual-role testing
    it can happen that xhci_alloc_device() is called for the newly
    detected device after the DRD library has called xhci_stop to
    remove the HCD.
    
    If that is the case, just fail early to prevent the following warning.
    
    [  154.732649] hub 4-0:1.0: USB hub found
    [  154.742204] hub 4-0:1.0: 1 port detected
    [  154.824458] hub 3-0:1.0: state 7 ports 1 chg 0002 evt 0000
    [  154.854609] hub 4-0:1.0: state 7 ports 1 chg 0000 evt 0000
    [  154.944430] usb 3-1: new high-speed USB device number 2 using xhci-hcd
    [  154.951009] xhci-hcd xhci-hcd.0.auto: xhci_setup_device
    [  155.038191] xhci-hcd xhci-hcd.0.auto: remove, state 4
    [  155.043315] usb usb4: USB disconnect, device number 1
    [  155.055270] xhci-hcd xhci-hcd.0.auto: xhci_stop
    [  155.060094] xhci-hcd xhci-hcd.0.auto: USB bus 4 deregistered
    [  155.066576] xhci-hcd xhci-hcd.0.auto: remove, state 1
    [  155.071710] usb usb3: USB disconnect, device number 1
    [  155.077124] xhci-hcd xhci-hcd.0.auto: xhci_setup_device
    [  155.082389] ------------[ cut here ]------------
    [  155.087690] WARNING: CPU: 0 PID: 72 at drivers/usb/host/xhci.c:3800 xhci_setup_device+0x410/0x484 [xhci_hcd]()
    [  155.097861] Modules linked in: sd_mod usb_storage scsi_mod usb_f_ss_lb g_zero libcomposite ipv6 xhci_plat_hcd xhci_hcd usbcore dwc3 udc_core evdev ti_am335x_adc joydev kfifo_buf industrialio snd_soc_simple_cc
    [  155.146734] CPU: 0 PID: 72 Comm: kworker/0:3 Tainted: G        W       4.1.4-00834-gcd9380b-dirty #50
    [  155.156073] Hardware name: Generic AM43 (Flattened Device Tree)
    [  155.162117] Workqueue: usb_hub_wq hub_event [usbcore]
    [  155.167249] Backtrace:
    [  155.169751] [<c0012af0>] (dump_backtrace) from [<c0012c8c>] (show_stack+0x18/0x1c)
    [  155.177390]  r6:c089d4a4 r5:ffffffff r4:00000000 r3:ee46c000
    [  155.183137] [<c0012c74>] (show_stack) from [<c05f7c14>] (dump_stack+0x84/0xd0)
    [  155.190446] [<c05f7b90>] (dump_stack) from [<c00439ac>] (warn_slowpath_common+0x80/0xbc)
    [  155.198605]  r7:00000009 r6:00000ed8 r5:bf27eb70 r4:00000000
    [  155.204348] [<c004392c>] (warn_slowpath_common) from [<c0043a0c>] (warn_slowpath_null+0x24/0x2c)
    [  155.213202]  r8:ee49f000 r7:ee7c0004 r6:00000000 r5:ee7c0158 r4:ee7c0000
    [  155.220051] [<c00439e8>] (warn_slowpath_null) from [<bf27eb70>] (xhci_setup_device+0x410/0x484 [xhci_hcd])
    [  155.229816] [<bf27e760>] (xhci_setup_device [xhci_hcd]) from [<bf27ec10>] (xhci_address_device+0x14/0x18 [xhci_hcd])
    [  155.240415]  r10:ee598200 r9:00000001 r8:00000002 r7:00000001 r6:00000003 r5:00000002
    [  155.248363]  r4:ee49f000
    [  155.250978] [<bf27ebfc>] (xhci_address_device [xhci_hcd]) from [<bf20cb94>] (hub_port_init+0x1b8/0xa9c [usbcore])
    [  155.261403] [<bf20c9dc>] (hub_port_init [usbcore]) from [<bf2101e0>] (hub_event+0x738/0x1020 [usbcore])
    [  155.270874]  r10:ee598200 r9:ee7c0000 r8:ee7c0038 r7:ee518800 r6:ee49f000 r5:00000001
    [  155.278822]  r4:00000000
    [  155.281426] [<bf20faa8>] (hub_event [usbcore]) from [<c005754c>] (process_one_work+0x128/0x340)
    [  155.290196]  r10:00000000 r9:00000003 r8:00000000 r7:fedfa000 r6:eeec5400 r5:ee598314
    [  155.298151]  r4:ee434380
    [  155.300718] [<c0057424>] (process_one_work) from [<c00578f8>] (worker_thread+0x158/0x49c)
    [  155.308963]  r10:ee434380 r9:00000003 r8:eeec5400 r7:00000008 r6:ee434398 r5:eeec5400
    [  155.316913]  r4:eeec5414
    [  155.319482] [<c00577a0>] (worker_thread) from [<c005cc40>] (kthread+0xdc/0xf8)
    [  155.326765]  r10:00000000 r9:00000000 r8:00000000 r7:c00577a0 r6:ee434380 r5:ee4441c0
    [  155.334713]  r4:00000000 r3:00000000
    [  155.338341] [<c005cb64>] (kthread) from [<c000fc08>] (ret_from_fork+0x14/0x2c)
    [  155.345626]  r7:00000000 r6:00000000 r5:c005cb64 r4:ee4441c0
    [  155.356108] ---[ end trace a58d34c223b190e6 ]---
    [  155.360783] xhci-hcd xhci-hcd.0.auto: Virt dev invalid for slot_id 0x1!
    [  155.574404] xhci-hcd xhci-hcd.0.auto: xhci_setup_device
    [  155.579667] ------------[ cut here ]------------
    
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4881cd43051c1763cd86c526b789ad05fa1ab7a4
Author: Roger Quadros <rogerq@ti.com>
Date:   Mon Sep 21 17:46:13 2015 +0300

    usb: xhci: Clear XHCI_STATE_DYING on start
    
    commit e5bfeab0ad515b4f6df39fe716603e9dc6d3dfd0 upstream.
    
    For whatever reason if XHCI died in the previous instant
    then it will never recover on the next xhci_start unless we
    clear the DYING flag.
    
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04563b9427dd1a3728775ad96fbd37541e612999
Author: Roger Quadros <rogerq@ti.com>
Date:   Mon Sep 21 17:46:12 2015 +0300

    usb: xhci: lock mutex on xhci_stop
    
    commit 85ac90f8953a58f6a057b727bc9db97721e3fb8e upstream.
    
    Else it races with xhci_setup_device
    
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb8e51323be935f52aec7c164deb1c1d86f8f706
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Sep 21 17:46:10 2015 +0300

    xhci: give command abortion one more chance before killing xhci
    
    commit a6809ffd1687b3a8c192960e69add559b9d32649 upstream.
    
    We want to give the command abortion an additional try to stop
    the command ring before we completely hose xhci.
    
    Tested-by: Vincent Pelletier <plr.vincent@gmail.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44f73be485f66dfeca7c6a5e334a7a11b97a4151
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Sep 23 11:41:42 2015 -0700

    USB: whiteheat: fix potential null-deref at probe
    
    commit cbb4be652d374f64661137756b8f357a1827d6a4 upstream.
    
    Fix potential null-pointer dereference at probe by making sure that the
    required endpoints are present.
    
    The whiteheat driver assumes there are at least five pairs of bulk
    endpoints, of which the final pair is used for the "command port". An
    attempt to bind to an interface with fewer bulk endpoints would
    currently lead to an oops.
    
    Fixes CVE-2015-5257.
    
    Reported-by: Moein Ghasemzadeh <moein@istuary.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba8a7feeb68433c76fa35e4c8277e3af5460ead8
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed Sep 30 10:39:42 2015 +1000

    drm/dp/mst: drop cancel work sync in the mstb destroy path (v2)
    
    commit 274d83524895fe41ca8debae4eec60ede7252bb5 upstream.
    
    Since 9eb1e57f564d4e6e10991402726cc83fe0b9172f
    drm/dp/mst: make sure mst_primary mstb is valid in work function
    
    we validate the mstb structs in the work function, and doing
    that takes a reference. So we should never get here with the
    work function running using the mstb device, only if the work
    function hasn't run yet or is running for another mstb.
    
    So we don't need to sync the work here, this was causing
    lockdep spew as below.
    
    [  +0.000160] =============================================
    [  +0.000001] [ INFO: possible recursive locking detected ]
    [  +0.000002] 3.10.0-320.el7.rhel72.stable.backport.3.x86_64.debug #1 Tainted: G        W      ------------
    [  +0.000001] ---------------------------------------------
    [  +0.000001] kworker/4:2/1262 is trying to acquire lock:
    [  +0.000001]  ((&mgr->work)){+.+.+.}, at: [<ffffffff810b29a5>] flush_work+0x5/0x2e0
    [  +0.000007]
    but task is already holding lock:
    [  +0.000001]  ((&mgr->work)){+.+.+.}, at: [<ffffffff810b57e4>] process_one_work+0x1b4/0x710
    [  +0.000004]
    other info that might help us debug this:
    [  +0.000001]  Possible unsafe locking scenario:
    
    [  +0.000002]        CPU0
    [  +0.000000]        ----
    [  +0.000001]   lock((&mgr->work));
    [  +0.000002]   lock((&mgr->work));
    [  +0.000001]
     *** DEADLOCK ***
    
    [  +0.000001]  May be due to missing lock nesting notation
    
    [  +0.000002] 2 locks held by kworker/4:2/1262:
    [  +0.000001]  #0:  (events_long){.+.+.+}, at: [<ffffffff810b57e4>] process_one_work+0x1b4/0x710
    [  +0.000004]  #1:  ((&mgr->work)){+.+.+.}, at: [<ffffffff810b57e4>] process_one_work+0x1b4/0x710
    [  +0.000003]
    stack backtrace:
    [  +0.000003] CPU: 4 PID: 1262 Comm: kworker/4:2 Tainted: G        W      ------------   3.10.0-320.el7.rhel72.stable.backport.3.x86_64.debug #1
    [  +0.000001] Hardware name: LENOVO 20EGS0R600/20EGS0R600, BIOS GNET71WW (2.19 ) 02/05/2015
    [  +0.000008] Workqueue: events_long drm_dp_mst_link_probe_work [drm_kms_helper]
    [  +0.000001]  ffffffff82c26c90 00000000a527b914 ffff88046399bae8 ffffffff816fe04d
    [  +0.000004]  ffff88046399bb58 ffffffff8110f47f ffff880461438000 0001009b840fc003
    [  +0.000002]  ffff880461438a98 0000000000000000 0000000804dc26e1 ffffffff824a2c00
    [  +0.000003] Call Trace:
    [  +0.000004]  [<ffffffff816fe04d>] dump_stack+0x19/0x1b
    [  +0.000004]  [<ffffffff8110f47f>] __lock_acquire+0x115f/0x1250
    [  +0.000002]  [<ffffffff8110fd49>] lock_acquire+0x99/0x1e0
    [  +0.000002]  [<ffffffff810b29a5>] ? flush_work+0x5/0x2e0
    [  +0.000002]  [<ffffffff810b29ee>] flush_work+0x4e/0x2e0
    [  +0.000002]  [<ffffffff810b29a5>] ? flush_work+0x5/0x2e0
    [  +0.000004]  [<ffffffff81025905>] ? native_sched_clock+0x35/0x80
    [  +0.000002]  [<ffffffff81025959>] ? sched_clock+0x9/0x10
    [  +0.000002]  [<ffffffff810da1f5>] ? local_clock+0x25/0x30
    [  +0.000002]  [<ffffffff8110dca9>] ? mark_held_locks+0xb9/0x140
    [  +0.000003]  [<ffffffff810b4ed5>] ? __cancel_work_timer+0x95/0x160
    [  +0.000002]  [<ffffffff810b4ee8>] __cancel_work_timer+0xa8/0x160
    [  +0.000002]  [<ffffffff810b4fb0>] cancel_work_sync+0x10/0x20
    [  +0.000007]  [<ffffffffa0160d17>] drm_dp_destroy_mst_branch_device+0x27/0x120 [drm_kms_helper]
    [  +0.000006]  [<ffffffffa0163968>] drm_dp_mst_link_probe_work+0x78/0xa0 [drm_kms_helper]
    [  +0.000002]  [<ffffffff810b5850>] process_one_work+0x220/0x710
    [  +0.000002]  [<ffffffff810b57e4>] ? process_one_work+0x1b4/0x710
    [  +0.000005]  [<ffffffff810b5e5b>] worker_thread+0x11b/0x3a0
    [  +0.000003]  [<ffffffff810b5d40>] ? process_one_work+0x710/0x710
    [  +0.000002]  [<ffffffff810beced>] kthread+0xed/0x100
    [  +0.000003]  [<ffffffff810bec00>] ? insert_kthread_work+0x80/0x80
    [  +0.000003]  [<ffffffff817121d8>] ret_from_fork+0x58/0x90
    
    v2: add flush_work.
    
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27b9cf2edc7aac66c229c847411443cecc338720
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Mon Sep 28 18:16:31 2015 +0900

    drm/radeon: Restore LCD backlight level on resume (>= R5xx)
    
    commit 4281f46ef839050d2ef60348f661eb463c21cc2e upstream.
    
    Instead of only enabling the backlight (which seems to set it to max
    brightness), just re-set the current backlight level, which also takes
    care of enabling the backlight if necessary.
    
    Only the radeon_atom_encoder_dpms_dig part tested on a Kaveri laptop,
    the radeon_atom_encoder_dpms_avivo part is only compile tested.
    
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64822f988a306843157002fa8536ae64df73a3d0
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Tue Jun 23 11:34:21 2015 +0200

    drm: Reject DRI1 hw lock ioctl functions for kms drivers
    
    commit da168d81b44898404d281d5dbe70154ab5f117c1 upstream.
    
    I've done some extensive history digging across libdrm, mesa and
    xf86-video-{intel,nouveau,ati}. The only potential user of this with
    kms drivers I could find was ttmtest, which once used drmGetLock
    still. But that mistake was quickly fixed up. Even the intel xvmc
    library (which otherwise was really good with using dri1 stuff in kms
    mode) managed to never take the hw lock for dri2 (and hence kms).
    
    Hence it should be save to unconditionally disallow this.
    
    Cc: Peter Antoine <peter.antoine@intel.com>
    Reviewed-by: Peter Antoine <peter.antoine@intel.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eea5a642208204cc2999d1f03f5db7177c40159a
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Thu Sep 17 16:42:07 2015 +0300

    drm/i915/bios: handle MIPI Sequence Block v3+ gracefully
    
    commit cd67d226ebd909d239d2c6e5a6abd6e2a338d1cd upstream.
    
    The VBT MIPI Sequence Block version 3 has forward incompatible changes:
    
    First, the block size in the header has been specified reserved, and the
    actual size is a separate 32-bit value within the block. The current
    find_section() function to will only look at the size in the block
    header, and, depending on what's in that now reserved size field,
    continue looking for other sections in the wrong place.
    
    Fix this by taking the new block size field into account. This will
    ensure that the lookups for other sections will work properly, as long
    as the new 32-bit size does not go beyond the opregion VBT mailbox size.
    
    Second, the contents of the block have been completely
    changed. Gracefully refuse parsing the yet unknown data version.
    
    Cc: Deepak M <m.deepak@intel.com>
    Reviewed-by: Deepak M <m.deepak@intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83777bf17d3bc20ef777e18aa3391eb3f5b11043
Author: Fabiano Fidêncio <fidencio@redhat.com>
Date:   Thu Sep 24 15:18:34 2015 +0200

    drm/qxl: recreate the primary surface when the bo is not primary
    
    commit 8d0d94015e96b8853c4f7f06eac3f269e1b3d866 upstream.
    
    When disabling/enabling a crtc the primary area must be updated
    independently of which crtc has been disabled/enabled.
    
    Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1264735
    
    Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 827630e9731d77aeac08a8569f18685278f07ac4
Author: Dave Airlie <airlied@redhat.com>
Date:   Mon Sep 14 10:28:34 2015 +1000

    drm/qxl: only report first monitor as connected if we have no state
    
    commit 69e5d3f893e19613486f300fd6e631810338aa4b upstream.
    
    If the server isn't new enough to give us state, report the first
    monitor as always connected, otherwise believe the server side.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ceb4f5dd1059664aa4093e88e64edd3955f3d21
Author: Steve French <smfrench@gmail.com>
Date:   Mon Sep 28 17:21:07 2015 -0500

    Do not fall back to SMBWriteX in set_file_size error cases
    
    commit 646200a041203f440fb6fcf9cacd9efeda9de74c upstream.
    
    The error paths in set_file_size for cifs and smb3 are incorrect.
    
    In the unlikely event that a server did not support set file info
    of the file size, the code incorrectly falls back to trying SMBWriteX
    (note that only the original core SMB Write, used for example by DOS,
    can set the file size this way - this actually  does not work for the more
    recent SMBWriteX).  The idea was since the old DOS SMB Write could set
    the file size if you write zero bytes at that offset then use that if
    server rejects the normal set file info call.
    
    Fortunately the SMBWriteX will never be sent on the wire (except when
    file size is zero) since the length and offset fields were reversed
    in the two places in this function that call SMBWriteX causing
    the fall back path to return an error. It is also important to never call
    an SMB request from an SMB2/sMB3 session (which theoretically would
    be possible, and can cause a brief session drop, although the client
    recovers) so this should be fixed.  In practice this path does not happen
    with modern servers but the error fall back to SMBWriteX is clearly wrong.
    
    Removing the calls to SMBWriteX in the error paths in cifs_set_file_size
    
    Pointed out by PaX/grsecurity team
    
    Signed-off-by: Steve French <steve.french@primarydata.com>
    Reported-by: PaX Team <pageexec@freemail.hu>
    CC: Emese Revfy <re.emese@gmail.com>
    CC: Brad Spengler <spender@grsecurity.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52213f9e44c7396c64fcb32b48b62e34871f2763
Author: Steve French <smfrench@gmail.com>
Date:   Tue Sep 22 09:29:38 2015 -0500

    disabling oplocks/leases via module parm enable_oplocks broken for SMB3
    
    commit e0ddde9d44e37fbc21ce893553094ecf1a633ab5 upstream.
    
    leases (oplocks) were always requested for SMB2/SMB3 even when oplocks
    disabled in the cifs.ko module.
    
    Signed-off-by: Steve French <steve.french@primarydata.com>
    Reviewed-by: Chandrika Srinivasan <chandrika.srinivasan@citrix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1f22082dfd9398f548af6fb169dc5fbfbec1508
Author: Steve French <smfrench@gmail.com>
Date:   Thu Sep 24 00:52:37 2015 -0500

    Fix sec=krb5 on smb3 mounts
    
    commit ceb1b0b9b4d1089e9f2731a314689ae17784c861 upstream.
    
    Kerberos, which is very important for security, was only enabled for
    CIFS not SMB2/SMB3 mounts (e.g. vers=3.0)
    
    Patch based on the information detailed in
    http://thread.gmane.org/gmane.linux.kernel.cifs/10081/focus=10307
    to enable Kerberized SMB2/SMB3
    
    a) SMB2_negotiate: enable/use decode_negTokenInit in SMB2_negotiate
    b) SMB2_sess_setup: handle Kerberos sectype and replicate Kerberos
       SMB1 processing done in sess_auth_kerberos
    
    Signed-off-by: Noel Power <noel.power@suse.com>
    Signed-off-by: Jim McDonough <jmcd@samba.org>
    Signed-off-by: Steve French <steve.french@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 896f0858ce91e3207ea5bd59abc23fb58b2c159a
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Thu Oct 1 18:38:27 2015 -0400

    NFS: Fix a write performance regression
    
    commit 8fa4592a14ebb3c22a21d846d1e4f65dab7d1a7c upstream.
    
    If all other conditions in nfs_can_extend_write() are met, and there
    are no locks, then we should be able to assume close-to-open semantics
    and the ability to extend our write to cover the whole page.
    
    With this patch, the xfstests generic/074 test completes in 242s instead
    of >1400s on my test rig.
    
    Fixes: bd61e0a9c852 ("locks: convert posix locks to file_lock_context")
    Cc: Jeff Layton <jlayton@primarydata.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0fe83960ecd61b82fb436728712330b61b47d53a
Author: Peng Tao <tao.peng@primarydata.com>
Date:   Fri Sep 11 11:14:06 2015 +0800

    nfs: fix pg_test page count calculation
    
    commit 048883e0b934d9a5103d40e209cb14b7f33d2933 upstream.
    
    We really want sizeof(struct page *) instead. Otherwise we limit
    maximum IO size to 64 pages rather than 512 pages on a 64bit system.
    
    Fixes 2e11f829(nfs: cap request size to fit a kmalloced page array).
    
    Cc: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Peng Tao <tao.peng@primarydata.com>
    Fixes: 2e11f8296d22 ("nfs: cap request size to fit a kmalloced page array")
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 953c972242a0772d938b391bc9d70b3c0591c20f
Author: Kinglong Mee <kinglongmee@gmail.com>
Date:   Sun Sep 20 23:03:28 2015 +0800

    NFS: Do cleanup before resetting pageio read/write to mds
    
    commit 6f29b9bba7b08c6b1d6f2cc4cf750b342fc1946c upstream.
    
    There is a reference leak of layout segment after resetting
    pageio read/write to mds.
    
    Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25cbde3442a1fd07fc233bd881ded2f5bc8f4e26
Author: Johan Hedberg <johan.hedberg@intel.com>
Date:   Fri Sep 4 12:22:46 2015 +0300

    Bluetooth: Delay check for conn->smp in smp_conn_security()
    
    commit d8949aad3eab5d396f4fefcd581773bf07b9a79e upstream.
    
    There are several actions that smp_conn_security() might make that do
    not require a valid SMP context (conn->smp pointer). One of these
    actions is to encrypt the link with an existing LTK. If the SMP
    context wasn't initialized properly we should still allow the
    independent actions to be done, i.e. the check for the context should
    only be done at the last possible moment.
    
    Reported-by: Chuck Ebbert <cebbert.lkml@gmail.com>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a365025b053c37cfe27d16a4cf32e971cde3b41d
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Sep 9 02:57:21 2015 +0200

    netfilter: nf_log: don't zap all loggers on unregister
    
    commit 205ee117d4dc4a11ac3bd9638bb9b2e839f4de9a upstream.
    
    like nf_log_unset, nf_log_unregister must not reset the list of loggers.
    Otherwise, a call to nf_log_unregister() will render loggers of other nf
    protocols unusable:
    
    iptables -A INPUT -j LOG
    modprobe nf_log_arp ; rmmod nf_log_arp
    iptables -A INPUT -j LOG
    iptables: No chain/target/match by that name
    
    Fixes: 30e0c6a6be ("netfilter: nf_log: prepare net namespace support for loggers")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 146560ee780bd92bda069ec7bf685ea4369ed4a3
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Mon Sep 14 18:04:09 2015 +0200

    netfilter: nft_compat: skip family comparison in case of NFPROTO_UNSPEC
    
    commit ba378ca9c04a5fc1b2cf0f0274a9d02eb3d1bad9 upstream.
    
    Fix lookup of existing match/target structures in the corresponding list
    by skipping the family check if NFPROTO_UNSPEC is used.
    
    This is resulting in the allocation and insertion of one match/target
    structure for each use of them. So this not only bloats memory
    consumption but also severely affects the time to reload the ruleset
    from the iptables-compat utility.
    
    After this patch, iptables-compat-restore and iptables-compat take
    almost the same time to reload large rulesets.
    
    Fixes: 0ca743a55991 ("netfilter: nf_tables: add compatibility layer for x_tables")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc2cc007bc8307f0f8f6e6686af2835d8fd0eecd
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Thu Sep 17 13:37:00 2015 +0200

    netfilter: nf_log: wait for rcu grace after logger unregistration
    
    commit ad5001cc7cdf9aaee5eb213fdee657e4a3c94776 upstream.
    
    The nf_log_unregister() function needs to call synchronize_rcu() to make sure
    that the objects are not dereferenced anymore on module removal.
    
    Fixes: 5962815a6a56 ("netfilter: nf_log: use an array of loggers instead of list")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a251cb2078af1e3be62847547746bf13f75c6d90
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Fri Jun 19 10:41:21 2015 -0500

    netfilter: nftables: Do not run chains in the wrong network namespace
    
    commit fdab6a4cbd8933092155449ca7253eba973ada14 upstream.
    
    Currenlty nf_tables chains added in one network namespace are being
    run in all network namespace.  The issues are myriad with the simplest
    being an unprivileged user can cause any network packets to be dropped.
    
    Address this by simply not running nf_tables chains in the wrong
    network namespace.
    
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ad248d2d57fdc457283072bde67931d5b564eb7
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Fri Jun 19 14:03:39 2015 -0500

    netfilter: nf_qeueue: Drop queue entries on nf_unregister_hook
    
    commit 8405a8fff3f8545c888a872d6e3c0c8eecd4d348 upstream.
    
    Add code to nf_unregister_hook to flush the nf_queue when a hook is
    unregistered.  This guarantees that the pointer that the nf_queue code
    retains into the nf_hook list will remain valid while a packet is
    queued.
    
    I tested what would happen if we do not flush queued packets and was
    trivially able to obtain the oops below.  All that was required was
    to stop the nf_queue listening process, to delete all of the nf_tables,
    and to awaken the nf_queue listening process.
    
    > BUG: unable to handle kernel paging request at 0000000100000001
    > IP: [<0000000100000001>] 0x100000001
    > PGD b9c35067 PUD 0
    > Oops: 0010 [#1] SMP
    > Modules linked in:
    > CPU: 0 PID: 519 Comm: lt-nfqnl_test Not tainted
    > task: ffff8800b9c8c050 ti: ffff8800ba9d8000 task.ti: ffff8800ba9d8000
    > RIP: 0010:[<0000000100000001>]  [<0000000100000001>] 0x100000001
    > RSP: 0018:ffff8800ba9dba40  EFLAGS: 00010a16
    > RAX: ffff8800bab48a00 RBX: ffff8800ba9dba90 RCX: ffff8800ba9dba90
    > RDX: ffff8800b9c10128 RSI: ffff8800ba940900 RDI: ffff8800bab48a00
    > RBP: ffff8800b9c10128 R08: ffffffff82976660 R09: ffff8800ba9dbb28
    > R10: dead000000100100 R11: dead000000200200 R12: ffff8800ba940900
    > R13: ffffffff8313fd50 R14: ffff8800b9c95200 R15: 0000000000000000
    > FS:  00007fb91fc34700(0000) GS:ffff8800bfa00000(0000) knlGS:0000000000000000
    > CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    > CR2: 0000000100000001 CR3: 00000000babfb000 CR4: 00000000000007f0
    > Stack:
    >  ffffffff8206ab0f ffffffff82982240 ffff8800bab48a00 ffff8800b9c100a8
    >  ffff8800b9c10100 0000000000000001 ffff8800ba940900 ffff8800b9c10128
    >  ffffffff8206bd65 ffff8800bfb0d5e0 ffff8800bab48a00 0000000000014dc0
    > Call Trace:
    >  [<ffffffff8206ab0f>] ? nf_iterate+0x4f/0xa0
    >  [<ffffffff8206bd65>] ? nf_reinject+0x125/0x190
    >  [<ffffffff8206dee5>] ? nfqnl_recv_verdict+0x255/0x360
    >  [<ffffffff81386290>] ? nla_parse+0x80/0xf0
    >  [<ffffffff8206c42c>] ? nfnetlink_rcv_msg+0x13c/0x240
    >  [<ffffffff811b2fec>] ? __memcg_kmem_get_cache+0x4c/0x150
    >  [<ffffffff8206c2f0>] ? nfnl_lock+0x20/0x20
    >  [<ffffffff82068159>] ? netlink_rcv_skb+0xa9/0xc0
    >  [<ffffffff820677bf>] ? netlink_unicast+0x12f/0x1c0
    >  [<ffffffff82067ade>] ? netlink_sendmsg+0x28e/0x650
    >  [<ffffffff81fdd814>] ? sock_sendmsg+0x44/0x50
    >  [<ffffffff81fde07b>] ? ___sys_sendmsg+0x2ab/0x2c0
    >  [<ffffffff810e8f73>] ? __wake_up+0x43/0x70
    >  [<ffffffff8141a134>] ? tty_write+0x1c4/0x2a0
    >  [<ffffffff81fde9f4>] ? __sys_sendmsg+0x44/0x80
    >  [<ffffffff823ff8d7>] ? system_call_fastpath+0x12/0x6a
    > Code:  Bad RIP value.
    > RIP  [<0000000100000001>] 0x100000001
    >  RSP <ffff8800ba9dba40>
    > CR2: 0000000100000001
    > ---[ end trace 08eb65d42362793f ]---
    
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5eb491ba5d0669b3435965f08f41132f9ee4274c
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Thu Jul 9 22:56:00 2015 +0200

    netfilter: ctnetlink: put back references to master ct and expect objects
    
    commit 95dd8653de658143770cb0e55a58d2aab97c79d2 upstream.
    
    We have to put back the references to the master conntrack and the expectation
    that we just created, otherwise we'll leak them.
    
    Fixes: 0ef71ee1a5b9 ("netfilter: ctnetlink: refactor ctnetlink_create_expect")
    Reported-by: Tim Wiess <Tim.Wiess@watchguard.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99fecec5708258d5b0bcf8359581d3cfa0f34287
Author: Joe Stringer <joestringer@nicira.com>
Date:   Tue Jul 21 21:37:31 2015 -0700

    netfilter: nf_conntrack: Support expectations in different zones
    
    commit 4b31814d20cbe5cd4ccf18089751e77a04afe4f2 upstream.
    
    When zones were originally introduced, the expectation functions were
    all extended to perform lookup using the zone. However, insertion was
    not modified to check the zone. This means that two expectations which
    are intended to apply for different connections that have the same tuple
    but exist in different zones cannot both be tracked.
    
    Fixes: 5d0aa2ccd4 (netfilter: nf_conntrack: add support for "conntrack zones")
    Signed-off-by: Joe Stringer <joestringer@nicira.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e51f797611ef276603e7070fc4c39b5a43ddb21
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Wed Aug 12 17:41:00 2015 +0200

    netfilter: nf_tables: Use 32 bit addressing register from nft_type_to_reg()
    
    commit bf798657eb5ba57552096843c315f096fdf9b715 upstream.
    
    nft_type_to_reg() needs to return the register in the new 32 bit addressing,
    otherwise we hit EINVAL when using mappings.
    
    Fixes: 49499c3 ("netfilter: nf_tables: switch registers to 32 bit addressing")
    Reported-by: Andreas Schultz <aschultz@tpip.net>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16e6df022b41901165f67c30f807074fd6c4507b
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Fri Aug 28 21:01:43 2015 +0200

    netfilter: nfnetlink: work around wrong endianess in res_id field
    
    commit a9de9777d613500b089a7416f936bf3ae5f070d2 upstream.
    
    The convention in nfnetlink is to use network byte order in every header field
    as well as in the attribute payload. The initial version of the batching
    infrastructure assumes that res_id comes in host byte order though.
    
    The only client of the batching infrastructure is nf_tables, so let's add a
    workaround to address this inconsistency. We currently have 11 nfnetlink
    subsystems according to NFNL_SUBSYS_COUNT, so we can assume that the subsystem
    2560, ie. htons(10), will not be allocated anytime soon, so it can be an alias
    of nf_tables from the nfnetlink batching path when interpreting the res_id
    field.
    
    Based on original patch from Florian Westphal.
    
    Reported-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a95d7d9f4cb0f61d7e0da862a95897d7bc777f62
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Fri Oct 2 11:17:37 2015 -0400

    dm raid: fix round up of default region size
    
    commit 042745ee53a0a7c1f5aff191a4a24213c6dcfb52 upstream.
    
    Commit 3a0f9aaee028 ("dm raid: round region_size to power of two")
    intended to make sure that the default region size is a power of two.
    However, the logic in that commit is incorrect and sets the variable
    region_size to 0 or 1, depending on whether min_region_size is a power
    of two.
    
    Fix this logic, using roundup_pow_of_two(), so that region_size is
    properly rounded up to the next power of two.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Fixes: 3a0f9aaee028 ("dm raid: round region_size to power of two")
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6298be5ee4f9445a0d5003adc32a2d0967e336b8
Author: NeilBrown <neilb@suse.com>
Date:   Thu Sep 24 15:47:47 2015 +1000

    md/raid0: apply base queue limits *before* disk_stack_limits
    
    commit 66eefe5de11db1e0d8f2edc3880d50e7c36a9d43 upstream.
    
    Calling e.g. blk_queue_max_hw_sectors() after calls to
    disk_stack_limits() discards the settings determined by
    disk_stack_limits().
    So we need to make those calls first.
    
    Fixes: 199dc6ed5179 ("md/raid0: update queue parameter in a safer location.")
    Reported-by: Jes Sorensen <Jes.Sorensen@redhat.com>
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abb5e1983c9088f1d889b16338bc0a05fa936eea
Author: NeilBrown <neilb@suse.com>
Date:   Mon Aug 3 13:11:47 2015 +1000

    md/raid0: update queue parameter in a safer location.
    
    commit 199dc6ed5179251fa6158a461499c24bdd99c836 upstream.
    
    When a (e.g.) RAID5 array is reshaped to RAID0, the updating
    of queue parameters (e.g. max number of sectors per bio) is
    done in the wrong place.
    It should be part of ->run, but it is actually part of ->takeover.
    This means it happens before level_store() calls:
    
    	blk_set_stacking_limits(&mddev->queue->limits);
    
    and so it ineffective.  This can lead to errors from underlying
    devices.
    
    So move all the relevant settings out of create_stripe_zones()
    and into raid0_run().
    
    As this can lead to a bug-on it is suitable for any -stable
    kernel which supports reshape to RAID0.  So 2.6.35 or later.
    As the bug has been present for five years there is no urgency,
    so no need to rush into -stable.
    
    Fixes: 9af204cf720c ("md: Add support for Raid5->Raid0 and Raid10->Raid0 takeover")
    Reported-by: Yi Zhang <yizhan@redhat.com>
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 182318334b8298203e16e6f6d8a11e2030e8bb38
Author: Liu.Zhao <lzsos369@163.com>
Date:   Mon Aug 24 08:36:12 2015 -0700

    USB: option: add ZTE PIDs
    
    commit 19ab6bc5674a30fdb6a2436b068d19a3c17dc73e upstream.
    
    This is intended to add ZTE device PIDs on kernel.
    
    Signed-off-by: Liu.Zhao <lzsos369@163.com>
    [johan: sort the new entries ]
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e61c75ae0cf1b0b168cb2cf5ca3dc3ca72ff777
Author: Shawn Lin <shawn.lin@rock-chips.com>
Date:   Wed Sep 9 15:41:52 2015 +0800

    staging: ion: fix corruption of ion_import_dma_buf
    
    commit 6fa92e2bcf6390e64895b12761e851c452d87bd8 upstream.
    
    we found this issue but still exit in lastest kernel. Simply
    keep ion_handle_create under mutex_lock to avoid this race.
    
    WARNING: CPU: 2 PID: 2648 at drivers/staging/android/ion/ion.c:512 ion_handle_add+0xb4/0xc0()
    ion_handle_add: buffer already found.
    Modules linked in: iwlmvm iwlwifi mac80211 cfg80211 compat
    CPU: 2 PID: 2648 Comm: TimedEventQueue Tainted: G        W    3.14.0 #7
     00000000 00000000 9a3efd2c 80faf273 9a3efd6c 9a3efd5c 80935dc9 811d7fd3
     9a3efd88 00000a58 812208a0 00000200 80e128d4 80e128d4 8d4ae00c a8cd8600
     a8cd8094 9a3efd74 80935e0e 00000009 9a3efd6c 811d7fd3 9a3efd88 9a3efd9c
    Call Trace:
      [<80faf273>] dump_stack+0x48/0x69
      [<80935dc9>] warn_slowpath_common+0x79/0x90
      [<80e128d4>] ? ion_handle_add+0xb4/0xc0
      [<80e128d4>] ? ion_handle_add+0xb4/0xc0
      [<80935e0e>] warn_slowpath_fmt+0x2e/0x30
      [<80e128d4>] ion_handle_add+0xb4/0xc0
      [<80e144cc>] ion_import_dma_buf+0x8c/0x110
      [<80c517c4>] reg_init+0x364/0x7d0
      [<80993363>] ? futex_wait+0x123/0x210
      [<80992e0e>] ? get_futex_key+0x16e/0x1e0
      [<8099308f>] ? futex_wake+0x5f/0x120
      [<80c51e19>] vpu_service_ioctl+0x1e9/0x500
      [<80994aec>] ? do_futex+0xec/0x8e0
      [<80971080>] ? prepare_to_wait_event+0xc0/0xc0
      [<80c51c30>] ? reg_init+0x7d0/0x7d0
      [<80a22562>] do_vfs_ioctl+0x2d2/0x4c0
      [<80b198ad>] ? inode_has_perm.isra.41+0x2d/0x40
      [<80b199cf>] ? file_has_perm+0x7f/0x90
      [<80b1a5f7>] ? selinux_file_ioctl+0x47/0xf0
      [<80a227a8>] SyS_ioctl+0x58/0x80
      [<80fb45e8>] syscall_call+0x7/0x7
      [<80fb0000>] ? mmc_do_calc_max_discard+0xab/0xe4
    
    Fixes: 83271f626 ("ion: hold reference to handle...")
    Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
    Reviewed-by: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f11a82cafa7200fd60ef1cb62d53d3ae8233a77f
Author: Joe Thornber <ejt@redhat.com>
Date:   Wed Aug 12 15:12:09 2015 +0100

    dm btree: add ref counting ops for the leaves of top level btrees
    
    commit b0dc3c8bc157c60b1d470163882be8c13e1950af upstream.
    
    When using nested btrees, the top leaves of the top levels contain
    block addresses for the root of the next tree down.  If we shadow a
    shared leaf node the leaf values (sub tree roots) should be incremented
    accordingly.
    
    This is only an issue if there is metadata sharing in the top levels.
    Which only occurs if metadata snapshots are being used (as is possible
    with dm-thinp).  And could result in a block from the thinp metadata
    snap being reused early, thus corrupting the thinp metadata snap.
    
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b27c668eff7929c87993542935d1206d800bfd1
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Thu Jul 9 16:45:18 2015 -0400

    svcrdma: Fix send_reply() scatter/gather set-up
    
    commit 9d11b51ce7c150a69e761e30518f294fc73d55ff upstream.
    
    The Linux NFS server returns garbage in the data payload of inline
    NFS/RDMA READ replies. These are READs of under 1000 bytes or so
    where the client has not provided either a reply chunk or a write
    list.
    
    The NFS server delivers the data payload for an NFS READ reply to
    the transport in an xdr_buf page list. If the NFS client did not
    provide a reply chunk or a write list, send_reply() is supposed to
    set up a separate sge for the page containing the READ data, and
    another sge for XDR padding if needed, then post all of the sges via
    a single SEND Work Request.
    
    The problem is send_reply() does not advance through the xdr_buf
    when setting up scatter/gather entries for SEND WR. It always calls
    dma_map_xdr with xdr_off set to zero. When there's more than one
    sge, dma_map_xdr() sets up the SEND sge's so they all point to the
    xdr_buf's head.
    
    The current Linux NFS/RDMA client always provides a reply chunk or
    a write list when performing an NFS READ over RDMA. Therefore, it
    does not exercise this particular case. The Linux server has never
    had to use more than one extra sge for building RPC/RDMA replies
    with a Linux client.
    
    However, an NFS/RDMA client _is_ allowed to send small NFS READs
    without setting up a write list or reply chunk. The NFS READ reply
    fits entirely within the inline reply buffer in this case. This is
    perhaps a more efficient way of performing NFS READs that the Linux
    NFS/RDMA client may some day adopt.
    
    Fixes: b432e6b3d9c1 ('svcrdma: Change DMA mapping logic to . . .')
    BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=285
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35dc0ffe365c80e33b7c096c582688226c57963a
Author: Michal Kazior <michal.kazior@tieto.com>
Date:   Wed Aug 19 13:10:43 2015 +0200

    ath10k: fix dma_mapping_error() handling
    
    commit 5e55e3cbd1042cffa6249f22c10585e63f8a29bf upstream.
    
    The function returns 1 when DMA mapping fails. The
    driver would return bogus values and could
    possibly confuse itself if DMA failed.
    
    Fixes: 767d34fc67af ("ath10k: remove DMA mapping wrappers")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 839e359734a7bdd7143c48ff125e6b8c507710de
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Wed Sep 9 21:34:51 2015 -0400

    dm crypt: constrain crypt device's max_segment_size to PAGE_SIZE
    
    commit 586b286b110e94eb31840ac5afc0c24e0881fe34 upstream.
    
    Setting the dm-crypt device's max_segment_size to PAGE_SIZE is an
    unfortunate constraint that is required to avoid the potential for
    exceeding dm-crypt's underlying device's max_segments limits -- due to
    crypt_alloc_buffer() possibly allocating pages for the encryption bio
    that are not as physically contiguous as the original bio.
    
    It is interesting to note that this problem was already fixed back in
    2007 via commit 91e106259 ("dm crypt: use bio_add_page").  But Linux 4.0
    commit cf2f1abfb ("dm crypt: don't allocate pages for a partial
    request") regressed dm-crypt back to _not_ using bio_add_page().  But
    given dm-crypt's cpu parallelization changes all depend on commit
    cf2f1abfb's abandoning of the more complex io fragments processing that
    dm-crypt previously had we cannot easily go back to using
    bio_add_page().
    
    So all said the cleanest way to resolve this issue is to fix dm-crypt to
    properly constrain the original bios entering dm-crypt so the encryption
    bios that dm-crypt generates from the original bios are always
    compatible with the underlying device's max_segments queue limits.
    
    It should be noted that technically Linux 4.3 does _not_ need this fix
    because of the block core's new late bio-splitting capability.  But, it
    is reasoned, there is little to be gained by having the block core split
    the encrypted bio that is composed of PAGE_SIZE segments.  That said, in
    the future we may revert this change.
    
    Fixes: cf2f1abfb ("dm crypt: don't allocate pages for a partial request")
    Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=104421
    Suggested-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1124f24bd6910248a7f12af5ec0efbc915781ab
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Tue Sep 22 17:03:54 2015 -0500

    PCI: Clear IORESOURCE_UNSET when clipping a bridge window
    
    commit b838b39e930aa1cfd099ea82ac40ed6d6413af26 upstream.
    
    c770cb4cb505 ("PCI: Mark invalid BARs as unassigned") sets IORESOURCE_UNSET
    if we fail to claim a resource.  If we tried to claim a bridge window,
    failed, clipped the window, and tried to claim the clipped window, we
    failed again because of IORESOURCE_UNSET:
    
      pci_bus 0000:00: root bus resource [mem 0xc0000000-0xffffffff window]
      pci 0000:00:01.0: can't claim BAR 15 [mem 0xbdf00000-0xddefffff 64bit pref]: no compatible bridge window
      pci 0000:00:01.0: [mem size 0x20000000 64bit pref] clipped to [mem size 0x1df00000 64bit pref]
      pci 0000:00:01.0:   bridge window [mem size 0x1df00000 64bit pref]
      pci 0000:00:01.0: can't claim BAR 15 [mem size 0x1df00000 64bit pref]: no address assigned
    
    The 00:01.0 window started as [mem 0xbdf00000-0xddefffff 64bit pref].  That
    starts before the host bridge window [mem 0xc0000000-0xffffffff window], so
    we clipped the 00:01.0 window to [mem 0xc0000000-0xddefffff 64bit pref].
    But we left it marked IORESOURCE_UNSET, so the second claim failed when it
    should have succeeded.
    
    This means downstream devices will also fail for lack of resources, e.g.,
    in the bugzilla below,
    
      radeon 0000:01:00.0: Fatal error during GPU init
    
    Clear IORESOURCE_UNSET when we clip a bridge window.  Also clear
    IORESOURCE_UNSET in our copy of the unclipped window so we can see exactly
    what the original window was and how it now fits inside the upstream
    window.
    
    Fixes: c770cb4cb505 ("PCI: Mark invalid BARs as unassigned")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=85491#c47
    Based-on-patch-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Based-on-patch-by: Yinghai Lu <yinghai@kernel.org>
    Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: Yinghai Lu <yinghai@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ef7b705764bad68176542f16f7bd2d3fa72cc7e
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Tue Sep 15 22:24:46 2015 -0600

    PCI: Use function 0 VPD for identical functions, regular VPD for others
    
    commit da2d03ea27f6ed9d2005a67b20dd021ddacf1e4d upstream.
    
    932c435caba8 ("PCI: Add dev_flags bit to access VPD through function 0")
    added PCI_DEV_FLAGS_VPD_REF_F0.  Previously, we set the flag on every
    non-zero function of quirked devices.  If a function turned out to be
    different from function 0, i.e., it had a different class, vendor ID, or
    device ID, the flag remained set but we didn't make VPD accessible at all.
    
    Flip this around so we only set PCI_DEV_FLAGS_VPD_REF_F0 for functions that
    are identical to function 0, and allow regular VPD access for any other
    functions.
    
    [bhelgaas: changelog, stable tag]
    Fixes: 932c435caba8 ("PCI: Add dev_flags bit to access VPD through function 0")
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
    Acked-by: Myron Stowe <myron.stowe@redhat.com>
    Acked-by: Mark Rustad <mark.d.rustad@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7559c548a3c54d83a6caaaa31c83d01076d8c54f
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Tue Sep 15 11:17:21 2015 -0600

    PCI: Fix devfn for VPD access through function 0
    
    commit 9d9240756e63dd87d6cbf5da8b98ceb8f8192b55 upstream.
    
    Commit 932c435caba8 ("PCI: Add dev_flags bit to access VPD through function
    0") passes PCI_SLOT(devfn) for the devfn parameter of pci_get_slot().
    Generally this works because we're fairly well guaranteed that a PCIe
    device is at slot address 0, but for the general case, including
    conventional PCI, it's incorrect.  We need to get the slot and then convert
    it back into a devfn.
    
    Fixes: 932c435caba8 ("PCI: Add dev_flags bit to access VPD through function 0")
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
    Acked-by: Myron Stowe <myron.stowe@redhat.com>
    Acked-by: Mark Rustad <mark.d.rustad@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e84e81255e79c19128b0f30ba6937ccf55933a86
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Sep 28 09:56:26 2015 +0100

    Btrfs: update fix for read corruption of compressed and shared extents
    
    commit 808f80b46790f27e145c72112189d6a3be2bc884 upstream.
    
    My previous fix in commit 005efedf2c7d ("Btrfs: fix read corruption of
    compressed and shared extents") was effective only if the compressed
    extents cover a file range with a length that is not a multiple of 16
    pages. That's because the detection of when we reached a different range
    of the file that shares the same compressed extent as the previously
    processed range was done at extent_io.c:__do_contiguous_readpages(),
    which covers subranges with a length up to 16 pages, because
    extent_readpages() groups the pages in clusters no larger than 16 pages.
    So fix this by tracking the start of the previously processed file
    range's extent map at extent_readpages().
    
    The following test case for fstests reproduces the issue:
    
      seq=`basename $0`
      seqres=$RESULT_DIR/$seq
      echo "QA output created by $seq"
      tmp=/tmp/$$
      status=1	# failure is the default!
      trap "_cleanup; exit \$status" 0 1 2 3 15
    
      _cleanup()
      {
          rm -f $tmp.*
      }
    
      # get standard environment, filters and checks
      . ./common/rc
      . ./common/filter
    
      # real QA test starts here
      _need_to_be_root
      _supported_fs btrfs
      _supported_os Linux
      _require_scratch
      _require_cloner
    
      rm -f $seqres.full
    
      test_clone_and_read_compressed_extent()
      {
          local mount_opts=$1
    
          _scratch_mkfs >>$seqres.full 2>&1
          _scratch_mount $mount_opts
    
          # Create our test file with a single extent of 64Kb that is going to
          # be compressed no matter which compression algo is used (zlib/lzo).
          $XFS_IO_PROG -f -c "pwrite -S 0xaa 0K 64K" \
              $SCRATCH_MNT/foo | _filter_xfs_io
    
          # Now clone the compressed extent into an adjacent file offset.
          $CLONER_PROG -s 0 -d $((64 * 1024)) -l $((64 * 1024)) \
              $SCRATCH_MNT/foo $SCRATCH_MNT/foo
    
          echo "File digest before unmount:"
          md5sum $SCRATCH_MNT/foo | _filter_scratch
    
          # Remount the fs or clear the page cache to trigger the bug in
          # btrfs. Because the extent has an uncompressed length that is a
          # multiple of 16 pages, all the pages belonging to the second range
          # of the file (64K to 128K), which points to the same extent as the
          # first range (0K to 64K), had their contents full of zeroes instead
          # of the byte 0xaa. This was a bug exclusively in the read path of
          # compressed extents, the correct data was stored on disk, btrfs
          # just failed to fill in the pages correctly.
          _scratch_remount
    
          echo "File digest after remount:"
          # Must match the digest we got before.
          md5sum $SCRATCH_MNT/foo | _filter_scratch
      }
    
      echo -e "\nTesting with zlib compression..."
      test_clone_and_read_compressed_extent "-o compress=zlib"
    
      _scratch_unmount
    
      echo -e "\nTesting with lzo compression..."
      test_clone_and_read_compressed_extent "-o compress=lzo"
    
      status=0
      exit
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Tested-by: Timofey Titovets <nefelim4ag@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98ef625978667ef284f3671dee77e886d1511a18
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Sep 14 09:09:31 2015 +0100

    Btrfs: fix read corruption of compressed and shared extents
    
    commit 005efedf2c7d0a270ffbe28d8997b03844f3e3e7 upstream.
    
    If a file has a range pointing to a compressed extent, followed by
    another range that points to the same compressed extent and a read
    operation attempts to read both ranges (either completely or part of
    them), the pages that correspond to the second range are incorrectly
    filled with zeroes.
    
    Consider the following example:
    
      File layout
      [0 - 8K]                      [8K - 24K]
          |                             |
          |                             |
       points to extent X,         points to extent X,
       offset 4K, length of 8K     offset 0, length 16K
    
      [extent X, compressed length = 4K uncompressed length = 16K]
    
    If a readpages() call spans the 2 ranges, a single bio to read the extent
    is submitted - extent_io.c:submit_extent_page() would only create a new
    bio to cover the second range pointing to the extent if the extent it
    points to had a different logical address than the extent associated with
    the first range. This has a consequence of the compressed read end io
    handler (compression.c:end_compressed_bio_read()) finish once the extent
    is decompressed into the pages covering the first range, leaving the
    remaining pages (belonging to the second range) filled with zeroes (done
    by compression.c:btrfs_clear_biovec_end()).
    
    So fix this by submitting the current bio whenever we find a range
    pointing to a compressed extent that was preceded by a range with a
    different extent map. This is the simplest solution for this corner
    case. Making the end io callback populate both ranges (or more, if we
    have multiple pointing to the same extent) is a much more complex
    solution since each bio is tightly coupled with a single extent map and
    the extent maps associated to the ranges pointing to the shared extent
    can have different offsets and lengths.
    
    The following test case for fstests triggers the issue:
    
      seq=`basename $0`
      seqres=$RESULT_DIR/$seq
      echo "QA output created by $seq"
      tmp=/tmp/$$
      status=1	# failure is the default!
      trap "_cleanup; exit \$status" 0 1 2 3 15
    
      _cleanup()
      {
          rm -f $tmp.*
      }
    
      # get standard environment, filters and checks
      . ./common/rc
      . ./common/filter
    
      # real QA test starts here
      _need_to_be_root
      _supported_fs btrfs
      _supported_os Linux
      _require_scratch
      _require_cloner
    
      rm -f $seqres.full
    
      test_clone_and_read_compressed_extent()
      {
          local mount_opts=$1
    
          _scratch_mkfs >>$seqres.full 2>&1
          _scratch_mount $mount_opts
    
          # Create a test file with a single extent that is compressed (the
          # data we write into it is highly compressible no matter which
          # compression algorithm is used, zlib or lzo).
          $XFS_IO_PROG -f -c "pwrite -S 0xaa 0K 4K"        \
                          -c "pwrite -S 0xbb 4K 8K"        \
                          -c "pwrite -S 0xcc 12K 4K"       \
                          $SCRATCH_MNT/foo | _filter_xfs_io
    
          # Now clone our extent into an adjacent offset.
          $CLONER_PROG -s $((4 * 1024)) -d $((16 * 1024)) -l $((8 * 1024)) \
              $SCRATCH_MNT/foo $SCRATCH_MNT/foo
    
          # Same as before but for this file we clone the extent into a lower
          # file offset.
          $XFS_IO_PROG -f -c "pwrite -S 0xaa 8K 4K"         \
                          -c "pwrite -S 0xbb 12K 8K"        \
                          -c "pwrite -S 0xcc 20K 4K"        \
                          $SCRATCH_MNT/bar | _filter_xfs_io
    
          $CLONER_PROG -s $((12 * 1024)) -d 0 -l $((8 * 1024)) \
              $SCRATCH_MNT/bar $SCRATCH_MNT/bar
    
          echo "File digests before unmounting filesystem:"
          md5sum $SCRATCH_MNT/foo | _filter_scratch
          md5sum $SCRATCH_MNT/bar | _filter_scratch
    
          # Evicting the inode or clearing the page cache before reading
          # again the file would also trigger the bug - reads were returning
          # all bytes in the range corresponding to the second reference to
          # the extent with a value of 0, but the correct data was persisted
          # (it was a bug exclusively in the read path). The issue happened
          # only if the same readpages() call targeted pages belonging to the
          # first and second ranges that point to the same compressed extent.
          _scratch_remount
    
          echo "File digests after mounting filesystem again:"
          # Must match the same digests we got before.
          md5sum $SCRATCH_MNT/foo | _filter_scratch
          md5sum $SCRATCH_MNT/bar | _filter_scratch
      }
    
      echo -e "\nTesting with zlib compression..."
      test_clone_and_read_compressed_extent "-o compress=zlib"
    
      _scratch_unmount
    
      echo -e "\nTesting with lzo compression..."
      test_clone_and_read_compressed_extent "-o compress=lzo"
    
      status=0
      exit
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: Qu Wenruo<quwenruo@cn.fujitsu.com>
    Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51e828d6a3b9af30a23937252f1686afbb750a8e
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Fri Sep 11 21:44:17 2015 -0400

    btrfs: skip waiting on ordered range for special files
    
    commit a30e577c96f59b1e1678ea5462432b09bf7d5cbc upstream.
    
    In btrfs_evict_inode, we properly truncate the page cache for evicted
    inodes but then we call btrfs_wait_ordered_range for every inode as well.
    It's the right thing to do for regular files but results in incorrect
    behavior for device inodes for block devices.
    
    filemap_fdatawrite_range gets called with inode->i_mapping which gets
    resolved to the block device inode before getting passed to
    wbc_attach_fdatawrite_inode and ultimately to inode_to_bdi.  What happens
    next depends on whether there's an open file handle associated with the
    inode.  If there is, we write to the block device, which is unexpected
    behavior.  If there isn't, we through normally and inode->i_data is used.
    We can also end up racing against open/close which can result in crashes
    when i_mapping points to a block device inode that has been closed.
    
    Since there can't be any page cache associated with special file inodes,
    it's safe to skip the btrfs_wait_ordered_range call entirely and avoid
    the problem.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=100911
    Tested-by: Christoph Biedl <linux-kernel.bfrz@manchmal.in-ulm.de>
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43af64e93407fe866252328a99ec57d3947da511
Author: Gianluca Renzi <gianlucarenzi@eurekelettronica.it>
Date:   Fri Sep 25 21:33:41 2015 +0200

    ASoC: sgtl5000: fix wrong register MIC_BIAS_VOLTAGE setup on probe
    
    commit e256da84a04ea31c3c215997c847609af224e8f4 upstream.
    
    Signed-off-by: Gianluca Renzi <gianlucarenzi@eurekelettronica.it>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cf02fadec0245b6fe13d7d7c8bc7405a38208c9
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Fri Sep 25 11:07:04 2015 +0200

    ASoC: db1200: Fix DAI link format for db1300 and db1550
    
    commit e74679b38c9417c1c524081121cdcdb36f82264d upstream.
    
    Commit b4508d0f95fa ("ASoC: db1200: Use static DAI format setup") switched
    the db1200 driver over to using static DAI format setup instead of a
    callback function. But the commit only added the dai_fmt field to one of
    the three DAI links in the driver. This breaks audio on db1300 and db1550.
    
    Add the two missing dai_fmt settings to fix the issue.
    
    Fixes: b4508d0f95fa ("ASoC: db1200: Use static DAI format setup")
    Reported-by: Manuel Lauss <manuel.lauss@gmail.com>
    Tested-by: Manuel Lauss <manuel.lauss@gmail.com>
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c606b8d1b2c549588ca70435780f05f25b8239eb
Author: Yitian Bu <buyitian@gmail.com>
Date:   Fri Oct 2 15:18:41 2015 +0800

    ASoC: dwc: correct irq clear method
    
    commit 4873867e5f2bd90faad861dd94865099fc3140f3 upstream.
    
    from Designware I2S datasheet, tx/rx XRUN irq is cleared by
    reading register TOR/ROR, rather than by writing into them.
    
    Signed-off-by: Yitian Bu <yitian.bu@tangramtek.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99100337fa0b6654712ca76997cf52c51696e820
Author: Robert Jarzmik <robert.jarzmik@free.fr>
Date:   Tue Sep 15 20:51:31 2015 +0200

    ASoC: fix broken pxa SoC support
    
    commit 3c8f7710c1c44fb650bc29b6ef78ed8b60cfaa28 upstream.
    
    The previous fix of pxa library support, which was introduced to fix the
    library dependency, broke the previous SoC behavior, where a machine
    code binding pxa2xx-ac97 with a coded relied on :
     - sound/soc/pxa/pxa2xx-ac97.c
     - sound/soc/codecs/XXX.c
    
    For example, the mioa701_wm9713.c machine code is currently broken. The
    "select ARM" statement wrongly selects the soc/arm/pxa2xx-ac97 for
    compilation, as per an unfortunate fate SND_PXA2XX_AC97 is both declared
    in sound/arm/Kconfig and sound/soc/pxa/Kconfig.
    
    Fix this by ensuring that SND_PXA2XX_SOC correctly triggers the correct
    pxa2xx-ac97 compilation.
    
    Fixes: 846172dfe33c ("ASoC: fix SND_PXA2XX_LIB Kconfig warning")
    Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca51bf3e5504c8c0df5dd00688ac242de8e2efa6
Author: Robert Jarzmik <robert.jarzmik@free.fr>
Date:   Tue Sep 22 21:20:22 2015 +0200

    ASoC: pxa: pxa2xx-ac97: fix dma requestor lines
    
    commit 8811191fdf7ed02ee07cb8469428158572d355a2 upstream.
    
    PCM receive and transmit DMA requestor lines were reverted, breaking the
    PCM playback interface for PXA platforms using the sound/soc/ variant
    instead of the sound/arm variant.
    
    The commit below shows the inversion in the requestor lines.
    
    Fixes: d65a14587a9b ("ASoC: pxa: use snd_dmaengine_dai_dma_data")
    Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efec92c44e9883d1b13b7785ff4dc2b66872d87b
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Oct 4 22:44:12 2015 +0200

    ALSA: hda - Disable power_save_node for IDT 92HD73xx chips
    
    commit c7e1008048a97148d3aecae742f66fb2f944644c upstream.
    
    The recent widget power saving introduced some unavoidable click
    noises on old IDT 92HD73xx chips while it still seems working on the
    compatible new chips.  In the bugzilla, we tried lots of tests and
    workarounds, but they didn't help much.  So, let's disable the feature
    for these specific chips as the least (but safest) fix.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=104981
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ace476458e5b77bcbefeee0dfff8e3e4a531907b
Author: John Flatness <john@zerocrates.org>
Date:   Fri Oct 2 17:07:49 2015 -0400

    ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1
    
    commit e8ff581f7ac2bc3b8886094b7ca635dcc4d1b0e9 upstream.
    
    The MacBookPro 12,1 has the same setup as the 11 for controlling the
    status of the optical audio light. Simply apply the existing workaround
    to the subsystem ID for the 12,1.
    
    [sorted the fixup entry by tiwai]
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=105401
    Signed-off-by: John Flatness <john@zerocrates.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd555c5e6380e2227beae37e681517afcf4bbbe0
Author: Laura Abbott <labbott@fedoraproject.org>
Date:   Fri Oct 2 11:09:54 2015 -0700

    ALSA: hda: Add dock support for ThinkPad T550
    
    commit d05ea7da0e8f6df3c62cfee75538f347cb3d89ef upstream.
    
    Much like all the other Lenovo laptops, add a quirk to make
    sound work with docking.
    
    Reported-and-tested-by: lacknerflo@gmail.com
    Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7a83056d3f0827ea20ad57228ba5589adc15868
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Oct 5 16:55:09 2015 +0200

    ALSA: synth: Fix conflicting OSS device registration on AWE32
    
    commit 225db5762dc1a35b26850477ffa06e5cd0097243 upstream.
    
    When OSS emulation is loaded on ISA SB AWE32 chip, we get now kernel
    warnings like:
      WARNING: CPU: 0 PID: 2791 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x51/0x80()
      sysfs: cannot create duplicate filename '/devices/isa/sbawe.0/sound/card0/seq-oss-0-0'
    
    It's because both emux synth and opl3 drivers try to register their
    OSS device object with the same static index number 0.  This hasn't
    been a big problem until the recent rewrite of device management code
    (that exposes sysfs at the same time), but it's been an obvious bug.
    
    This patch works around it just by using a different index number of
    emux synth object.  There can be a more elegant way to fix, but it's
    enough for now, as this code won't be touched so often, in anyway.
    
    Reported-and-tested-by: Michael Shell <list1@michaelshell.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2899bcb8c36757a6cb823dc4ebde07f127ea0d6
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Sep 24 17:36:51 2015 +0200

    ALSA: hda - Disable power_save_node for Thinkpads
    
    commit 7f57d803ee03730d570dc59a9e3e4842b58dd5cc upstream.
    
    Lenovo Thinkpads with recent Realtek codecs seem suffering from click
    noises at power transition since the introduction of widget power
    saving in 4.1 kernel.  Although this might be solved by some delays in
    appropriate points, as a quick workaround, just disable the
    power_save_node feature for now.  The gain it gives is relatively
    small, and this makes the situation back to pre 4.1 time.
    
    This patch ended up with a bit more code changes than usual because
    the existing fixup for Thinkpads is highly chained.  Instead of adding
    yet another chain, combine a few of them into a single fixup entry, as
    a gratis cleanup.
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=943982
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51d3a065d242f59ac6a26c31ad9a350cf6e210b6
Author: Mel Gorman <mgorman@techsingularity.net>
Date:   Thu Oct 1 15:36:57 2015 -0700

    mm: hugetlbfs: skip shared VMAs when unmapping private pages to satisfy a fault
    
    commit 2f84a8990ebbe235c59716896e017c6b2ca1200f upstream.
    
    SunDong reported the following on
    
      https://bugzilla.kernel.org/show_bug.cgi?id=103841
    
    	I think I find a linux bug, I have the test cases is constructed. I
    	can stable recurring problems in fedora22(4.0.4) kernel version,
    	arch for x86_64.  I construct transparent huge page, when the parent
    	and child process with MAP_SHARE, MAP_PRIVATE way to access the same
    	huge page area, it has the opportunity to lead to huge page copy on
    	write failure, and then it will munmap the child corresponding mmap
    	area, but then the child mmap area with VM_MAYSHARE attributes, child
    	process munmap this area can trigger VM_BUG_ON in set_vma_resv_flags
    	functions (vma - > vm_flags & VM_MAYSHARE).
    
    There were a number of problems with the report (e.g.  it's hugetlbfs that
    triggers this, not transparent huge pages) but it was fundamentally
    correct in that a VM_BUG_ON in set_vma_resv_flags() can be triggered that
    looks like this
    
    	 vma ffff8804651fd0d0 start 00007fc474e00000 end 00007fc475e00000
    	 next ffff8804651fd018 prev ffff8804651fd188 mm ffff88046b1b1800
    	 prot 8000000000000027 anon_vma           (null) vm_ops ffffffff8182a7a0
    	 pgoff 0 file ffff88106bdb9800 private_data           (null)
    	 flags: 0x84400fb(read|write|shared|mayread|maywrite|mayexec|mayshare|dontexpand|hugetlb)
    	 ------------
    	 kernel BUG at mm/hugetlb.c:462!
    	 SMP
    	 Modules linked in: xt_pkttype xt_LOG xt_limit [..]
    	 CPU: 38 PID: 26839 Comm: map Not tainted 4.0.4-default #1
    	 Hardware name: Dell Inc. PowerEdge R810/0TT6JF, BIOS 2.7.4 04/26/2012
    	 set_vma_resv_flags+0x2d/0x30
    
    The VM_BUG_ON is correct because private and shared mappings have
    different reservation accounting but the warning clearly shows that the
    VMA is shared.
    
    When a private COW fails to allocate a new page then only the process
    that created the VMA gets the page -- all the children unmap the page.
    If the children access that data in the future then they get killed.
    
    The problem is that the same file is mapped shared and private.  During
    the COW, the allocation fails, the VMAs are traversed to unmap the other
    private pages but a shared VMA is found and the bug is triggered.  This
    patch identifies such VMAs and skips them.
    
    Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
    Reported-by: SunDong <sund_sky@126.com>
    Reviewed-by: Michal Hocko <mhocko@suse.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: David Rientjes <rientjes@google.com>
    Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40c96f62047368d4f0a70b505dfd302be0bd82bb
Author: Joseph Qi <joseph.qi@huawei.com>
Date:   Tue Sep 22 14:59:20 2015 -0700

    ocfs2/dlm: fix deadlock when dispatch assert master
    
    commit 012572d4fc2e4ddd5c8ec8614d51414ec6cae02a upstream.
    
    The order of the following three spinlocks should be:
    dlm_domain_lock < dlm_ctxt->spinlock < dlm_lock_resource->spinlock
    
    But dlm_dispatch_assert_master() is called while holding
    dlm_ctxt->spinlock and dlm_lock_resource->spinlock, and then it calls
    dlm_grab() which will take dlm_domain_lock.
    
    Once another thread (for example, dlm_query_join_handler) has already
    taken dlm_domain_lock, and tries to take dlm_ctxt->spinlock deadlock
    happens.
    
    Signed-off-by: Joseph Qi <joseph.qi@huawei.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Mark Fasheh <mfasheh@suse.com>
    Cc: "Junxiao Bi" <junxiao.bi@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 455a35d039d0a84d021721cdde2384ec36c0b6e0
Author: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Date:   Tue Sep 22 14:59:20 2015 -0700

    lib/iommu-common.c: do not try to deref a null iommu->lazy_flush() pointer when n < pool->hint
    
    commit d046b770c9fc36ccb19c27afdb8322220108cbc7 upstream.
    
    The check for invoking iommu->lazy_flush() from iommu_tbl_range_alloc()
    has to be refactored so that we only call ->lazy_flush() if it is
    non-null.
    
    I had a sparc kernel that was crashing when I was trying to process some
    very large perf.data files- the crash happens when the scsi driver calls
    into dma_4v_map_sg and thus the iommu_tbl_range_alloc().
    
    Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Cc: David S. Miller <davem@davemloft.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a36019b8e0a6064614e6227d26c144e88c635ea
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Tue Sep 22 14:59:14 2015 -0700

    mm: migrate: hugetlb: putback destination hugepage to active list
    
    commit 3aaa76e125c1dd58c9b599baa8c6021896874c12 upstream.
    
    Since commit bcc54222309c ("mm: hugetlb: introduce page_huge_active")
    each hugetlb page maintains its active flag to avoid a race condition
    betwe= en multiple calls of isolate_huge_page(), but current kernel
    doesn't set the f= lag on a hugepage allocated by migration because the
    proper putback routine isn= 't called.  This means that users could
    still encounter the race referred to by bcc54222309c in this special
    case, so this patch fixes it.
    
    Fixes: bcc54222309c ("mm: hugetlb: introduce page_huge_active")
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f72f5774c30418cf802a8964398bbc102d08abe5
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Thu Sep 10 16:48:13 2015 +0530

    spi: spidev: fix possible NULL dereference
    
    commit dd85ebf681ef0ee1fc985c353dd45e8b53b5dc1e upstream.
    
    During the last close we are freeing spidev if spidev->spi is NULL, but
    just before checking if spidev->spi is NULL we are dereferencing it.
    Lets add a check there to avoid the NULL dereference.
    
    Fixes: 9169051617df ("spi: spidev: Don't mangle max_speed_hz in underlying spi device")
    Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
    Reviewed-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Tested-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52b5970ab83c557628b91382914e5d0dac5c4c11
Author: Tan, Jui Nee <jui.nee.tan@intel.com>
Date:   Tue Sep 1 10:22:51 2015 +0800

    spi: spi-pxa2xx: Check status register to determine if SSSR_TINT is disabled
    
    commit 02bc933ebb59208f42c2e6305b2c17fd306f695d upstream.
    
    On Intel Baytrail, there is case when interrupt handler get called, no SPI
    message is captured. The RX FIFO is indeed empty when RX timeout pending
    interrupt (SSSR_TINT) happens.
    
    Use the BIOS version where both HSUART and SPI are on the same IRQ. Both
    drivers are using IRQF_SHARED when calling the request_irq function. When
    running two separate and independent SPI and HSUART application that
    generate data traffic on both components, user will see messages like
    below on the console:
    
      pxa2xx-spi pxa2xx-spi.0: bad message state in interrupt handler
    
    This commit will fix this by first checking Receiver Time-out Interrupt,
    if it is disabled, ignore the request and return without servicing.
    
    Signed-off-by: Tan, Jui Nee <jui.nee.tan@intel.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee346d7a9f345f68678a1e19797f72f51b7c04af
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Tue Sep 22 14:32:03 2015 +0300

    spi: xtensa-xtfpga: fix register endianness
    
    commit b0b4855099e301c8603ea37da9a0103a96c2e0b1 upstream.
    
    XTFPGA SPI controller has native endian registers.
    Fix register acessors so that they work in big-endian configurations.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc7a3d707c9784f26048d6f059e7467a8a92e04b
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Sep 6 01:46:54 2015 +0300

    spi: Fix documentation of spi_alloc_master()
    
    commit a394d635193b641f2c86ead5ada5b115d57c51f8 upstream.
    
    Actually, spi_master_put() after spi_alloc_master() must _not_ be followed
    by kfree(). The memory is already freed with the call to spi_master_put()
    through spi_master_class, which registers a release function. Calling both
    spi_master_put() and kfree() results in often nasty (and delayed) crashes
    elsewhere in the kernel, often in the networking stack.
    
    This reverts commit eb4af0f5349235df2e4a5057a72fc8962d00308a.
    
    Link to patch and concerns: https://lkml.org/lkml/2012/9/3/269
    or
    http://lkml.iu.edu/hypermail/linux/kernel/1209.0/00790.html
    
    Alexey Klimov: This revert becomes valid after
    94c69f765f1b4a658d96905ec59928e3e3e07e6a when spi-imx.c
    has been fixed and there is no need to call kfree() so comment
    for spi_alloc_master() should be fixed.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff7cad4b0de99be1828554d8e43662ffdac1dba9
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Mon Sep 28 22:47:42 2015 +0200

    s390/boot/decompression: disable floating point in decompressor
    
    commit adc0b7fbf6fe9967505c0254d9535ec7288186ae upstream.
    
    my gcc 5.1 used an ldgr instruction with a register != 0,2,4,6 for
    spilling/filling into a floating point register in our decompressor.
    
    This will cause an AFP-register data exception as the decompressor
    did not setup the additional floating point registers via cr0.
    That causes a program check loop that looked like a hang with
    one "Uncompressing Linux... " message (directly booted via kvm)
    or a loop of "Uncompressing Linux... " messages (when booted via
    zipl boot loader).
    
    The offending code in my build was
    
       48e400:       e3 c0 af ff ff 71       lay     %r12,-1(%r10)
    -->48e406:       b3 c1 00 1c             ldgr    %f1,%r12
       48e40a:       ec 6c 01 22 02 7f       clij    %r6,2,12,0x48e64e
    
    but gcc could do spilling into an fpr at any function. We can
    simply disable floating point support at that early stage.
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5864e3711404b6c277cd1f69d5ebe197e4f0b95
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Tue Sep 8 15:25:39 2015 +0200

    s390/compat: correct uc_sigmask of the compat signal frame
    
    commit 8d4bd0ed0439dfc780aab801a085961925ed6838 upstream.
    
    The uc_sigmask in the ucontext structure is an array of words to keep
    the 64 signal bits (or 1024 if you ask glibc but the kernel sigset_t
    only has 64 bits).
    
    For 64 bit the sigset_t contains a single 8 byte word, but for 31 bit
    there are two 4 byte words. The compat signal handler code uses a
    simple copy of the 64 bit sigset_t to the 31 bit compat_sigset_t.
    As s390 is a big-endian architecture this is incorrect, the two words
    in the 31 bit sigset_t array need to be swapped.
    
    Reported-by: Stefan Liebler <stli@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8210b9199f66447513b63c9a5aef988ee60c4319
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Sep 29 14:45:09 2015 +0200

    sched/core: Fix TASK_DEAD race in finish_task_switch()
    
    commit 95913d97914f44db2b81271c2e2ebd4d2ac2df83 upstream.
    
    So the problem this patch is trying to address is as follows:
    
            CPU0                            CPU1
    
            context_switch(A, B)
                                            ttwu(A)
                                              LOCK A->pi_lock
                                              A->on_cpu == 0
            finish_task_switch(A)
              prev_state = A->state  <-.
              WMB                      |
              A->on_cpu = 0;           |
              UNLOCK rq0->lock         |
                                       |    context_switch(C, A)
                                       `--  A->state = TASK_DEAD
              prev_state == TASK_DEAD
                put_task_struct(A)
                                            context_switch(A, C)
                                            finish_task_switch(A)
                                              A->state == TASK_DEAD
                                                put_task_struct(A)
    
    The argument being that the WMB will allow the load of A->state on CPU0
    to cross over and observe CPU1's store of A->state, which will then
    result in a double-drop and use-after-free.
    
    Now the comment states (and this was true once upon a long time ago)
    that we need to observe A->state while holding rq->lock because that
    will order us against the wakeup; however the wakeup will not in fact
    acquire (that) rq->lock; it takes A->pi_lock these days.
    
    We can obviously fix this by upgrading the WMB to an MB, but that is
    expensive, so we'd rather avoid that.
    
    The alternative this patch takes is: smp_store_release(&A->on_cpu, 0),
    which avoids the MB on some archs, but not important ones like ARM.
    
    Reported-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Cc: manfred@colorfullife.com
    Cc: will.deacon@arm.com
    Fixes: e4a52bcb9a18 ("sched: Remove rq->lock from the first half of ttwu()")
    Link: http://lkml.kernel.org/r/20150929124509.GG3816@twins.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 438437983e0cefa439e9b161f74b805d0416eec0
Author: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Date:   Fri Jul 31 13:36:21 2015 +0200

    leds/led-class: Add missing put_device()
    
    commit e5b5a61fcb3743f1dacf9e20d28f48423cecf0c1 upstream.
    
    Devices found by class_find_device must be freed with put_device().
    Otherwise the reference count will not work properly.
    
    Fixes: a96aa64cb572 ("leds/led-class: Handle LEDs with the same name")
    Reported-by: Alan Tull <delicious.quinoa@gmail.com>
    Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cdd2beb9a3627de301bc03474e0805e4b53efba
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Fri Sep 25 11:59:52 2015 +0200

    x86/xen: Support kexec/kdump in HVM guests by doing a soft reset
    
    commit 0b34a166f291d255755be46e43ed5497cdd194f2 upstream.
    
    Currently there is a number of issues preventing PVHVM Xen guests from
    doing successful kexec/kdump:
    
      - Bound event channels.
      - Registered vcpu_info.
      - PIRQ/emuirq mappings.
      - shared_info frame after XENMAPSPACE_shared_info operation.
      - Active grant mappings.
    
    Basically, newly booted kernel stumbles upon already set up Xen
    interfaces and there is no way to reestablish them. In Xen-4.7 a new
    feature called 'soft reset' is coming. A guest performing kexec/kdump
    operation is supposed to call SCHEDOP_shutdown hypercall with
    SHUTDOWN_soft_reset reason before jumping to new kernel. Hypervisor
    (with some help from toolstack) will do full domain cleanup (but
    keeping its memory and vCPU contexts intact) returning the guest to
    the state it had when it was first booted and thus allowing it to
    start over.
    
    Doing SHUTDOWN_soft_reset on Xen hypervisors which don't support it is
    probably OK as by default all unknown shutdown reasons cause domain
    destroy with a message in toolstack log: 'Unknown shutdown reason code
    5. Destroying domain.'  which gives a clue to what the problem is and
    eliminates false expectations.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b05730b2e8a43445244e436d9715b1ab1dd59c81
Author: Stephen Smalley <sds@tycho.nsa.gov>
Date:   Thu Oct 1 09:04:22 2015 -0400

    x86/mm: Set NX on gap between __ex_table and rodata
    
    commit ab76f7b4ab2397ffdd2f1eb07c55697d19991d10 upstream.
    
    Unused space between the end of __ex_table and the start of
    rodata can be left W+x in the kernel page tables.  Extend the
    setting of the NX bit to cover this gap by starting from
    text_end rather than rodata_start.
    
      Before:
      ---[ High Kernel Mapping ]---
      0xffffffff80000000-0xffffffff81000000          16M                               pmd
      0xffffffff81000000-0xffffffff81600000           6M     ro         PSE     GLB x  pmd
      0xffffffff81600000-0xffffffff81754000        1360K     ro                 GLB x  pte
      0xffffffff81754000-0xffffffff81800000         688K     RW                 GLB x  pte
      0xffffffff81800000-0xffffffff81a00000           2M     ro         PSE     GLB NX pmd
      0xffffffff81a00000-0xffffffff81b3b000        1260K     ro                 GLB NX pte
      0xffffffff81b3b000-0xffffffff82000000        4884K     RW                 GLB NX pte
      0xffffffff82000000-0xffffffff82200000           2M     RW         PSE     GLB NX pmd
      0xffffffff82200000-0xffffffffa0000000         478M                               pmd
    
      After:
      ---[ High Kernel Mapping ]---
      0xffffffff80000000-0xffffffff81000000          16M                               pmd
      0xffffffff81000000-0xffffffff81600000           6M     ro         PSE     GLB x  pmd
      0xffffffff81600000-0xffffffff81754000        1360K     ro                 GLB x  pte
      0xffffffff81754000-0xffffffff81800000         688K     RW                 GLB NX pte
      0xffffffff81800000-0xffffffff81a00000           2M     ro         PSE     GLB NX pmd
      0xffffffff81a00000-0xffffffff81b3b000        1260K     ro                 GLB NX pte
      0xffffffff81b3b000-0xffffffff82000000        4884K     RW                 GLB NX pte
      0xffffffff82000000-0xffffffff82200000           2M     RW         PSE     GLB NX pmd
      0xffffffff82200000-0xffffffffa0000000         478M                               pmd
    
    Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Link: http://lkml.kernel.org/r/1443704662-3138-1-git-send-email-sds@tycho.nsa.gov
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0caabec9306b92288d8146a5e4454b968af009a
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Sep 30 08:38:22 2015 +0000

    x86/process: Add proper bound checks in 64bit get_wchan()
    
    commit eddd3826a1a0190e5235703d1e666affa4d13b96 upstream.
    
    Dmitry Vyukov reported the following using trinity and the memory
    error detector AddressSanitizer
    (https://code.google.com/p/address-sanitizer/wiki/AddressSanitizerForKernel).
    
    [ 124.575597] ERROR: AddressSanitizer: heap-buffer-overflow on
    address ffff88002e280000
    [ 124.576801] ffff88002e280000 is located 131938492886538 bytes to
    the left of 28857600-byte region [ffffffff81282e0a, ffffffff82e0830a)
    [ 124.578633] Accessed by thread T10915:
    [ 124.579295] inlined in describe_heap_address
    ./arch/x86/mm/asan/report.c:164
    [ 124.579295] #0 ffffffff810dd277 in asan_report_error
    ./arch/x86/mm/asan/report.c:278
    [ 124.580137] #1 ffffffff810dc6a0 in asan_check_region
    ./arch/x86/mm/asan/asan.c:37
    [ 124.581050] #2 ffffffff810dd423 in __tsan_read8 ??:0
    [ 124.581893] #3 ffffffff8107c093 in get_wchan
    ./arch/x86/kernel/process_64.c:444
    
    The address checks in the 64bit implementation of get_wchan() are
    wrong in several ways:
    
     - The lower bound of the stack is not the start of the stack
       page. It's the start of the stack page plus sizeof (struct
       thread_info)
    
     - The upper bound must be:
    
           top_of_stack - TOP_OF_KERNEL_STACK_PADDING - 2 * sizeof(unsigned long).
    
       The 2 * sizeof(unsigned long) is required because the stack pointer
       points at the frame pointer. The layout on the stack is: ... IP FP
       ... IP FP. So we need to make sure that both IP and FP are in the
       bounds.
    
    Fix the bound checks and get rid of the mix of numeric constants, u64
    and unsigned long. Making all unsigned long allows us to use the same
    function for 32bit as well.
    
    Use READ_ONCE() when accessing the stack. This does not prevent a
    concurrent wakeup of the task and the stack changing, but at least it
    avoids TOCTOU.
    
    Also check task state at the end of the loop. Again that does not
    prevent concurrent changes, but it avoids walking for nothing.
    
    Add proper comments while at it.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Reported-by: Sasha Levin <sasha.levin@oracle.com>
    Based-on-patch-from: Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Borislav Petkov <bp@alien8.de>
    Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Cc: Kostya Serebryany <kcc@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: kasan-dev <kasan-dev@googlegroups.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>
    Link: http://lkml.kernel.org/r/20150930083302.694788319@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18b756c4d6137c541252843c04667b6d6655dea4
Author: Lee, Chun-Yi <joeyli.kernel@gmail.com>
Date:   Tue Sep 29 20:58:57 2015 +0800

    x86/kexec: Fix kexec crash in syscall kexec_file_load()
    
    commit e3c41e37b0f4b18cbd4dac76cbeece5a7558b909 upstream.
    
    The original bug is a page fault crash that sometimes happens
    on big machines when preparing ELF headers:
    
        BUG: unable to handle kernel paging request at ffffc90613fc9000
        IP: [<ffffffff8103d645>] prepare_elf64_ram_headers_callback+0x165/0x260
    
    The bug is caused by us under-counting the number of memory ranges
    and subsequently not allocating enough ELF header space for them.
    The bug is typically masked on smaller systems, because the ELF header
    allocation is rounded up to the next page.
    
    This patch modifies the code in fill_up_crash_elf_data() by using
    walk_system_ram_res() instead of walk_system_ram_range() to correctly
    count the max number of crash memory ranges. That's because the
    walk_system_ram_range() filters out small memory regions that
    reside in the same page, but walk_system_ram_res() does not.
    
    Here's how I found the bug:
    
    After tracing prepare_elf64_headers() and prepare_elf64_ram_headers_callback(),
    the code uses walk_system_ram_res() to fill-in crash memory regions information
    to the program header, so it counts those small memory regions that
    reside in a page area.
    
    But, when the kernel was using walk_system_ram_range() in
    fill_up_crash_elf_data() to count the number of crash memory regions,
    it filters out small regions.
    
    I printed those small memory regions, for example:
    
      kexec: Get nr_ram ranges. vaddr=0xffff880077592258 paddr=0x77592258, sz=0xdc0
    
    Based on the code in walk_system_ram_range(), this memory region
    will be filtered out:
    
      pfn = (0x77592258 + 0x1000 - 1) >> 12 = 0x77593
      end_pfn = (0x77592258 + 0xfc0 -1 + 1) >> 12 = 0x77593
      end_pfn - pfn = 0x77593 - 0x77593 = 0  <=== if (end_pfn > pfn) is FALSE
    
    So, the max_nr_ranges that's counted by the kernel doesn't include
    small memory regions - causing us to under-allocate the required space.
    That causes the page fault crash that happens in a later code path
    when preparing ELF headers.
    
    This bug is not easy to reproduce on small machines that have few
    CPUs, because the allocated page aligned ELF buffer has more free
    space to cover those small memory regions' PT_LOAD headers.
    
    Signed-off-by: Lee, Chun-Yi <jlee@suse.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Jiang Liu <jiang.liu@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: Takashi Iwai <tiwai@suse.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Viresh Kumar <viresh.kumar@linaro.org>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: kexec@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Link: http://lkml.kernel.org/r/1443531537-29436-1-git-send-email-jlee@suse.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6adcb2b15e3d534f7e34c197c9f314de25810729
Author: Matt Fleming <matt.fleming@intel.com>
Date:   Fri Sep 25 23:02:18 2015 +0100

    x86/efi: Fix boot crash by mapping EFI memmap entries bottom-up at runtime, instead of top-down
    
    commit a5caa209ba9c29c6421292e7879d2387a2ef39c9 upstream.
    
    Beginning with UEFI v2.5 EFI_PROPERTIES_TABLE was introduced
    that signals that the firmware PE/COFF loader supports splitting
    code and data sections of PE/COFF images into separate EFI
    memory map entries. This allows the kernel to map those regions
    with strict memory protections, e.g. EFI_MEMORY_RO for code,
    EFI_MEMORY_XP for data, etc.
    
    Unfortunately, an unwritten requirement of this new feature is
    that the regions need to be mapped with the same offsets
    relative to each other as observed in the EFI memory map. If
    this is not done crashes like this may occur,
    
      BUG: unable to handle kernel paging request at fffffffefe6086dd
      IP: [<fffffffefe6086dd>] 0xfffffffefe6086dd
      Call Trace:
       [<ffffffff8104c90e>] efi_call+0x7e/0x100
       [<ffffffff81602091>] ? virt_efi_set_variable+0x61/0x90
       [<ffffffff8104c583>] efi_delete_dummy_variable+0x63/0x70
       [<ffffffff81f4e4aa>] efi_enter_virtual_mode+0x383/0x392
       [<ffffffff81f37e1b>] start_kernel+0x38a/0x417
       [<ffffffff81f37495>] x86_64_start_reservations+0x2a/0x2c
       [<ffffffff81f37582>] x86_64_start_kernel+0xeb/0xef
    
    Here 0xfffffffefe6086dd refers to an address the firmware
    expects to be mapped but which the OS never claimed was mapped.
    The issue is that included in these regions are relative
    addresses to other regions which were emitted by the firmware
    toolchain before the "splitting" of sections occurred at
    runtime.
    
    Needless to say, we don't satisfy this unwritten requirement on
    x86_64 and instead map the EFI memory map entries in reverse
    order. The above crash is almost certainly triggerable with any
    kernel newer than v3.13 because that's when we rewrote the EFI
    runtime region mapping code, in commit d2f7cbe7b26a ("x86/efi:
    Runtime services virtual mapping"). For kernel versions before
    v3.13 things may work by pure luck depending on the
    fragmentation of the kernel virtual address space at the time we
    map the EFI regions.
    
    Instead of mapping the EFI memory map entries in reverse order,
    where entry N has a higher virtual address than entry N+1, map
    them in the same order as they appear in the EFI memory map to
    preserve this relative offset between regions.
    
    This patch has been kept as small as possible with the intention
    that it should be applied aggressively to stable and
    distribution kernels. It is very much a bugfix rather than
    support for a new feature, since when EFI_PROPERTIES_TABLE is
    enabled we must map things as outlined above to even boot - we
    have no way of asking the firmware not to split the code/data
    regions.
    
    In fact, this patch doesn't even make use of the more strict
    memory protections available in UEFI v2.5. That will come later.
    
    Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Matt Fleming <matt.fleming@intel.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Chun-Yi <jlee@suse.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: James Bottomley <JBottomley@Odin.com>
    Cc: Lee, Chun-Yi <jlee@suse.com>
    Cc: Leif Lindholm <leif.lindholm@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matthew Garrett <mjg59@srcf.ucam.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Link: http://lkml.kernel.org/r/1443218539-7610-2-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6a4aed83c19f98741e081e79dbb36472aefa57a
Author: Dirk Müller <dmueller@suse.com>
Date:   Thu Oct 1 13:43:42 2015 +0200

    Use WARN_ON_ONCE for missing X86_FEATURE_NRIPS
    
    commit d2922422c48df93f3edff7d872ee4f3191fefb08 upstream.
    
    The cpu feature flags are not ever going to change, so warning
    everytime can cause a lot of kernel log spam
    (in our case more than 10GB/hour).
    
    The warning seems to only occur when nested virtualization is
    enabled, so it's probably triggered by a KVM bug.  This is a
    sensible and safe change anyway, and the KVM bug fix might not
    be suitable for stable releases anyway.
    
    Signed-off-by: Dirk Mueller <dmueller@suse.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f2a8445b8082586cfc83ee640494bb1a51c157d
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sun Sep 20 16:32:05 2015 -0700

    x86/nmi/64: Fix a paravirt stack-clobbering bug in the NMI code
    
    commit 83c133cf11fb0e68a51681447e372489f052d40e upstream.
    
    The NMI entry code that switches to the normal kernel stack needs to
    be very careful not to clobber any extra stack slots on the NMI
    stack.  The code is fine under the assumption that SWAPGS is just a
    normal instruction, but that assumption isn't really true.  Use
    SWAPGS_UNSAFE_STACK instead.
    
    This is part of a fix for some random crashes that Sasha saw.
    
    Fixes: 9b6e6a8334d5 ("x86/nmi/64: Switch stacks on userspace NMI entry")
    Reported-and-tested-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Link: http://lkml.kernel.org/r/974bc40edffdb5c2950a5c4977f821a446b76178.1442791737.git.luto@kernel.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3eb2816d05082015e67f9275c5cc401c2eef43c
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sun Sep 20 16:32:04 2015 -0700

    x86/paravirt: Replace the paravirt nop with a bona fide empty function
    
    commit fc57a7c68020dcf954428869eafd934c0ab1536f upstream.
    
    PARAVIRT_ADJUST_EXCEPTION_FRAME generates this code (using nmi as an
    example, trimmed for readability):
    
        ff 15 00 00 00 00       callq  *0x0(%rip)        # 2796 <nmi+0x6>
                  2792: R_X86_64_PC32     pv_irq_ops+0x2c
    
    That's a call through a function pointer to regular C function that
    does nothing on native boots, but that function isn't protected
    against kprobes, isn't marked notrace, and is certainly not
    guaranteed to preserve any registers if the compiler is feeling
    perverse.  This is bad news for a CLBR_NONE operation.
    
    Of course, if everything works correctly, once paravirt ops are
    patched, it gets nopped out, but what if we hit this code before
    paravirt ops are patched in?  This can potentially cause breakage
    that is very difficult to debug.
    
    A more subtle failure is possible here, too: if _paravirt_nop uses
    the stack at all (even just to push RBP), it will overwrite the "NMI
    executing" variable if it's called in the NMI prologue.
    
    The Xen case, perhaps surprisingly, is fine, because it's already
    written in asm.
    
    Fix all of the cases that default to paravirt_nop (including
    adjust_exception_frame) with a big hammer: replace paravirt_nop with
    an asm function that is just a ret instruction.
    
    The Xen case may have other problems, so document them.
    
    This is part of a fix for some random crashes that Sasha saw.
    
    Reported-and-tested-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Link: http://lkml.kernel.org/r/8f5d2ba295f9d73751c33d97fda03e0495d9ade0.1442791737.git.luto@kernel.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6491ecad829ef7e49a8a7cf3eb4b8189d926efa
Author: David Woodhouse <dwmw2@infradead.org>
Date:   Wed Sep 16 14:10:03 2015 +0100

    x86/platform: Fix Geode LX timekeeping in the generic x86 build
    
    commit 03da3ff1cfcd7774c8780d2547ba0d995f7dc03d upstream.
    
    In 2007, commit 07190a08eef36 ("Mark TSC on GeodeLX reliable")
    bypassed verification of the TSC on Geode LX. However, this code
    (now in the check_system_tsc_reliable() function in
    arch/x86/kernel/tsc.c) was only present if CONFIG_MGEODE_LX was
    set.
    
    OpenWRT has recently started building its generic Geode target
    for Geode GX, not LX, to include support for additional
    platforms. This broke the timekeeping on LX-based devices,
    because the TSC wasn't marked as reliable:
    https://dev.openwrt.org/ticket/20531
    
    By adding a runtime check on is_geode_lx(), we can also include
    the fix if CONFIG_MGEODEGX1 or CONFIG_X86_GENERIC are set, thus
    fixing the problem.
    
    Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
    Cc: Andres Salomon <dilinger@queued.net>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Marcelo Tosatti <marcelo@kvack.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1442409003.131189.87.camel@infradead.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 341711093165b2e33c353480f123e5a0c69c91b5
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Sep 3 12:34:55 2015 +0200

    x86/alternatives: Make optimize_nops() interrupt safe and synced
    
    commit 66c117d7fa2ae429911e60d84bf31a90b2b96189 upstream.
    
    Richard reported the following crash:
    
    [    0.036000] BUG: unable to handle kernel paging request at 55501e06
    [    0.036000] IP: [<c0aae48b>] common_interrupt+0xb/0x38
    [    0.036000] Call Trace:
    [    0.036000]  [<c0409c80>] ? add_nops+0x90/0xa0
    [    0.036000]  [<c040a054>] apply_alternatives+0x274/0x630
    
    Chuck decoded:
    
     "  0:   8d 90 90 83 04 24       lea    0x24048390(%eax),%edx
        6:   80 fc 0f                cmp    $0xf,%ah
        9:   a8 0f                   test   $0xf,%al
     >> b:   a0 06 1e 50 55          mov    0x55501e06,%al
       10:   57                      push   %edi
       11:   56                      push   %esi
    
     Interrupt 0x30 occurred while the alternatives code was replacing the
     initial 0x90,0x90,0x90 NOPs (from the ASM_CLAC macro) with the
     optimized version, 0x8d,0x76,0x00. Only the first byte has been
     replaced so far, and it makes a mess out of the insn decoding."
    
    optimize_nops() is buggy in two aspects:
    
    - It's not disabling interrupts across the modification
    - It's lacking a sync_core() call
    
    Add both.
    
    Fixes: 4fd4b6e5537c 'x86/alternatives: Use optimized NOPs for padding'
    Reported-and-tested-by: "Richard W.M. Jones" <rjones@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Richard W.M. Jones <rjones@redhat.com>
    Cc: Chuck Ebbert <cebbert.lkml@gmail.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Link: http://lkml.kernel.org/r/alpine.DEB.2.11.1509031232340.15006@nanos
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d97c1eca67cf264d1ac8f5abe5eba7221c26b1a8
Author: Shaohua Li <shli@fb.com>
Date:   Thu Jul 30 16:24:43 2015 -0700

    x86/apic: Serialize LVTT and TSC_DEADLINE writes
    
    commit 5d7c631d926b59aa16f3c56eaeb83f1036c81dc7 upstream.
    
    The APIC LVTT register is MMIO mapped but the TSC_DEADLINE register is an
    MSR. The write to the TSC_DEADLINE MSR is not serializing, so it's not
    guaranteed that the write to LVTT has reached the APIC before the
    TSC_DEADLINE MSR is written. In such a case the write to the MSR is
    ignored and as a consequence the local timer interrupt never fires.
    
    The SDM decribes this issue for xAPIC and x2APIC modes. The
    serialization methods recommended by the SDM differ.
    
    xAPIC:
     "1. Memory-mapped write to LVT Timer Register, setting bits 18:17 to 10b.
      2. WRMSR to the IA32_TSC_DEADLINE MSR a value much larger than current time-stamp counter.
      3. If RDMSR of the IA32_TSC_DEADLINE MSR returns zero, go to step 2.
      4. WRMSR to the IA32_TSC_DEADLINE MSR the desired deadline."
    
    x2APIC:
     "To allow for efficient access to the APIC registers in x2APIC mode,
      the serializing semantics of WRMSR are relaxed when writing to the
      APIC registers. Thus, system software should not use 'WRMSR to APIC
      registers in x2APIC mode' as a serializing instruction. Read and write
      accesses to the APIC registers will occur in program order. A WRMSR to
      an APIC register may complete before all preceding stores are globally
      visible; software can prevent this by inserting a serializing
      instruction, an SFENCE, or an MFENCE before the WRMSR."
    
    The xAPIC method is to just wait for the memory mapped write to hit
    the LVTT by checking whether the MSR write has reached the hardware.
    There is no reason why a proper MFENCE after the memory mapped write would
    not do the same. Andi Kleen confirmed that MFENCE is sufficient for the
    xAPIC case as well.
    
    Issue MFENCE before writing to the TSC_DEADLINE MSR. This can be done
    unconditionally as all CPUs which have TSC_DEADLINE also have MFENCE
    support.
    
    [ tglx: Massaged the changelog ]
    
    Signed-off-by: Shaohua Li <shli@fb.com>
    Reviewed-by: Ingo Molnar <mingo@kernel.org>
    Cc: <Kernel-team@fb.com>
    Cc: <lenb@kernel.org>
    Cc: <fenghua.yu@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Link: http://lkml.kernel.org/r/20150909041352.GA2059853@devbig257.prn2.facebook.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c46eada1470d4af205ffa3cf7aad8d909792af7f
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Mon Sep 28 18:57:03 2015 +0300

    dmaengine: dw: properly read DWC_PARAMS register
    
    commit 6bea0f6d1c47b07be88dfd93f013ae05fcb3d8bf upstream.
    
    In case we have less than maximum allowed channels (8) and autoconfiguration is
    enabled the DWC_PARAMS read is wrong because it uses different arithmetic to
    what is needed for channel priority setup.
    
    Re-do the caclulations properly. This now works on AVR32 board well.
    
    Fixes: fed2574b3c9f (dw_dmac: introduce software emulation of LLP transfers)
    Cc: yitian.bu@tangramtek.com
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb218995a9031ed04fb5e0566fac5ab21bfe4b4e
Author: Jeff Moyer <jmoyer@redhat.com>
Date:   Fri Aug 14 16:15:32 2015 -0400

    blockdev: don't set S_DAX for misaligned partitions
    
    commit f0b2e563bc419df7c1b3d2f494574c25125f6aed upstream.
    
    The dax code doesn't currently support misaligned partitions,
    so disable O_DIRECT via dax until such time as that support
    materializes.
    
    Suggested-by: Boaz Harrosh <boaz@plexistor.com>
    Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ae7e1459597cbd0c30972f1c29a1b1c0d5825c4
Author: Felipe F. Tonello <eu@felipetonello.com>
Date:   Wed Sep 16 18:40:32 2015 +0100

    ARM: dts: fix usb pin control for imx-rex dts
    
    commit 0af822110871400908d5b6f83a8908c45f881d8f upstream.
    
    This fixes a duplicated pin control causing this error:
    
    imx6q-pinctrl 20e0000.iomuxc: pin MX6Q_PAD_GPIO_1 already
    requested by regulators:regulator@2; cannot claim for 2184000.usb
    imx6q-pinctrl 20e0000.iomuxc: pin-137 (2184000.usb) status -22
    imx6q-pinctrl 20e0000.iomuxc: could not request pin 137
    (MX6Q_PAD_GPIO_1) from group usbotggrp  on device 20e0000.iomuxc
    imx_usb 2184000.usb: Error applying setting, reverse things
    back
    imx6q-pinctrl 20e0000.iomuxc: pin MX6Q_PAD_EIM_D31 already
    requested by regulators:regulator@1; cannot claim for 2184200.usb
    imx6q-pinctrl 20e0000.iomuxc: pin-52 (2184200.usb) status -22
    imx6q-pinctrl 20e0000.iomuxc: could not request pin 52 (MX6Q_PAD_EIM_D31)
    from group usbh1grp  on device 20e0000.iomuxc
    imx_usb 2184200.usb: Error applying setting, reverse things
    back
    
    Signed-off-by: Felipe F. Tonello <eu@felipetonello.com>
    Fixes: e2047e33f2bd ("ARM: dts: add initial Rex Pro board support")
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d46cd96d855aa21e0c22c70534491ac3437864fe
Author: Chanho Park <parkch98@gmail.com>
Date:   Tue Sep 1 23:17:03 2015 +0900

    ARM: EXYNOS: reset Little cores when cpu is up
    
    commit 833b5794e3303cc97a0d2d4ba97f26cc9d9b4b79 upstream.
    
    The cpu booting of exynos5422 has been still broken since we discussed
    it in last year[1]. This patch is inspired from Odroid XU3
    code (Actually, it was from samsung exynos vendor kernel)[2]. This weird
    reset code was founded exynos5420 octa cores series SoCs and only
    required for the first boot core is the Little core (Cortex A7).
    Some of the exynos5420 boards and all of the exynos5422 boards will require
    this code.
    
    There is two ways to check the little core is the first cpu. One is
    checking GPG2CON[1] GPIO value and the other is checking the cluster
    number of the first cpu. I selected the latter because it's more easier
    than the former.
    
    [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-June/350632.html
    [2] https://patchwork.kernel.org/patch/6782891/
    
    Cc: Kevin Hilman <khilman@kernel.org>
    Cc: Javier Martinez Canillas <javier@osg.samsung.com>
    Cc: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Tested-by: Kevin Hilman <khilman@linaro.org>
    Signed-off-by: Chanho Park <parkch98@gmail.com>
    [k.kozlowski: Adding stable for v4.1+, reformat comment]
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49d8fc8a402190421759e665b82988229de537b7
Author: Carl Frederik Werner <frederik@cfbw.eu>
Date:   Wed Sep 2 10:07:57 2015 +0900

    ARM: dts: omap3-beagle: make i2c3, ddc and tfp410 gpio work again
    
    commit 3a2fa775bd1d0579113666c1a2e37654a34018a0 upstream.
    
    Let's fix pinmux address of gpio 170 used by tfp410 powerdown-gpio.
    
    According to the OMAP35x Technical Reference Manual
      CONTROL_PADCONF_I2C3_SDA[15:0]  0x480021C4 mode0: i2c3_sda
      CONTROL_PADCONF_I2C3_SDA[31:16] 0x480021C4 mode4: gpio_170
    the pinmux address of gpio 170 must be 0x480021C6.
    
    The former wrong address broke i2c3 (used by hdmi ddc), resulting in
    kernel message:
      omap_i2c 48060000.i2c: controller timed out
    
    Fixes: 8cecf52befd7 ("ARM: omap3-beagle.dts: add display information")
    Signed-off-by: Carl Frederik Werner <frederik@cfbw.eu>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b43dbfb4b38d0c414899285fe94c1bdc8db39706
Author: Grazvydas Ignotas <notasas@gmail.com>
Date:   Wed Sep 16 01:34:31 2015 +0300

    ARM: dts: omap5-uevm.dts: fix i2c5 pinctrl offsets
    
    commit 1dbdad75074d16c3e3005180f81a01cdc04a7872 upstream.
    
    The i2c5 pinctrl offsets are wrong. If the bootloader doesn't set the
    pins up, communication with tca6424a doesn't work (controller timeouts)
    and it is not possible to enable HDMI.
    
    Fixes: 9be495c42609 ("ARM: dts: omap5-evm: Add I2c pinctrl data")
    Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca4104a08c62d29b43d30b8058507b2dd35ef5f2
Author: Doug Anderson <armlinux@m.disordat.com>
Date:   Wed Aug 26 18:26:49 2015 +0100

    ARM: 8425/1: kgdb: Don't try to stop the machine when setting breakpoints
    
    commit 7ae85dc7687c7e7119053d83d02c560ea217b772 upstream.
    
    In (23a4e40 arm: kgdb: Handle read-only text / modules) we moved to
    using patch_text() to set breakpoints so that we could handle the case
    when we had CONFIG_DEBUG_RODATA.  That patch used patch_text().
    Unfortunately, patch_text() assumes that we're not in atomic context
    when it runs since it needs to grab a mutex and also wait for other
    CPUs to stop (which it does with a completion).
    
    This would result in a stack crawl if you had
    CONFIG_DEBUG_ATOMIC_SLEEP and tried to set a breakpoint in kgdb.  The
    crawl looked something like:
    
     BUG: scheduling while atomic: swapper/0/0/0x00010007
     CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.2.0-rc7-00133-geb63b34 #1073
     Hardware name: Rockchip (Device Tree)
      (unwind_backtrace) from [<c00133d4>] (show_stack+0x20/0x24)
      (show_stack) from [<c05400e8>] (dump_stack+0x84/0xb8)
      (dump_stack) from [<c004913c>] (__schedule_bug+0x54/0x6c)
      (__schedule_bug) from [<c054065c>] (__schedule+0x80/0x668)
      (__schedule) from [<c0540cfc>] (schedule+0xb8/0xd4)
      (schedule) from [<c0543a3c>] (schedule_timeout+0x2c/0x234)
      (schedule_timeout) from [<c05417c0>] (wait_for_common+0xf4/0x188)
      (wait_for_common) from [<c0541874>] (wait_for_completion+0x20/0x24)
      (wait_for_completion) from [<c00a0104>] (__stop_cpus+0x58/0x70)
      (__stop_cpus) from [<c00a0580>] (stop_cpus+0x3c/0x54)
      (stop_cpus) from [<c00a06c4>] (__stop_machine+0xcc/0xe8)
      (__stop_machine) from [<c00a0714>] (stop_machine+0x34/0x44)
      (stop_machine) from [<c00173e8>] (patch_text+0x28/0x34)
      (patch_text) from [<c001733c>] (kgdb_arch_set_breakpoint+0x40/0x4c)
      (kgdb_arch_set_breakpoint) from [<c00a0d68>] (kgdb_validate_break_address+0x2c/0x60)
      (kgdb_validate_break_address) from [<c00a0e90>] (dbg_set_sw_break+0x1c/0xdc)
      (dbg_set_sw_break) from [<c00a2e88>] (gdb_serial_stub+0x9c4/0xba4)
      (gdb_serial_stub) from [<c00a11cc>] (kgdb_cpu_enter+0x1f8/0x60c)
      (kgdb_cpu_enter) from [<c00a18cc>] (kgdb_handle_exception+0x19c/0x1d0)
      (kgdb_handle_exception) from [<c0016f7c>] (kgdb_compiled_brk_fn+0x30/0x3c)
      (kgdb_compiled_brk_fn) from [<c00091a4>] (do_undefinstr+0x1a4/0x20c)
      (do_undefinstr) from [<c001400c>] (__und_svc_finish+0x0/0x34)
    
    It turns out that when we're in kgdb all the CPUs are stopped anyway
    so there's no reason we should be calling patch_text().  We can
    instead directly call __patch_text() which assumes that CPUs have
    already been stopped.
    
    Fixes: 23a4e4050ba9 ("arm: kgdb: Handle read-only text / modules")
    Reported-by: Aapo Vienamo <avienamo@nvidia.com>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c014e0ffd0ddaff75e59a77b463b5c852ecfd8cf
Author: Paul Bolle <pebolle@tiscali.nl>
Date:   Fri Jul 31 14:08:58 2015 +0200

    windfarm: decrement client count when unregistering
    
    commit fe2b592173ff0274e70dc44d1d28c19bb995aa7c upstream.
    
    wf_unregister_client() increments the client count when a client
    unregisters. That is obviously incorrect. Decrement that client count
    instead.
    
    Fixes: 75722d3992f5 ("[PATCH] ppc64: Thermal control for SMU based machines")
    
    Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd9af2c0f0b32f7783a0b66c2949932de87ab36f
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Thu Sep 3 13:24:40 2015 +0100

    ARM: 8429/1: disable GCC SRA optimization
    
    commit a077224fd35b2f7fbc93f14cf67074fc792fbac2 upstream.
    
    While working on the 32-bit ARM port of UEFI, I noticed a strange
    corruption in the kernel log. The following snprintf() statement
    (in drivers/firmware/efi/efi.c:efi_md_typeattr_format())
    
    	snprintf(pos, size, "|%3s|%2s|%2s|%2s|%3s|%2s|%2s|%2s|%2s]",
    
    was producing the following output in the log:
    
    	|    |   |   |   |    |WB|WT|WC|UC]
    	|    |   |   |   |    |WB|WT|WC|UC]
    	|    |   |   |   |    |WB|WT|WC|UC]
    	|RUN|   |   |   |    |WB|WT|WC|UC]*
    	|RUN|   |   |   |    |WB|WT|WC|UC]*
    	|    |   |   |   |    |WB|WT|WC|UC]
    	|RUN|   |   |   |    |WB|WT|WC|UC]*
    	|    |   |   |   |    |WB|WT|WC|UC]
    	|RUN|   |   |   |    |   |   |   |UC]
    	|RUN|   |   |   |    |   |   |   |UC]
    
    As it turns out, this is caused by incorrect code being emitted for
    the string() function in lib/vsprintf.c. The following code
    
    	if (!(spec.flags & LEFT)) {
    		while (len < spec.field_width--) {
    			if (buf < end)
    				*buf = ' ';
    			++buf;
    		}
    	}
    	for (i = 0; i < len; ++i) {
    		if (buf < end)
    			*buf = *s;
    		++buf; ++s;
    	}
    	while (len < spec.field_width--) {
    		if (buf < end)
    			*buf = ' ';
    		++buf;
    	}
    
    when called with len == 0, triggers an issue in the GCC SRA optimization
    pass (Scalar Replacement of Aggregates), which handles promotion of signed
    struct members incorrectly. This is a known but as yet unresolved issue.
    (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65932). In this particular
    case, it is causing the second while loop to be executed erroneously a
    single time, causing the additional space characters to be printed.
    
    So disable the optimization by passing -fno-ipa-sra.
    
    Acked-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e624cb5d02e467dbeea3dccdacbd4e86c1705b1
Author: Russell King <rmk+kernel@arm.linux.org.uk>
Date:   Fri Sep 11 16:44:02 2015 +0100

    ARM: fix Thumb2 signal handling when ARMv6 is enabled
    
    commit 9b55613f42e8d40d5c9ccb8970bde6af4764b2ab upstream.
    
    When a kernel is built covering ARMv6 to ARMv7, we omit to clear the
    IT state when entering a signal handler.  This can cause the first
    few instructions to be conditionally executed depending on the parent
    context.
    
    In any case, the original test for >= ARMv7 is broken - ARMv6 can have
    Thumb-2 support as well, and an ARMv6T2 specific build would omit this
    code too.
    
    Relax the test back to ARMv6 or greater.  This results in us always
    clearing the IT state bits in the PSR, even on CPUs where these bits
    are reserved.  However, they're reserved for the IT state, so this
    should cause no harm.
    
    Fixes: d71e1352e240 ("Clear the IT state when invoking a Thumb-2 signal handler")
    Acked-by: Tony Lindgren <tony@atomide.com>
    Tested-by: H. Nikolaus Schaller <hns@goldelico.com>
    Tested-by: Grazvydas Ignotas <notasas@gmail.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28ef4c4b4760e7787660795ea89f04aec284fd77
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Aug 31 16:13:47 2015 -0700

    hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for most chips
    
    commit 728d29400488d54974d3317fe8a232b45fdb42ee upstream.
    
    The STEP_UP_TIME and STEP_DOWN_TIME registers are swapped for all chips but
    NCT6775.
    
    Reported-by: Grazvydas Ignotas <notasas@gmail.com>
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit feada04ec6c916fa3779d736e75c8453ee3ddc58
Author: Dominik Dingel <dingel@linux.vnet.ibm.com>
Date:   Fri Sep 18 11:27:45 2015 +0200

    sched: access local runqueue directly in single_task_running
    
    commit 00cc1633816de8c95f337608a1ea64e228faf771 upstream.
    
    Commit 2ee507c47293 ("sched: Add function single_task_running to let a task
    check if it is the only task running on a cpu") referenced the current
    runqueue with the smp_processor_id.  When CONFIG_DEBUG_PREEMPT is enabled,
    that is only allowed if preemption is disabled or the currrent task is
    bound to the local cpu (e.g. kernel worker).
    
    With commit f78195129963 ("kvm: add halt_poll_ns module parameter") KVM
    calls single_task_running. If CONFIG_DEBUG_PREEMPT is enabled that
    generates a lot of kernel messages.
    
    To avoid adding preemption in that cases, as it would limit the usefulness,
    we change single_task_running to access directly the cpu local runqueue.
    
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Fixes: 2ee507c472939db4b146d545352b8a7c79ef47f8
    Signed-off-by: Dominik Dingel <dingel@linux.vnet.ibm.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f829ccff84346019decac2a527495bbaa5565008
Author: Francesco Lavra <francescolavra.fl@gmail.com>
Date:   Sat Jul 25 08:25:18 2015 +0200

    watchdog: sunxi: fix activation of system reset
    
    commit 0919e4445190da18496d31aac08b90828a47d45f upstream.
    
    Commit f2147de33470 ("watchdog: sunxi: support parameterized compatible
    strings") introduced a regression in sunxi_wdt_start(), by which
    the system reset function of the watchdog is not enabled upon
    starting the watchdog. As a result, the system is not reset when the
    watchdog expires. Fix it.
    
    Fixes: f2147de33470 ("watchdog: sunxi: support parameterized compatible strings")
    Signed-off-by: Francesco Lavra <francescolavra.fl@gmail.com>
    Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1252222767288451387b0892840a844fdb095fa6
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Jun 18 12:32:49 2015 +0200

    perf: Fix AUX buffer refcounting
    
    commit 57ffc5ca679f499f4704fd9b6a372916f59930ee upstream.
    
    Its currently possible to drop the last refcount to the aux buffer
    from NMI context, which results in the expected fireworks.
    
    The refcounting needs a bigger overhaul, but to cure the immediate
    problem, delay the freeing by using an irq_work.
    
    Reviewed-and-tested-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Reported-by: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20150618103249.GK19282@twins.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41e324d7edbb2c33a4492f8a5e65044609fe2732
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Fri Sep 11 12:36:12 2015 -0300

    perf header: Fixup reading of HEADER_NRCPUS feature
    
    commit caa470475d9b59eeff093ae650800d34612c4379 upstream.
    
    The original patch introducing this header wrote the number of CPUs available
    and online in one order and then swapped those values when reading, fix it.
    
    Before:
    
      # perf record usleep 1
      # perf report --header-only | grep 'nrcpus \(online\|avail\)'
      # nrcpus online : 4
      # nrcpus avail : 4
      # echo 0 > /sys/devices/system/cpu/cpu2/online
      # perf record usleep 1
      # perf report --header-only | grep 'nrcpus \(online\|avail\)'
      # nrcpus online : 4
      # nrcpus avail : 3
      # echo 0 > /sys/devices/system/cpu/cpu1/online
      # perf record usleep 1
      # perf report --header-only | grep 'nrcpus \(online\|avail\)'
      # nrcpus online : 4
      # nrcpus avail : 2
    
    After the fix, bringing back the CPUs online:
    
      # perf report --header-only | grep 'nrcpus \(online\|avail\)'
      # nrcpus online : 2
      # nrcpus avail : 4
      # echo 1 > /sys/devices/system/cpu/cpu2/online
      # perf record usleep 1
      # perf report --header-only | grep 'nrcpus \(online\|avail\)'
      # nrcpus online : 3
      # nrcpus avail : 4
      # echo 1 > /sys/devices/system/cpu/cpu1/online
      # perf record usleep 1
      # perf report --header-only | grep 'nrcpus \(online\|avail\)'
      # nrcpus online : 4
      # nrcpus avail : 4
    
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: fbe96f29ce4b ("perf tools: Make perf.data more self-descriptive (v8)")
    Link: http://lkml.kernel.org/r/20150911153323.GP23511@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1477cb59bba427bab5dd7e91a448d0c1a11ac230
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Tue Aug 4 17:10:27 2015 +0100

    perf tools: Add empty Build files for architectures lacking them
    
    commit 93df8a1ed6231727c5db94a80b1a6bd5ee67cec3 upstream.
    
    perf currently fails to build on MIPS as there is no
    tools/perf/arch/mips/Build file.  Adding an empty file fixes this as
    there are no MIPS-specific sources to build.
    
    It looks like the same is needed for Alpha and PA-RISC, though I
    haven't been able to test those.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Fixes: 5e8c0fb6a957 ("perf build: Add arch x86 objects building")
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1438704627.7315.2.camel@decadent.org.uk
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63f155ca0df06d116e4bbed31c264598a9d8c622
Author: Kan Liang <kan.liang@intel.com>
Date:   Thu Jul 2 03:08:43 2015 -0400

    perf stat: Get correct cpu id for print_aggr
    
    commit 601083cffb7cabdcc55b8195d732f0f7028570fa upstream.
    
    print_aggr() fails to print per-core/per-socket statistics after commit
    582ec0829b3d ("perf stat: Fix per-socket output bug for uncore events")
    if events have differnt cpus. Because in print_aggr(), aggr_get_id needs
    index (not cpu id) to find core/pkg id. Also, evsel cpu maps should be
    used to get aggregated id.
    
    Here is an example:
    
    Counting events cycles,uncore_imc_0/cas_count_read/. (Uncore event has
    cpumask 0,18)
    
      $ perf stat -e cycles,uncore_imc_0/cas_count_read/ -C0,18 --per-core sleep 2
    
    Without this patch, it failes to get CPU 18 result.
    
       Performance counter stats for 'CPU(s) 0,18':
    
      S0-C0           1            7526851      cycles
      S0-C0           1               1.05 MiB  uncore_imc_0/cas_count_read/
      S1-C0           0      <not counted>      cycles
      S1-C0           0      <not counted> MiB  uncore_imc_0/cas_count_read/
    
    With this patch, it can get both CPU0 and CPU18 result.
    
       Performance counter stats for 'CPU(s) 0,18':
    
      S0-C0           1            6327768      cycles
      S0-C0           1               0.47 MiB  uncore_imc_0/cas_count_read/
      S1-C0           1             330228      cycles
      S1-C0           1               0.29 MiB  uncore_imc_0/cas_count_read/
    
    Signed-off-by: Kan Liang <kan.liang@intel.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Acked-by: Stephane Eranian <eranian@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Fixes: 582ec0829b3d ("perf stat: Fix per-socket output bug for uncore events")
    Link: http://lkml.kernel.org/r/1435820925-51091-1-git-send-email-kan.liang@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c23f8cd8a4a3ce31f65711f3b100055347b8751
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Mon Aug 10 16:53:54 2015 -0300

    perf hists: Update the column width for the "srcline" sort key
    
    commit e8e6d37e73e6b950c891c780745460b87f4755b6 upstream.
    
    When we introduce a new sort key, we need to update the
    hists__calc_col_len() function accordingly, otherwise the width
    will be limited to strlen(header).
    
    We can't update it when obtaining a line value for a column (for
    instance, in sort__srcline_cmp()), because we reset it all when doing a
    resort (see hists__output_recalc_col_len()), so we need to, from what is
    in the hist_entry fields, set each of the column widths.
    
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Fixes: 409a8be61560 ("perf tools: Add sort by src line/number")
    Link: http://lkml.kernel.org/n/tip-jgbe0yx8v1gs89cslr93pvz2@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4cb7d0fc447e6117c99e45f3f4f698017201f2d
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Thu Sep 24 13:05:22 2015 +0300

    perf tools: Fix copying of /proc/kcore
    
    commit b5cabbcbd157a4bf5a92dfc85134999a3b55342d upstream.
    
    A copy of /proc/kcore containing the kernel text can be made to the
    buildid cache. e.g.
    
    	perf buildid-cache -v -k /proc/kcore
    
    To workaround objdump limitations, a copy is also made when annotating
    against /proc/kcore.
    
    The copying process stops working from libelf about v1.62 onwards (the
    problem was found with v1.63).
    
    The cause is that a call to gelf_getphdr() in kcore__add_phdr() fails
    because additional validation has been added to gelf_getphdr().
    
    The use of gelf_getphdr() is a misguided attempt to get default
    initialization of the Gelf_Phdr structure.  That should not be
    necessary because every member of the Gelf_Phdr structure is
    subsequently assigned.  So just remove the call to gelf_getphdr().
    
    Similarly, a call to gelf_getehdr() in gelf_kcore__init() can be
    removed also.
    
    Committer notes:
    
    Note to stable@kernel.org, from Adrian in the cover letter for this
    patchkit:
    
    The "Fix copying of /proc/kcore" problem goes back to v3.13 if you think
    it is important enough for stable.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lkml.kernel.org/r/1443089122-19082-3-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37f70c3811230c2ee4a3a9eece54cf7ee5ba00f9
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Sep 10 11:58:27 2015 +0200

    perf/x86/intel: Fix constraint access
    
    commit ebfb4988f0378e2ac3b4a0aa1ea20d724293f392 upstream.
    
    Sasha reported that we can get here with .idx==-1, and
    cpuc->event_constraints unallocated.
    
    Suggested-by: Stephane Eranian <eranian@google.com>
    Reported-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: b371b5943178 ("perf/x86: Fix event/group validation")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61be5a59622ab5b2c0152e3d32b0d8b18ca65875
Author: Azael Avalos <coproscefalo@gmail.com>
Date:   Wed Sep 9 11:25:45 2015 -0600

    toshiba_acpi: Fix hotkeys registration on some toshiba models
    
    commit 53147b6cabee5e8d1997b5682fcc0c3b72ddf9c2 upstream.
    
    Commit a2b3471b5b13 ("toshiba_acpi: Use the Hotkey Event Type function
    for keymap choosing") changed the *setup_keyboard function to query for
    the Hotkey Event Type to help choose the correct keymap, but turns out
    that here are certain Toshiba models out there not implementing this
    feature, and thus, failing to continue the input device registration and
    leaving such laptops without hotkey support.
    
    This patch changes such check, and instead of returning an error if
    the Hotkey Event Type is not present, we simply inform userspace about it,
    changing the message printed from err to notice, making the function
    responsible for registering the input device to continue.
    
    This issue was found on a Toshiba Portege Z30-B, but there might be
    some other models out there affected by this regression as well.
    
    Signed-off-by: Azael Avalos <coproscefalo@gmail.com>
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35afa65642a9a88c81913377b93a3a66220f8b9d
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Wed Sep 23 07:49:26 2015 +0000

    target: Fix v4.1 UNIT_ATTENTION se_node_acl->device_list[] NULL pointer
    
    This patch fixes a v4.1 only regression bug as reported by Martin
    where UNIT_ATTENTION checking for pre v4.2-rc1 RCU conversion code
    legacy se_node_acl->device_list[] was hitting a NULL pointer
    dereference in:
    
    [ 1858.639654] CPU: 2 PID: 1293 Comm: kworker/2:1 Tainted: G          I 4.1.6-fixxcopy+ #1
    [ 1858.639699] Hardware name: Dell Inc. PowerEdge R410/0N83VF, BIOS 1.11.0 07/20/2012
    [ 1858.639747] Workqueue: xcopy_wq target_xcopy_do_work [target_core_mod]
    [ 1858.639782] task: ffff880036f0cbe0 ti: ffff880317940000 task.ti: ffff880317940000
    [ 1858.639822] RIP: 0010:[<ffffffffa01d3774>]  [<ffffffffa01d3774>] target_scsi3_ua_check+0x24/0x60 [target_core_mod]
    [ 1858.639884] RSP: 0018:ffff880317943ce0  EFLAGS: 00010282
    [ 1858.639913] RAX: 0000000000000000 RBX: ffff880317943dc0 RCX: 0000000000000000
    [ 1858.639950] RDX: 0000000000000000 RSI: ffff880317943dd0 RDI: ffff88030eaee408
    [ 1858.639987] RBP: ffff88030eaee408 R08: 0000000000000001 R09: 0000000000000001
    [ 1858.640025] R10: 0000000000000000 R11: 00000000000706e0 R12: ffff880315e0a000
    [ 1858.640062] R13: ffff88030eaee408 R14: 0000000000000001 R15: ffff88030eaee408
    [ 1858.640100] FS:  0000000000000000(0000) GS:ffff880322e80000(0000) knlGS:0000000000000000
    [ 1858.640143] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [ 1858.640173] CR2: 0000000000000000 CR3: 000000000180d000 CR4: 00000000000006e0
    [ 1858.640210] Stack:
    [ 1858.640223]  ffffffffa01cadfa ffff88030eaee400 ffff880318e7c340 ffff880315e0a000
    [ 1858.640267]  ffffffffa01d8c25 ffff8800cae809e0 0000000000000400 0000000000000400
    [ 1858.640310]  ffff880318e7c3d0 0000000006b75800 0000000000080000 ffff88030eaee400
    [ 1858.640354] Call Trace:
    [ 1858.640379]  [<ffffffffa01cadfa>] ? target_setup_cmd_from_cdb+0x13a/0x2c0 [target_core_mod]
    [ 1858.640429]  [<ffffffffa01d8c25>] ? target_xcopy_setup_pt_cmd+0x85/0x320 [target_core_mod]
    [ 1858.640479]  [<ffffffffa01d9424>] ? target_xcopy_do_work+0x264/0x700 [target_core_mod]
    [ 1858.640526]  [<ffffffff810ac3a0>] ? pick_next_task_fair+0x720/0x8f0
    [ 1858.640562]  [<ffffffff8108b3fb>] ? process_one_work+0x14b/0x430
    [ 1858.640595]  [<ffffffff8108bf5b>] ? worker_thread+0x6b/0x560
    [ 1858.640627]  [<ffffffff8108bef0>] ? rescuer_thread+0x390/0x390
    [ 1858.640661]  [<ffffffff810913b3>] ? kthread+0xd3/0xf0
    [ 1858.640689]  [<ffffffff810912e0>] ? kthread_create_on_node+0x180/0x180
    
    Also, check for the same se_node_acl->device_list[] during EXTENDED_COPY
    operation as a non-holding persistent reservation port.
    
    Reported-by: Martin Svec <martin,svec@zoner.cz>
    Tested-by: Martin Svec <martin,svec@zoner.cz>
    Cc: Martin Svec <martin,svec@zoner.cz>
    Cc: Alex Gorbachev <ag@iss-integration.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6ac3aee1c73d5b107ae6ec6e3715b39db782781
Author: Jenny Derzhavetz <jennyf@mellanox.com>
Date:   Sun Sep 6 14:52:21 2015 +0300

    iser-target: Put the reference on commands waiting for unsol data
    
    commit 3e03c4b01da3e6a5f3081eb0aa252490fe83e352 upstream.
    
    The iscsi target core teardown sequence calls wait_conn for
    all active commands to finish gracefully by:
    - move the queue-pair to error state
    - drain all the completions
    - wait for the core to finish handling all session commands
    
    However, when tearing down a session while there are sequenced
    commands that are still waiting for unsolicited data outs, we can
    block forever as these are missing an extra reference put.
    
    We basically need the equivalent of iscsit_free_queue_reqs_for_conn()
    which is called after wait_conn has returned. Address this by an
    explicit walk on conn_cmd_list and put the extra reference.
    
    Signed-off-by: Jenny Derzhavetz <jennyf@mellanox.com>
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 060f45157d2a43dffd51a10e9707336f58ae34b7
Author: Jenny Derzhavetz <jennyf@mellanox.com>
Date:   Sun Sep 6 14:52:20 2015 +0300

    iser-target: remove command with state ISTATE_REMOVE
    
    commit a4c15cd957cbd728f685645de7a150df5912591a upstream.
    
    As documented in iscsit_sequence_cmd:
    /*
     * Existing callers for iscsit_sequence_cmd() will silently
     * ignore commands with CMDSN_LOWER_THAN_EXP, so force this
     * return for CMDSN_MAXCMDSN_OVERRUN as well..
     */
    
    We need to silently finish a command when it's in ISTATE_REMOVE.
    This fixes an teardown hang we were seeing where a mis-behaved
    initiator (triggered by allocation error injections) sent us a
    cmdsn which was lower than expected.
    
    Signed-off-by: Jenny Derzhavetz <jennyf@mellanox.com>
    Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57bc4a2d5be815c3b917fdf54a2013e8df565e42
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Thu Sep 3 06:30:45 2015 +0000

    target: Attach EXTENDED_COPY local I/O descriptors to xcopy_pt_sess
    
    commit 4416f89b8cfcb794d040fc3b68e5fb159b7d8d02 upstream.
    
    This patch is a >= v4.1 regression bug-fix where control CDB
    emulation logic in commit 38b57f82 now expects a se_cmd->se_sess
    pointer to exist when determining T10-PI support is to be exposed
    for initiator host ports.
    
    To address this bug, go ahead and add locally generated se_cmd
    descriptors for copy-offload block-copy to it's own stand-alone
    se_session nexus, while the parent EXTENDED_COPY se_cmd descriptor
    remains associated with it's originating se_cmd->se_sess nexus.
    
    Note a valid se_cmd->se_sess is also required for future support
    of WRITE_INSERT and READ_STRIP software emulation when submitting
    backend I/O to se_device that exposes T10-PI suport.
    
    Reported-by: Alex Gorbachev <ag@iss-integration.com>
    Tested-by: Alex Gorbachev <ag@iss-integration.com>
    Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Doug Gilbert <dgilbert@interlog.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4863a3f3a6fee85504d78254de97aea26e0c661c
Author: Michal Hocko <mhocko@suse.com>
Date:   Thu Aug 27 20:16:37 2015 +0200

    scsi: fix scsi_error_handler vs. scsi_host_dev_release race
    
    commit 537b604c8b3aa8b96fe35f87dd085816552e294c upstream.
    
    b9d5c6b7ef57 ("[SCSI] cleanup setting task state in
    scsi_error_handler()") has introduced a race between scsi_error_handler
    and scsi_host_dev_release resulting in the hang when the device goes
    away because scsi_error_handler might miss a wake up:
    
    CPU0					CPU1
    scsi_error_handler			scsi_host_dev_release
      					  kthread_stop()
      kthread_should_stop()
        test_bit(KTHREAD_SHOULD_STOP)
    					    set_bit(KTHREAD_SHOULD_STOP)
    					    wake_up_process()
    					    wait_for_completion()
    
      set_current_state(TASK_INTERRUPTIBLE)
      schedule()
    
    The most straightforward solution seems to be to invert the ordering of
    the set_current_state and kthread_should_stop.
    
    The issue has been noticed during reboot test on a 3.0 based kernel but
    the current code seems to be affected in the same way.
    
    [jejb: additional comment added]
    Reported-and-debugged-by: Mike Mayer <Mike.Meyer@teradata.com>
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Dan Williams <dan.j.williams@intel.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e77fb714b612371276f733947ad776ccf1f7aefe
Author: Andy Grover <agrover@redhat.com>
Date:   Mon Aug 24 10:26:03 2015 -0700

    target/iscsi: Fix np_ip bracket issue by removing np_ip
    
    commit 76c28f1fcfeb42b47f798fe498351ee1d60086ae upstream.
    
    Revert commit 1997e6259, which causes double brackets on ipv6
    inaddr_any addresses.
    
    Since we have np_sockaddr, if we need a textual representation we can
    use "%pISc".
    
    Change iscsit_add_network_portal() and iscsit_add_np() signatures to remove
    *ip_str parameter.
    
    Fix and extend some comments earlier in the function.
    
    Tested to work for :: and ::1 via iscsiadm, previously :: failed, see
    https://bugzilla.redhat.com/show_bug.cgi?id=1249107 .
    
    Signed-off-by: Andy Grover <agrover@redhat.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5428d82f04e051e9c0d1da2b353c21be01600c7
Author: John Stultz <john.stultz@linaro.org>
Date:   Wed Sep 9 16:07:30 2015 -0700

    time: Fix timekeeping_freqadjust()'s incorrect use of abs() instead of abs64()
    
    commit 2619d7e9c92d524cb155ec89fd72875321512e5b upstream.
    
    The internal clocksteering done for fine-grained error
    correction uses a logarithmic approximation, so any time
    adjtimex() adjusts the clock steering, timekeeping_freqadjust()
    quickly approximates the correct clock frequency over a series
    of ticks.
    
    Unfortunately, the logic in timekeeping_freqadjust(), introduced
    in commit:
    
      dc491596f639 ("timekeeping: Rework frequency adjustments to work better w/ nohz")
    
    used the abs() function with a s64 error value to calculate the
    size of the approximated adjustment to be made.
    
    Per include/linux/kernel.h:
    
      "abs() should not be used for 64-bit types (s64, u64, long long) - use abs64()".
    
    Thus on 32-bit platforms, this resulted in the clocksteering to
    take a quite dampended random walk trying to converge on the
    proper frequency, which caused the adjustments to be made much
    slower then intended (most easily observed when large
    adjustments are made).
    
    This patch fixes the issue by using abs64() instead.
    
    Reported-by: Nuno Gonçalves <nunojpg@gmail.com>
    Tested-by: Nuno Goncalves <nunojpg@gmail.com>
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Miroslav Lichvar <mlichvar@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Prarit Bhargava <prarit@redhat.com>
    Cc: Richard Cochran <richardcochran@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1441840051-20244-1-git-send-email-john.stultz@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d9cc6c15c8a1019263ab8a85eeb38dcf3c3c9d6
Author: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Date:   Thu May 21 13:57:04 2015 +0530

    KVM: PPC: Book3S HV: Pass the correct trap argument to kvmhv_commence_exit
    
    commit 7e022e717f54897e396504306d0c9b61452adf4e upstream.
    
    In guest_exit_cont we call kvmhv_commence_exit which expects the trap
    number as the argument. However r3 doesn't contain the trap number at
    this point and as a result we would be calling the function with a
    spurious trap number.
    
    Fix this by copying r12 into r3 before calling kvmhv_commence_exit as
    r12 contains the trap number.
    
    Fixes: eddb60fb1443
    Signed-off-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
    Signed-off-by: Paul Mackerras <paulus@samba.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ffd269ee140151a04f33731a7160b571186d5bba
Author: Thomas Huth <thuth@redhat.com>
Date:   Fri Sep 18 08:57:28 2015 +0200

    KVM: PPC: Book3S: Take the kvm->srcu lock in kvmppc_h_logical_ci_load/store()
    
    commit 3eb4ee68254235e4f47bc0410538fcdaede39589 upstream.
    
    Access to the kvm->buses (like with the kvm_io_bus_read() and -write()
    functions) has to be protected via the kvm->srcu lock.
    The kvmppc_h_logical_ci_load() and -store() functions are missing
    this lock so far, so let's add it there, too.
    This fixes the problem that the kernel reports "suspicious RCU usage"
    when lock debugging is enabled.
    
    Fixes: 99342cf8044420eebdf9297ca03a14cb6a7085a1
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    Signed-off-by: Paul Mackerras <paulus@samba.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5b48a8ed5004bc857cd15b4a5e4f93773251874
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Wed Sep 16 16:18:59 2015 +0100

    arm: KVM: Disable virtual timer even if the guest is not using it
    
    commit 688bc577ac42ae3d07c889a1f0a72f0b23763d58 upstream.
    
    When running a guest with the architected timer disabled (with QEMU and
    the kernel_irqchip=off option, for example), it is important to make
    sure the timer gets turned off. Otherwise, the guest may try to
    enable it anyway, leading to a screaming HW interrupt.
    
    The fix is to unconditionally turn off the virtual timer on guest
    exit.
    
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c286128ffc7ffaeaf5cf8d7b0b64c9883160a636
Author: Jason Wang <jasowang@redhat.com>
Date:   Tue Sep 15 14:41:56 2015 +0800

    kvm: fix double free for fast mmio eventfd
    
    commit eefd6b06b17c5478e7c24bea6f64beaa2c431ca6 upstream.
    
    We register wildcard mmio eventfd on two buses, once for KVM_MMIO_BUS
    and once on KVM_FAST_MMIO_BUS but with a single iodev
    instance. This will lead to an issue: kvm_io_bus_destroy() knows
    nothing about the devices on two buses pointing to a single dev. Which
    will lead to double free[1] during exit. Fix this by allocating two
    instances of iodevs then registering one on KVM_MMIO_BUS and another
    on KVM_FAST_MMIO_BUS.
    
    CPU: 1 PID: 2894 Comm: qemu-system-x86 Not tainted 3.19.0-26-generic #28-Ubuntu
    Hardware name: LENOVO 2356BG6/2356BG6, BIOS G7ET96WW (2.56 ) 09/12/2013
    task: ffff88009ae0c4b0 ti: ffff88020e7f0000 task.ti: ffff88020e7f0000
    RIP: 0010:[<ffffffffc07e25d8>]  [<ffffffffc07e25d8>] ioeventfd_release+0x28/0x60 [kvm]
    RSP: 0018:ffff88020e7f3bc8  EFLAGS: 00010292
    RAX: dead000000200200 RBX: ffff8801ec19c900 RCX: 000000018200016d
    RDX: ffff8801ec19cf80 RSI: ffffea0008bf1d40 RDI: ffff8801ec19c900
    RBP: ffff88020e7f3bd8 R08: 000000002fc75a01 R09: 000000018200016d
    R10: ffffffffc07df6ae R11: ffff88022fc75a98 R12: ffff88021e7cc000
    R13: ffff88021e7cca48 R14: ffff88021e7cca50 R15: ffff8801ec19c880
    FS:  00007fc1ee3e6700(0000) GS:ffff88023e240000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f8f389d8000 CR3: 000000023dc13000 CR4: 00000000001427e0
    Stack:
    ffff88021e7cc000 0000000000000000 ffff88020e7f3be8 ffffffffc07e2622
    ffff88020e7f3c38 ffffffffc07df69a ffff880232524160 ffff88020e792d80
     0000000000000000 ffff880219b78c00 0000000000000008 ffff8802321686a8
    Call Trace:
    [<ffffffffc07e2622>] ioeventfd_destructor+0x12/0x20 [kvm]
    [<ffffffffc07df69a>] kvm_put_kvm+0xca/0x210 [kvm]
    [<ffffffffc07df818>] kvm_vcpu_release+0x18/0x20 [kvm]
    [<ffffffff811f69f7>] __fput+0xe7/0x250
    [<ffffffff811f6bae>] ____fput+0xe/0x10
    [<ffffffff81093f04>] task_work_run+0xd4/0xf0
    [<ffffffff81079358>] do_exit+0x368/0xa50
    [<ffffffff81082c8f>] ? recalc_sigpending+0x1f/0x60
    [<ffffffff81079ad5>] do_group_exit+0x45/0xb0
    [<ffffffff81085c71>] get_signal+0x291/0x750
    [<ffffffff810144d8>] do_signal+0x28/0xab0
    [<ffffffff810f3a3b>] ? do_futex+0xdb/0x5d0
    [<ffffffff810b7028>] ? __wake_up_locked_key+0x18/0x20
    [<ffffffff810f3fa6>] ? SyS_futex+0x76/0x170
    [<ffffffff81014fc9>] do_notify_resume+0x69/0xb0
    [<ffffffff817cb9af>] int_signal+0x12/0x17
    Code: 5d c3 90 0f 1f 44 00 00 55 48 89 e5 53 48 89 fb 48 83 ec 08 48 8b 7f 20 e8 06 d6 a5 c0 48 8b 43 08 48 8b 13 48 89 df 48 89 42 08 <48> 89 10 48 b8 00 01 10 00 00
     RIP  [<ffffffffc07e25d8>] ioeventfd_release+0x28/0x60 [kvm]
     RSP <ffff88020e7f3bc8>
    
    Cc: Gleb Natapov <gleb@kernel.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 348a20a23f03953f1a0ab57b55cd9079084b14f4
Author: Jason Wang <jasowang@redhat.com>
Date:   Tue Sep 15 14:41:55 2015 +0800

    kvm: factor out core eventfd assign/deassign logic
    
    commit 85da11ca587c8eb73993a1b503052391a73586f9 upstream.
    
    This patch factors out core eventfd assign/deassign logic and leaves
    the argument checking and bus index selection to callers.
    
    Cc: Gleb Natapov <gleb@kernel.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 989bbb3a4c25d9e21a791a4d23cf24610270db63
Author: Jason Wang <jasowang@redhat.com>
Date:   Tue Sep 15 14:41:57 2015 +0800

    kvm: fix zero length mmio searching
    
    commit 8f4216c7d28976f7ec1b2bcbfa0a9f787133c45e upstream.
    
    Currently, if we had a zero length mmio eventfd assigned on
    KVM_MMIO_BUS. It will never be found by kvm_io_bus_cmp() since it
    always compares the kvm_io_range() with the length that guest
    wrote. This will cause e.g for vhost, kick will be trapped by qemu
    userspace instead of vhost. Fixing this by using zero length if an
    iodevice is zero length.
    
    Cc: Gleb Natapov <gleb@kernel.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87f3ae1f34a06fb5296a4b0d763737171c3f2d65
Author: Jason Wang <jasowang@redhat.com>
Date:   Tue Sep 15 14:41:54 2015 +0800

    kvm: don't try to register to KVM_FAST_MMIO_BUS for non mmio eventfd
    
    commit 8453fecbecae26edb3f278627376caab05d9a88d upstream.
    
    We only want zero length mmio eventfd to be registered on
    KVM_FAST_MMIO_BUS. So check this explicitly when arg->len is zero to
    make sure this.
    
    Cc: Gleb Natapov <gleb@kernel.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35f5af9cb6994ee92e27b2cd5936142337983284
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Wed Sep 16 19:31:11 2015 +0800

    KVM: vmx: fix VPID is 0000H in non-root operation
    
    commit 04bb92e4b4cf06a66889d37b892b78f926faa9d4 upstream.
    
    Reference SDM 28.1:
    
    The current VPID is 0000H in the following situations:
    - Outside VMX operation. (This includes operation in system-management
      mode under the default treatment of SMIs and SMM with VMX operation;
      see Section 34.14.)
    - In VMX root operation.
    - In VMX non-root operation when the “enable VPID” VM-execution control
      is 0.
    
    The VPID should never be 0000H in non-root operation when "enable VPID"
    VM-execution control is 1. However, commit 34a1cd60 ("kvm: x86: vmx:
    move some vmx setting from vmx_init() to hardware_setup()") remove the
    codes which reserve 0000H for VMX root operation.
    
    This patch fix it by again reserving 0000H for VMX root operation.
    
    Fixes: 34a1cd60d17f62c1f077c1478a6c2ca8c3d17af4
    Reported-by: Wincy Van <fanwenyi0529@gmail.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10e259a1ec2e4b39e1a9d49d51dbd152a8e5f3c3
Author: Marek Majtyka <marek.majtyka@tieto.com>
Date:   Wed Sep 16 12:04:55 2015 +0200

    arm: KVM: Fix incorrect device to IPA mapping
    
    commit ca09f02f122b2ecb0f5ddfc5fd47b29ed657d4fd upstream.
    
    A critical bug has been found in device memory stage1 translation for
    VMs with more then 4GB of address space. Once vm_pgoff size is smaller
    then pa (which is true for LPAE case, u32 and u64 respectively) some
    more significant bits of pa may be lost as a shift operation is performed
    on u32 and later cast onto u64.
    
    Example: vm_pgoff(u32)=0x00210030, PAGE_SHIFT=12
            expected pa(u64):   0x0000002010030000
            produced pa(u64):   0x0000000010030000
    
    The fix is to change the order of operations (casting first onto phys_addr_t
    and then shifting).
    
    Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
    [maz: fixed changelog and patch formatting]
    Signed-off-by: Marek Majtyka <marek.majtyka@tieto.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>