commit 161802562b8b7f546a4deafeb73f31f0afc7bd1e
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Fri Apr 1 01:54:38 2016 +0100

    Linux 3.2.79

commit 7f6138522bb86c5e3fcfbcb81f5fea67d97b4f94
Author: Ioan-Adrian Ratiu <adi@adirat.com>
Date:   Fri Nov 20 22:19:02 2015 +0200

    HID: usbhid: fix recursive deadlock
    
    commit e470127e9606b1fa151c4184243e61296d1e0c0f upstream.
    
    The critical section protected by usbhid->lock in hid_ctrl() is too
    big and because of this it causes a recursive deadlock. "Too big" means
    the case statement and the call to hid_input_report() do not need to be
    protected by the spinlock (no URB operations are done inside them).
    
    The deadlock happens because in certain rare cases drivers try to grab
    the lock while handling the ctrl irq which grabs the lock before them
    as described above. For example newer wacom tablets like 056a:033c try
    to reschedule proximity reads from wacom_intuos_schedule_prox_event()
    calling hid_hw_request() -> usbhid_request() -> usbhid_submit_report()
    which tries to grab the usbhid lock already held by hid_ctrl().
    
    There are two ways to get out of this deadlock:
        1. Make the drivers work "around" the ctrl critical region, in the
        wacom case for ex. by delaying the scheduling of the proximity read
        request itself to a workqueue.
        2. Shrink the critical region so the usbhid lock protects only the
        instructions which modify usbhid state, calling hid_input_report()
        with the spinlock unlocked, allowing the device driver to grab the
        lock first, finish and then grab the lock afterwards in hid_ctrl().
    
    This patch implements the 2nd solution.
    
    Signed-off-by: Ioan-Adrian Ratiu <adi@adirat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    [bwh: Backported to 3.2: adjust context]
    Cc: Jason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d7a1adecfd8254ea61c79585a9c56dd6e3d0f5b7
Author: Vasily Kulikov <segoon@openwall.com>
Date:   Wed Sep 9 15:36:00 2015 -0700

    include/linux/poison.h: fix LIST_POISON{1,2} offset
    
    commit 8a5e5e02fc83aaf67053ab53b359af08c6c49aaf upstream.
    
    Poison pointer values should be small enough to find a room in
    non-mmap'able/hardly-mmap'able space.  E.g.  on x86 "poison pointer space"
    is located starting from 0x0.  Given unprivileged users cannot mmap
    anything below mmap_min_addr, it should be safe to use poison pointers
    lower than mmap_min_addr.
    
    The current poison pointer values of LIST_POISON{1,2} might be too big for
    mmap_min_addr values equal or less than 1 MB (common case, e.g.  Ubuntu
    uses only 0x10000).  There is little point to use such a big value given
    the "poison pointer space" below 1 MB is not yet exhausted.  Changing it
    to a smaller value solves the problem for small mmap_min_addr setups.
    
    The values are suggested by Solar Designer:
    http://www.openwall.com/lists/oss-security/2015/05/02/6
    
    Signed-off-by: Vasily Kulikov <segoon@openwall.com>
    Cc: Solar Designer <solar@openwall.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 90eb3c037fe3f0f25f01713a92725a8daa2b41f3
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Tue Dec 1 13:09:17 2015 -0800

    Input: aiptek - fix crash on detecting device without endpoints
    
    commit 8e20cf2bce122ce9262d6034ee5d5b76fbb92f96 upstream.
    
    The aiptek driver crashes in aiptek_probe() when a specially crafted USB
    device without endpoints is detected. This fix adds a check that the device
    has proper configuration expected by the driver. Also an error return value
    is changed to more matching one in one of the error paths.
    
    Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 03aeac3050c3ec92a50e1409e0b5037a97a20834
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Mon Feb 15 14:46:49 2016 +0100

    s390/mm: four page table levels vs. fork
    
    commit 3446c13b268af86391d06611327006b059b8bab1 upstream.
    
    The fork of a process with four page table levels is broken since
    git commit 6252d702c5311ce9 "[S390] dynamic page tables."
    
    All new mm contexts are created with three page table levels and
    an asce limit of 4TB. If the parent has four levels dup_mmap will
    add vmas to the new context which are outside of the asce limit.
    The subsequent call to copy_page_range will walk the three level
    page table structure of the new process with non-zero pgd and pud
    indexes. This leads to memory clobbers as the pgd_index *and* the
    pud_index is added to the mm->pgd pointer without a pgd_deref
    in between.
    
    The init_new_context() function is selecting the number of page
    table levels for a new context. The function is used by mm_init()
    which in turn is called by dup_mm() and mm_alloc(). These two are
    used by fork() and exec(). The init_new_context() function can
    distinguish the two cases by looking at mm->context.asce_limit,
    for fork() the mm struct has been copied and the number of page
    table levels may not change. For exec() the mm_alloc() function
    set the new mm structure to zero, in this case a three-level page
    table is created as the temporary stack space is located at
    STACK_TOP_MAX = 4TB.
    
    This fixes CVE-2016-2143.
    
    Reported-by: Marcin Kościelnicki <koriakin@0x04.net>
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    [bwh: Backported to 3.2:
     - 31-bit s390 is still supported so keep the #ifdef CONFIG_64BIT conditions
     - Split page table locks are not implemented for PMDs so don't call
       pgtable_pmd_page_{ctor,dtor}()
     - PMDs are not accounted so don't call mm_inc_nr_pmds()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 688d547754cafebe2d5e018ac8bbc6f01618c52a
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Mar 7 13:15:09 2016 -0800

    Revert "drm/radeon: call hpd_irq_event on resume"
    
    commit 256faedcfd646161477d47a1a78c32a562d2e845 upstream.
    
    This reverts commit dbb17a21c131eca94eb31136eee9a7fe5aff00d9.
    
    It turns out that commit can cause problems for systems with multiple
    GPUs, and causes X to hang on at least a HP Pavilion dv7 with hybrid
    graphics.
    
    This got noticed originally in 4.4.4, where this patch had already
    gotten back-ported, but 4.5-rc7 was verified to have the same problem.
    
    Alexander Deucher says:
     "It looks like you have a muxed system so I suspect what's happening is
      that one of the display is being reported as connected for both the
      IGP and the dGPU and then the desktop environment gets confused or
      there some sort problem in the detect functions since the mux is not
      switched to the dGPU.  I don't see an easy fix unless Dave has any
      ideas.  I'd say just revert for now"
    
    Reported-by: Jörg-Volker Peetz <jvpeetz@web.de>
    Acked-by: Alexander Deucher <Alexander.Deucher@amd.com>
    Cc: Dave Airlie <airlied@gmail.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7aae79649d6a88e7104d4d22aa4ba21f4e699e40
Author: Richard Weinberger <richard@nod.at>
Date:   Sun Feb 21 10:53:03 2016 +0100

    ubi: Fix out of bounds write in volume update code
    
    commit e4f6daac20332448529b11f09388f1d55ef2084c upstream.
    
    ubi_start_leb_change() allocates too few bytes.
    ubi_more_leb_change_data() will write up to req->upd_bytes +
    ubi->min_io_size bytes.
    
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5476a24d66a7d275ed1e0a3113f26c1158684462
Author: Maciej W. Rozycki <macro@imgtec.com>
Date:   Fri Mar 4 01:42:49 2016 +0000

    MIPS: traps: Fix SIGFPE information leak from `do_ov' and `do_trap_or_bp'
    
    commit e723e3f7f9591b79e8c56b3d7c5a204a9c571b55 upstream.
    
    Avoid sending a partially initialised `siginfo_t' structure along SIGFPE
    signals issued from `do_ov' and `do_trap_or_bp', leading to information
    leaking from the kernel stack.
    
    Signed-off-by: Maciej W. Rozycki <macro@imgtec.com>
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a2a175739619bd59e8e963200561fc7d6e3bb916
Author: Benjamin Poirier <bpoirier@suse.com>
Date:   Mon Feb 29 15:03:33 2016 -0800

    mld, igmp: Fix reserved tailroom calculation
    
    commit 1837b2e2bcd23137766555a63867e649c0b637f0 upstream.
    
    The current reserved_tailroom calculation fails to take hlen and tlen into
    account.
    
    skb:
    [__hlen__|__data____________|__tlen___|__extra__]
    ^                                               ^
    head                                            skb_end_offset
    
    In this representation, hlen + data + tlen is the size passed to alloc_skb.
    "extra" is the extra space made available in __alloc_skb because of
    rounding up by kmalloc. We can reorder the representation like so:
    
    [__hlen__|__data____________|__extra__|__tlen___]
    ^                                               ^
    head                                            skb_end_offset
    
    The maximum space available for ip headers and payload without
    fragmentation is min(mtu, data + extra). Therefore,
    reserved_tailroom
    = data + extra + tlen - min(mtu, data + extra)
    = skb_end_offset - hlen - min(mtu, skb_end_offset - hlen - tlen)
    = skb_tailroom - min(mtu, skb_tailroom - tlen) ; after skb_reserve(hlen)
    
    Compare the second line to the current expression:
    reserved_tailroom = skb_end_offset - min(mtu, skb_end_offset)
    and we can see that hlen and tlen are not taken into account.
    
    The min() in the third line can be expanded into:
    if mtu < skb_tailroom - tlen:
    	reserved_tailroom = skb_tailroom - mtu
    else:
    	reserved_tailroom = tlen
    
    Depending on hlen, tlen, mtu and the number of multicast address records,
    the current code may output skbs that have less tailroom than
    dev->needed_tailroom or it may output more skbs than needed because not all
    space available is used.
    
    Fixes: 4c672e4b ("ipv6: mld: fix add_grhead skb_over_panic for devs with large MTUs")
    Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a1663179bb1707a285258870914536a64cc1c90a
Author: Or Gerlitz <ogerlitz@mellanox.com>
Date:   Tue Mar 1 18:52:23 2016 +0200

    IB/core: Use GRH when the path hop-limit > 0
    
    commit 11d8d645343efba0c975aefe7c2cf3b33c836c75 upstream.
    
    According to IBTA spec v1.3 section 12.7.19, QPs should use GRH when
    the path returned by the SA has hop-limit > 0. Currently, we do that
    only for the > 1 case, fix that.
    
    Fixes: 6d969a471ba1 ('IB/sa: Add ib_init_ah_from_path()')
    Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
    Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 32592edb940df95dce3b8fcc62fbaf4c1e5522bf
Author: Todd E Brandt <todd.e.brandt@linux.intel.com>
Date:   Wed Mar 2 16:05:29 2016 -0800

    PM / sleep / x86: Fix crash on graph trace through x86 suspend
    
    commit 92f9e179a702a6adbc11e2fedc76ecd6ffc9e3f7 upstream.
    
    Pause/unpause graph tracing around do_suspend_lowlevel as it has
    inconsistent call/return info after it jumps to the wakeup vector.
    The graph trace buffer will otherwise become misaligned and
    may eventually crash and hang on suspend.
    
    To reproduce the issue and test the fix:
    Run a function_graph trace over suspend/resume and set the graph
    function to suspend_devices_and_enter. This consistently hangs the
    system without this fix.
    
    Signed-off-by: Todd Brandt <todd.e.brandt@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c7f2c4c4c6d4776db352e3994e61b3d92fee0420
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Mar 1 18:30:18 2016 +0100

    ALSA: seq: oss: Don't drain at closing a client
    
    commit 197b958c1e76a575d77038cc98b4bebc2134279f upstream.
    
    The OSS sequencer client tries to drain the pending events at
    releasing.  Unfortunately, as spotted by syzkaller fuzzer, this may
    lead to an unkillable process state when the event has been queued at
    the far future.  Since the process being released can't be signaled
    any longer, it remains and waits for the echo-back event in that far
    future.
    
    Back to history, the draining feature was implemented at the time we
    misinterpreted POSIX definition for blocking file operation.
    Actually, such a behavior is superfluous at release, and we should
    just release the device as is instead of keeping it up forever.
    
    This patch just removes the draining call that may block the release
    for too long time unexpectedly.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+Y4kD-aBGj37rf-xBw9bH3GMU6P+MYg4W1e-s-paVD2pg@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.2: snd_seq_oss_drain_write() has an extra log statement
     to be deleted]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 768015972d5580f5cd742a43bd975a27dcee8588
Author: Yegor Yefremov <yegorslists@googlemail.com>
Date:   Mon Feb 29 16:39:57 2016 +0100

    USB: serial: option: add support for Quectel UC20
    
    commit c0992d0f54847d0d1d85c60fcaa054f175ab1ccd upstream.
    
    Add support for Quectel UC20 and blacklist the QMI interface.
    
    Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
    [johan: amend commit message ]
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 95c241c778e930d6e612d7a1ad94355a0ca847db
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 29 18:01:15 2016 +0100

    ASoC: wm8994: Fix enum ctl accesses in a wrong type
    
    commit 8019c0b37cd5a87107808300a496388b777225bf upstream.
    
    The DRC Mode like "AIF1DRC1 Mode" and EQ Mode like "AIF1.1 EQ Mode" in
    wm8994 codec driver are enum ctls, while the current driver accesses
    wrongly via value.integer.value[].  They have to be via
    value.enumerated.item[] instead.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 195b0e6322dee38db8530574fe879e06dc480fd8
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 29 18:01:12 2016 +0100

    ASoC: wm8958: Fix enum ctl accesses in a wrong type
    
    commit d0784829ae3b0beeb69b476f017d5c8a2eb95198 upstream.
    
    "MBC Mode", "VSS Mode", "VSS HPF Mode" and "Enhanced EQ Mode" ctls in
    wm8958 codec driver are enum, while the current driver accesses
    wrongly via value.integer.value[].  They have to be via
    value.enumerated.item[] instead.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7a9951616aaff052e622f8372405dc7ddbc20c64
Author: Vittorio Alfieri <vittorio88@gmail.com>
Date:   Sun Feb 28 14:40:24 2016 +0100

    USB: cp210x: Add ID for Parrot NMEA GPS Flight Recorder
    
    commit 3c4c615d70c8cbdc8ba8c79ed702640930652a79 upstream.
    
    The Parrot NMEA GPS Flight Recorder is a USB composite device
    consisting of hub, flash storage, and cp210x usb to serial chip.
    It is an accessory to the mass-produced Parrot AR Drone 2.
    The device emits standard NMEA messages which make the it compatible
    with NMEA compatible software. It was tested using gpsd version 3.11-3
    as an NMEA interpreter and using the official Parrot Flight Recorder.
    
    Signed-off-by: Vittorio Alfieri <vittorio88@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8a6ee9806e7d3428d292e471e29777edf14bf569
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 29 14:26:43 2016 +0100

    ALSA: hdsp: Fix wrong boolean ctl value accesses
    
    commit eab3c4db193f5fcccf70e884de9a922ca2c63d80 upstream.
    
    snd-hdsp driver accesses enum item values (int) instead of boolean
    values (long) wrongly for some ctl elements.  This patch fixes them.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d258b07cfeb7c7cdcb4349287d87c418d6f01e86
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 29 14:25:16 2016 +0100

    ALSA: hdspm: Fix wrong boolean ctl value accesses
    
    commit 537e48136295c5860a92138c5ea3959b9542868b upstream.
    
    snd-hdspm driver accesses enum item values (int) instead of boolean
    values (long) wrongly for some ctl elements.  This patch fixes them.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.2: drop change to snd_hdspm_put_system_sample_rate()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a69157460ca98675e6c8b27a97b6b90cb1b637c2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Feb 28 11:36:14 2016 +0100

    ALSA: timer: Fix broken compat timer user status ioctl
    
    commit 3a72494ac2a3bd229db941d51e7efe2f6ccd947b upstream.
    
    The timer user status compat ioctl returned the bogus struct used for
    64bit architectures instead of the 32bit one.  This patch addresses
    it to return the proper struct.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6a12cf844fe7fdf154bee04b274a4e14c157c3c7
Author: Mikulas Patocka <mikulas@twibright.com>
Date:   Thu Feb 25 18:17:38 2016 +0100

    hpfs: don't truncate the file when delete fails
    
    commit b6853f78e763d42c7a158d8de3549c9827c604ab upstream.
    
    The delete opration can allocate additional space on the HPFS filesystem
    due to btree split. The HPFS driver checks in advance if there is
    available space, so that it won't corrupt the btree if we run out of space
    during splitting.
    
    If there is not enough available space, the HPFS driver attempted to
    truncate the file, but this results in a deadlock since the commit
    7dd29d8d865efdb00c0542a5d2c87af8c52ea6c7 ("HPFS: Introduce a global mutex
    and lock it on every callback from VFS").
    
    This patch removes the code that tries to truncate the file and -ENOSPC is
    returned instead. If the user hits -ENOSPC on delete, he should try to
    delete other files (that are stored in a leaf btree node), so that the
    delete operation will make some space for deleting the file stored in
    non-leaf btree node.
    
    Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
    Signed-off-by: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: deleted code is slightly different]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1d35aff2d8e3b63e4aaec2bd399fe56c5e736f98
Author: Andrea Arcangeli <aarcange@redhat.com>
Date:   Fri Feb 26 15:19:28 2016 -0800

    mm: thp: fix SMP race condition between THP page fault and MADV_DONTNEED
    
    commit ad33bb04b2a6cee6c1f99fabb15cddbf93ff0433 upstream.
    
    pmd_trans_unstable()/pmd_none_or_trans_huge_or_clear_bad() were
    introduced to locklessy (but atomically) detect when a pmd is a regular
    (stable) pmd or when the pmd is unstable and can infinitely transition
    from pmd_none() and pmd_trans_huge() from under us, while only holding
    the mmap_sem for reading (for writing not).
    
    While holding the mmap_sem only for reading, MADV_DONTNEED can run from
    under us and so before we can assume the pmd to be a regular stable pmd
    we need to compare it against pmd_none() and pmd_trans_huge() in an
    atomic way, with pmd_trans_unstable().  The old pmd_trans_huge() left a
    tiny window for a race.
    
    Useful applications are unlikely to notice the difference as doing
    MADV_DONTNEED concurrently with a page fault would lead to undefined
    behavior.
    
    [akpm@linux-foundation.org: tidy up comment grammar/layout]
    Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
    Reported-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7e9f9e9eadd767c38a27742f11fe4b78e2dc0042
Author: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
Date:   Thu Feb 25 13:54:20 2016 -0300

    ipr: Fix regression when loading firmware
    
    commit 21b81716c6bff24cda52dc75588455f879ddbfe9 upstream.
    
    Commit d63c7dd5bcb9 ("ipr: Fix out-of-bounds null overwrite") removed
    the end of line handling when storing the update_fw sysfs attribute.
    This changed the userpace API because it started refusing writes
    terminated by a line feed, which broke the update tools we already have.
    
    This patch re-adds that handling, so both a write terminated by a line
    feed or not can make it through with the update.
    
    Fixes: d63c7dd5bcb9 ("ipr: Fix out-of-bounds null overwrite")
    Signed-off-by: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
    Cc: Insu Yun <wuninsu@gmail.com>
    Acked-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit caf4c8db59e82f8bc3ed516e25d32f488c7db868
Author: Insu Yun <wuninsu@gmail.com>
Date:   Wed Jan 6 12:44:01 2016 -0500

    ipr: Fix out-of-bounds null overwrite
    
    commit d63c7dd5bcb9441af0526d370c43a65ca2c980d9 upstream.
    
    Return value of snprintf is not bound by size value, 2nd argument.
    (https://www.kernel.org/doc/htmldocs/kernel-api/API-snprintf.html).
    Return value is number of printed chars, can be larger than 2nd
    argument.  Therefore, it can write null byte out of bounds ofbuffer.
    Since snprintf puts null, it does not need to put additional null byte.
    
    Signed-off-by: Insu Yun <wuninsu@gmail.com>
    Reviewed-by: Shane Seymour <shane.seymour@hpe.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2d5a6d0db3c83f5883b542fd3f79a2a80d319b14
Author: Harvey Hunt <harvey.hunt@imgtec.com>
Date:   Wed Feb 24 15:16:43 2016 +0000

    libata: Align ata_device's id on a cacheline
    
    commit 4ee34ea3a12396f35b26d90a094c75db95080baa upstream.
    
    The id buffer in ata_device is a DMA target, but it isn't explicitly
    cacheline aligned. Due to this, adjacent fields can be overwritten with
    stale data from memory on non coherent architectures. As a result, the
    kernel is sometimes unable to communicate with an ATA device.
    
    Fix this by ensuring that the id buffer is cacheline aligned.
    
    This issue is similar to that fixed by Commit 84bda12af31f
    ("libata: align ap->sector_buf").
    
    Signed-off-by: Harvey Hunt <harvey.hunt@imgtec.com>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bb96b5354a62154d0aca4b2015a5b3eee68a4ac5
Author: David Woodhouse <David.Woodhouse@intel.com>
Date:   Mon Feb 1 14:04:46 2016 +0000

    Fix directory hardlinks from deleted directories
    
    commit be629c62a603e5935f8177fd8a19e014100a259e upstream.
    
    When a directory is deleted, we don't take too much care about killing off
    all the dirents that belong to it — on the basis that on remount, the scan
    will conclude that the directory is dead anyway.
    
    This doesn't work though, when the deleted directory contained a child
    directory which was moved *out*. In the early stages of the fs build
    we can then end up with an apparent hard link, with the child directory
    appearing both in its true location, and as a child of the original
    directory which are this stage of the mount process we don't *yet* know
    is defunct.
    
    To resolve this, take out the early special-casing of the "directories
    shall not have hard links" rule in jffs2_build_inode_pass1(), and let the
    normal nlink processing happen for directories as well as other inodes.
    
    Then later in the build process we can set ic->pino_nlink to the parent
    inode#, as is required for directories during normal operaton, instead
    of the nlink. And complain only *then* about hard links which are still
    in evidence even after killing off all the unreachable paths.
    
    Reported-by: Liu Song <liu.song11@zte.com.cn>
    Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0a2688146b9afcfdc368b81cc0696a19c0cd6c6a
Author: David Woodhouse <David.Woodhouse@intel.com>
Date:   Mon Feb 1 12:37:20 2016 +0000

    jffs2: Fix page lock / f->sem deadlock
    
    commit 49e91e7079febe59a20ca885a87dd1c54240d0f1 upstream.
    
    With this fix, all code paths should now be obtaining the page lock before
    f->sem.
    
    Reported-by: Szabó Tamás <sztomi89@gmail.com>
    Tested-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
    Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b7289da851178cdb10e4871547c36947eccd84af
Author: Thomas Betker <thomas.betker@rohde-schwarz.com>
Date:   Tue Nov 10 22:18:15 2015 +0100

    Revert "jffs2: Fix lock acquisition order bug in jffs2_write_begin"
    
    commit 157078f64b8a9cd7011b6b900b2f2498df850748 upstream.
    
    This reverts commit 5ffd3412ae55
    ("jffs2: Fix lock acquisition order bug in jffs2_write_begin").
    
    The commit modified jffs2_write_begin() to remove a deadlock with
    jffs2_garbage_collect_live(), but this introduced new deadlocks found
    by multiple users. page_lock() actually has to be called before
    mutex_lock(&c->alloc_sem) or mutex_lock(&f->sem) because
    jffs2_write_end() and jffs2_readpage() are called with the page locked,
    and they acquire c->alloc_sem and f->sem, resp.
    
    In other words, the lock order in jffs2_write_begin() was correct, and
    it is the jffs2_garbage_collect_live() path that has to be changed.
    
    Revert the commit to get rid of the new deadlocks, and to clear the way
    for a better fix of the original deadlock.
    
    Reported-by: Deng Chao <deng.chao1@zte.com.cn>
    Reported-by: Ming Liu <liu.ming50@gmail.com>
    Reported-by: wangzaiwei <wangzaiwei@top-vision.cn>
    Signed-off-by: Thomas Betker <thomas.betker@rohde-schwarz.com>
    Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
    [bwh: Backported to 3.2: use D1(printk(KERN_DEBUG ...)) instead of
     jffs2_dbg(1, ...)]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ba4a3d538851c0524b438da2746e68d75868a37e
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Fri Feb 19 13:11:46 2016 +0100

    KVM: async_pf: do not warn on page allocation failures
    
    commit d7444794a02ff655eda87e3cc54e86b940e7736f upstream.
    
    In async_pf we try to allocate with NOWAIT to get an element quickly
    or fail. This code also handle failures gracefully. Lets silence
    potential page allocation failures under load.
    
    qemu-system-s39: page allocation failure: order:0,mode:0x2200000
    [...]
    Call Trace:
    ([<00000000001146b8>] show_trace+0xf8/0x148)
    [<000000000011476a>] show_stack+0x62/0xe8
    [<00000000004a36b8>] dump_stack+0x70/0x98
    [<0000000000272c3a>] warn_alloc_failed+0xd2/0x148
    [<000000000027709e>] __alloc_pages_nodemask+0x94e/0xb38
    [<00000000002cd36a>] new_slab+0x382/0x400
    [<00000000002cf7ac>] ___slab_alloc.constprop.30+0x2dc/0x378
    [<00000000002d03d0>] kmem_cache_alloc+0x160/0x1d0
    [<0000000000133db4>] kvm_setup_async_pf+0x6c/0x198
    [<000000000013dee8>] kvm_arch_vcpu_ioctl_run+0xd48/0xd58
    [<000000000012fcaa>] kvm_vcpu_ioctl+0x372/0x690
    [<00000000002f66f6>] do_vfs_ioctl+0x3be/0x510
    [<00000000002f68ec>] SyS_ioctl+0xa4/0xb8
    [<0000000000781c5e>] system_call+0xd6/0x264
    [<000003ffa24fa06a>] 0x3ffa24fa06a
    
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Dominik Dingel <dingel@linux.vnet.ibm.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bcc72ad56466afc46c5637f7f9a76eee956e5c77
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date:   Thu Feb 18 18:55:54 2016 +0000

    sunrpc/cache: fix off-by-one in qword_get()
    
    commit b7052cd7bcf3c1478796e93e3dff2b44c9e82943 upstream.
    
    The qword_get() function NUL-terminates its output buffer.  If the input
    string is in hex format \xXXXX... and the same length as the output
    buffer, there is an off-by-one:
    
      int qword_get(char **bpp, char *dest, int bufsize)
      {
          ...
          while (len < bufsize) {
              ...
              *dest++ = (h << 4) | l;
              len++;
          }
          ...
          *dest = '\0';
          return len;
      }
    
    This patch ensures the NUL terminator doesn't fall outside the output
    buffer.
    
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 19090c1839987a3e0a9c5263ef9a2f8bf6b6c3a4
Author: Felix Fietkau <nbd@openwrt.org>
Date:   Thu Feb 18 19:49:18 2016 +0100

    mac80211: minstrel_ht: set default tx aggregation timeout to 0
    
    commit 7a36b930e6ed4702c866dc74a5ad07318a57c688 upstream.
    
    The value 5000 was put here with the addition of the timeout field to
    ieee80211_start_tx_ba_session. It was originally added in mac80211 to
    save resources for drivers like iwlwifi, which only supports a limited
    number of concurrent aggregation sessions.
    
    Since iwlwifi does not use minstrel_ht and other drivers don't need
    this, 0 is a better default - especially since there have been
    recent reports of aggregation setup related issues reproduced with
    ath9k. This should improve stability without causing any adverse
    effects.
    
    Acked-by: Avery Pennarun <apenwarr@gmail.com>
    Signed-off-by: Felix Fietkau <nbd@openwrt.org>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 045d2da9950528ec72f06fbb1cb2b981c2541ba0
Author: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
Date:   Tue Dec 22 17:29:16 2015 +0100

    can: ems_usb: Fix possible tx overflow
    
    commit 90cfde46586d2286488d8ed636929e936c0c9ab2 upstream.
    
    This patch fixes the problem that more CAN messages could be sent to the
    interface as could be send on the CAN bus. This was more likely for slow baud
    rates. The sleeping _start_xmit was woken up in the _write_bulk_callback. Under
    heavy TX load this produced another bulk transfer without checking the
    free_slots variable and hence caused the overflow in the interface.
    
    Signed-off-by: Gerhard Uttenthaler <uttenthaler@ems-wuensche.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5215afa128adcfbf917fabc76bc69d35de4beab8
Author: Simon Guinot <simon.guinot@sequanux.org>
Date:   Thu Sep 10 00:15:18 2015 +0200

    kernel/resource.c: fix muxed resource handling in __request_region()
    
    commit 59ceeaaf355fa0fb16558ef7c24413c804932ada upstream.
    
    In __request_region, if a conflict with a BUSY and MUXED resource is
    detected, then the caller goes to sleep and waits for the resource to be
    released.  A pointer on the conflicting resource is kept.  At wake-up
    this pointer is used as a parent to retry to request the region.
    
    A first problem is that this pointer might well be invalid (if for
    example the conflicting resource have already been freed).  Another
    problem is that the next call to __request_region() fails to detect a
    remaining conflict.  The previously conflicting resource is passed as a
    parameter and __request_region() will look for a conflict among the
    children of this resource and not at the resource itself.  It is likely
    to succeed anyway, even if there is still a conflict.
    
    Instead, the parent of the conflicting resource should be passed to
    __request_region().
    
    As a fix, this patch doesn't update the parent resource pointer in the
    case we have to wait for a muxed region right after.
    
    Reported-and-tested-by: Vincent Pelletier <plr.vincent@gmail.com>
    Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
    Tested-by: Vincent Donnefort <vdonnefort@gmail.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 01dda5f90b3e0fd5e65b5d25d347b05fdf08bd27
Author: Jan Kara <jack@suse.com>
Date:   Fri Feb 19 00:18:25 2016 -0500

    ext4: fix bh->b_state corruption
    
    commit ed8ad83808f009ade97ebbf6519bc3a97fefbc0c upstream.
    
    ext4 can update bh->b_state non-atomically in _ext4_get_block() and
    ext4_da_get_block_prep(). Usually this is fine since bh is just a
    temporary storage for mapping information on stack but in some cases it
    can be fully living bh attached to a page. In such case non-atomic
    update of bh->b_state can race with an atomic update which then gets
    lost. Usually when we are mapping bh and thus updating bh->b_state
    non-atomically, nobody else touches the bh and so things work out fine
    but there is one case to especially worry about: ext4_finish_bio() uses
    BH_Uptodate_Lock on the first bh in the page to synchronize handling of
    PageWriteback state. So when blocksize < pagesize, we can be atomically
    modifying bh->b_state of a buffer that actually isn't under IO and thus
    can race e.g. with delalloc trying to map that buffer. The result is
    that we can mistakenly set / clear BH_Uptodate_Lock bit resulting in the
    corruption of PageWriteback state or missed unlock of BH_Uptodate_Lock.
    
    Fix the problem by always updating bh->b_state bits atomically.
    
    Reported-by: Nikolay Borisov <kernel@kyup.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.2:
     - s/READ_ONCE/ACCESS_ONCE/
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8f8c03856431eb65088f600e58b73e1fa6715ffd
Author: Alexandra Yates <alexandra.yates@linux.intel.com>
Date:   Wed Feb 17 19:36:20 2016 -0800

    Adding Intel Lewisburg device IDs for SATA
    
    commit f5bdd66c705484b4bc77eb914be15c1b7881fae7 upstream.
    
    This patch complements the list of device IDs previously
    added for lewisburg sata.
    
    Signed-off-by: Alexandra Yates <alexandra.yates@linux.intel.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a08bf771e9f8755f7a823cf0030305567b202bbd
Author: Bjørn Mork <bjorn@mork.no>
Date:   Fri Feb 12 16:40:00 2016 +0100

    USB: option: add "4G LTE usb-modem U901"
    
    commit d061c1caa31d4d9792cfe48a2c6b309a0e01ef46 upstream.
    
    Thomas reports:
    
    T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=05c6 ProdID=6001 Rev=00.00
    S:  Manufacturer=USB Modem
    S:  Product=USB Modem
    S:  SerialNumber=1234567890ABCDEF
    C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    I:  If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
    
    Reported-by: Thomas Schäfer <tschaefer@t-online.de>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d4f18ead04e05375949c3c7bd69cfbc1dfc65998
Author: Ken Lin <ken.lin@advantech.com.tw>
Date:   Mon Feb 1 14:57:25 2016 -0500

    USB: cp210x: add IDs for GE B650V3 and B850V3 boards
    
    commit 6627ae19385283b89356a199d7f03c75ba35fb29 upstream.
    
    Add USB ID for cp2104/5 devices on GE B650v3 and B850v3 boards.
    
    Signed-off-by: Ken Lin <ken.lin@advantech.com.tw>
    Signed-off-by: Akshay Bhat <akshay.bhat@timesys.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 414e4f7d54a0f7b1d1390e4d0b79fd239e1608c4
Author: Andrey Skvortsov <andrej.skvortzov@gmail.com>
Date:   Fri Jan 29 00:07:30 2016 +0300

    USB: option: add support for SIM7100E
    
    commit 3158a8d416f4e1b79dcc867d67cb50013140772c upstream.
    
    $ lsusb:
    Bus 001 Device 101: ID 1e0e:9001 Qualcomm / Option
    
    $ usb-devices:
    T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=101 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  2
    P:  Vendor=1e0e ProdID=9001 Rev= 2.32
    S:  Manufacturer=SimTech, Incorporated
    S:  Product=SimTech, Incorporated
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 7 Cfg#= 1 Atr=80 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    
    The last interface (6) is used for Android Composite ADB interface.
    
    Serial port layout:
    0: QCDM/DIAG
    1: NMEA
    2: AT
    3: AT/PPP
    4: audio
    
    Signed-off-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 850b483c135e2799a7bbe6a8503dca2726558572
Author: Amir Vadai <amir@vadai.me>
Date:   Wed Feb 17 17:24:22 2016 +0200

    net/mlx4_en: Count HW buffer overrun only once
    
    commit 281e8b2fdf8e4ef366b899453cae50e09b577ada upstream.
    
    RdropOvflw counts overrun of HW buffer, therefore should
    be used for rx_fifo_errors only.
    
    Currently RdropOvflw counter is mistakenly also set into
    rx_missed_errors and rx_over_errors too, which makes the
    device total dropped packets accounting to show wrong results.
    
    Fix that. Use it for rx_fifo_errors only.
    
    Fixes: c27a02cd94d6 ('mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC')
    Signed-off-by: Amir Vadai <amir@vadai.me>
    Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
    Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 87b828c3f0a7e36bde1eb3b9deeb1b5c6d2bfb93
Author: John Youn <John.Youn@synopsys.com>
Date:   Tue Feb 16 20:10:53 2016 -0800

    usb: dwc3: Fix assignment of EP transfer resources
    
    commit c450960187f45d4260db87c7dd4fc0bceb5565d8 upstream.
    
    The assignement of EP transfer resources was not handled properly in the
    dwc3 driver. Commit aebda6187181 ("usb: dwc3: Reset the transfer
    resource index on SET_INTERFACE") previously fixed one aspect of this
    where resources may be exhausted with multiple calls to SET_INTERFACE.
    However, it introduced an issue where composite devices with multiple
    interfaces can be assigned the same transfer resources for different
    endpoints. This patch solves both issues.
    
    The assignment of transfer resources cannot perfectly follow the data
    book due to the fact that the controller driver does not have all
    knowledge of the configuration in advance. It is given this information
    piecemeal by the composite gadget framework after every
    SET_CONFIGURATION and SET_INTERFACE. Trying to follow the databook
    programming model in this scenario can cause errors. For two reasons:
    
    1) The databook says to do DEPSTARTCFG for every SET_CONFIGURATION and
    SET_INTERFACE (8.1.5). This is incorrect in the scenario of multiple
    interfaces.
    
    2) The databook does not mention doing more DEPXFERCFG for new endpoint
    on alt setting (8.1.6).
    
    The following simplified method is used instead:
    
    All hardware endpoints can be assigned a transfer resource and this
    setting will stay persistent until either a core reset or hibernation.
    So whenever we do a DEPSTARTCFG(0) we can go ahead and do DEPXFERCFG for
    every hardware endpoint as well. We are guaranteed that there are as
    many transfer resources as endpoints.
    
    This patch triggers off of the calling dwc3_gadget_start_config() for
    EP0-out, which always happens first, and which should only happen in one
    of the above conditions.
    
    Fixes: aebda6187181 ("usb: dwc3: Reset the transfer resource index on SET_INTERFACE")
    Reported-by: Ravi Babu <ravibabu@ti.com>
    Signed-off-by: John Youn <johnyoun@synopsys.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 256cf9c45cad4da99771b42835fa37f0e7b19629
Author: Toshi Kani <toshi.kani@hpe.com>
Date:   Thu Feb 11 14:24:17 2016 -0700

    x86/uaccess/64: Handle the caching of 4-byte nocache copies properly in __copy_user_nocache()
    
    commit a82eee7424525e34e98d821dd059ce14560a1e35 upstream.
    
    Data corruption issues were observed in tests which initiated
    a system crash/reset while accessing BTT devices.  This problem
    is reproducible.
    
    The BTT driver calls pmem_rw_bytes() to update data in pmem
    devices.  This interface calls __copy_user_nocache(), which
    uses non-temporal stores so that the stores to pmem are
    persistent.
    
    __copy_user_nocache() uses non-temporal stores when a request
    size is 8 bytes or larger (and is aligned by 8 bytes).  The
    BTT driver updates the BTT map table, which entry size is
    4 bytes.  Therefore, updates to the map table entries remain
    cached, and are not written to pmem after a crash.
    
    Change __copy_user_nocache() to use non-temporal store when
    a request size is 4 bytes.  The change extends the current
    byte-copy path for a less-than-8-bytes request, and does not
    add any overhead to the regular path.
    
    Reported-and-tested-by: Micah Parrish <micah.parrish@hpe.com>
    Reported-and-tested-by: Brian Boylston <brian.boylston@hpe.com>
    Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Cc: linux-nvdimm@lists.01.org
    Link: http://lkml.kernel.org/r/1455225857-12039-3-git-send-email-toshi.kani@hpe.com
    [ Small readability edits. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2: aadjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8ff1d97cc2acc153f27e0fa6b94ec8e251f40049
Author: Toshi Kani <toshi.kani@hpe.com>
Date:   Thu Feb 11 14:24:16 2016 -0700

    x86/uaccess/64: Make the __copy_user_nocache() assembly code more readable
    
    commit ee9737c924706aaa72c2ead93e3ad5644681dc1c upstream.
    
    Add comments to __copy_user_nocache() to clarify its procedures
    and alignment requirements.
    
    Also change numeric branch target labels to named local labels.
    
    No code changed:
    
     arch/x86/lib/copy_user_64.o:
    
        text    data     bss     dec     hex filename
        1239       0       0    1239     4d7 copy_user_64.o.before
        1239       0       0    1239     4d7 copy_user_64.o.after
    
     md5:
        58bed94c2db98c1ca9a2d46d0680aaae  copy_user_64.o.before.asm
        58bed94c2db98c1ca9a2d46d0680aaae  copy_user_64.o.after.asm
    
    Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: brian.boylston@hpe.com
    Cc: dan.j.williams@intel.com
    Cc: linux-nvdimm@lists.01.org
    Cc: micah.parrish@hpe.com
    Cc: ross.zwisler@linux.intel.com
    Cc: vishal.l.verma@intel.com
    Link: http://lkml.kernel.org/r/1455225857-12039-2-git-send-email-toshi.kani@hpe.com
    [ Small readability edits and added object file comparison. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2: aadjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 398a638ef421a1fdf8a67ceeecd7f91134f58c1d
Author: H. Peter Anvin <hpa@zytor.com>
Date:   Fri Apr 20 12:19:51 2012 -0700

    x86, extable: Remove open-coded exception table entries in arch/x86/lib/copy_user_nocache_64.S
    
    commit 0d8559feafbc9dc5a2c17ba42aea7de824b18308 upstream.
    
    Remove open-coded exception table entries in arch/x86/lib/copy_user_nocache_64.S,
    and replace them with _ASM_EXTABLE() macros; this will allow us to
    change the format and type of the exception table entries.
    
    Signed-off-by: H. Peter Anvin <hpa@zytor.com>
    Cc: David Daney <david.daney@cavium.com>
    Link: http://lkml.kernel.org/r/CA%2B55aFyijf43qSu3N9nWHEBwaGbb7T2Oq9A=9EyR=Jtyqfq_cQ@mail.gmail.com
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7fb94b7848673cda2bfbe7bc288079902c3397b3
Author: Rainer Weikusat <rweikusat@mobileactivedefense.com>
Date:   Thu Feb 11 19:37:27 2016 +0000

    af_unix: Guard against other == sk in unix_dgram_sendmsg
    
    commit a5527dda344fff0514b7989ef7a755729769daa1 upstream.
    
    The unix_dgram_sendmsg routine use the following test
    
    if (unlikely(unix_peer(other) != sk && unix_recvq_full(other))) {
    
    to determine if sk and other are in an n:1 association (either
    established via connect or by using sendto to send messages to an
    unrelated socket identified by address). This isn't correct as the
    specified address could have been bound to the sending socket itself or
    because this socket could have been connected to itself by the time of
    the unix_peer_get but disconnected before the unix_state_lock(other). In
    both cases, the if-block would be entered despite other == sk which
    might either block the sender unintentionally or lead to trying to unlock
    the same spin lock twice for a non-blocking send. Add a other != sk
    check to guard against this.
    
    Fixes: 7d267278a9ec ("unix: avoid use-after-free in ep_remove_wait_queue")
    Reported-By: Philipp Hahn <pmhahn@pmhahn.de>
    Signed-off-by: Rainer Weikusat <rweikusat@mobileactivedefense.com>
    Tested-by: Philipp Hahn <pmhahn@pmhahn.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 371c1146ec45058fb5656e8b5250623efd847f5d
Author: Rainer Weikusat <rweikusat@mobileactivedefense.com>
Date:   Mon Feb 8 18:47:19 2016 +0000

    af_unix: Don't set err in unix_stream_read_generic unless there was an error
    
    commit 1b92ee3d03af6643df395300ba7748f19ecdb0c5 upstream.
    
    The present unix_stream_read_generic contains various code sequences of
    the form
    
    err = -EDISASTER;
    if (<test>)
    	goto out;
    
    This has the unfortunate side effect of possibly causing the error code
    to bleed through to the final
    
    out:
    	return copied ? : err;
    
    and then to be wrongly returned if no data was copied because the caller
    didn't supply a data buffer, as demonstrated by the program available at
    
    http://pad.lv/1540731
    
    Change it such that err is only set if an error condition was detected.
    
    Fixes: 3822b5c2fc62 ("af_unix: Revert 'lock_interruptible' in stream receive code")
    Reported-by: Joseph Salisbury <joseph.salisbury@canonical.com>
    Signed-off-by: Rainer Weikusat <rweikusat@mobileactivedefense.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit feaaf35f1ac697795d658fd2aad9daa21b9428e6
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Feb 16 14:15:59 2016 +0100

    ALSA: seq: Fix double port list deletion
    
    commit 13d5e5d4725c64ec06040d636832e78453f477b7 upstream.
    
    The commit [7f0973e973cd: ALSA: seq: Fix lockdep warnings due to
    double mutex locks] split the management of two linked lists (source
    and destination) into two individual calls for avoiding the AB/BA
    deadlock.  However, this may leave the possible double deletion of one
    of two lists when the counterpart is being deleted concurrently.
    It ends up with a list corruption, as revealed by syzkaller fuzzer.
    
    This patch fixes it by checking the list emptiness and skipping the
    deletion and the following process.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+bay9qsrz6dQu31EcGaH9XwfW7o3oBzSQUG9fMszoh=Sg@mail.gmail.com
    Fixes: 7f0973e973cd ('ALSA: seq: Fix lockdep warnings due to 'double mutex locks)
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 41e5439ffcd260aa4574a655885fbfb6ac8a9957
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Feb 12 22:26:42 2016 +0100

    tracing: Fix freak link error caused by branch tracer
    
    commit b33c8ff4431a343561e2319f17c14286f2aa52e2 upstream.
    
    In my randconfig tests, I came across a bug that involves several
    components:
    
    * gcc-4.9 through at least 5.3
    * CONFIG_GCOV_PROFILE_ALL enabling -fprofile-arcs for all files
    * CONFIG_PROFILE_ALL_BRANCHES overriding every if()
    * The optimized implementation of do_div() that tries to
      replace a library call with an division by multiplication
    * code in drivers/media/dvb-frontends/zl10353.c doing
    
            u32 adc_clock = 450560; /* 45.056 MHz */
            if (state->config.adc_clock)
                    adc_clock = state->config.adc_clock;
            do_div(value, adc_clock);
    
    In this case, gcc fails to determine whether the divisor
    in do_div() is __builtin_constant_p(). In particular, it
    concludes that __builtin_constant_p(adc_clock) is false, while
    __builtin_constant_p(!!adc_clock) is true.
    
    That in turn throws off the logic in do_div() that also uses
    __builtin_constant_p(), and instead of picking either the
    constant- optimized division, and the code in ilog2() that uses
    __builtin_constant_p() to figure out whether it knows the answer at
    compile time. The result is a link error from failing to find
    multiple symbols that should never have been called based on
    the __builtin_constant_p():
    
    dvb-frontends/zl10353.c:138: undefined reference to `____ilog2_NaN'
    dvb-frontends/zl10353.c:138: undefined reference to `__aeabi_uldivmod'
    ERROR: "____ilog2_NaN" [drivers/media/dvb-frontends/zl10353.ko] undefined!
    ERROR: "__aeabi_uldivmod" [drivers/media/dvb-frontends/zl10353.ko] undefined!
    
    This patch avoids the problem by changing __trace_if() to check
    whether the condition is known at compile-time to be nonzero, rather
    than checking whether it is actually a constant.
    
    I see this one link error in roughly one out of 1600 randconfig builds
    on ARM, and the patch fixes all known instances.
    
    Link: http://lkml.kernel.org/r/1455312410-1058841-1-git-send-email-arnd@arndb.de
    
    Acked-by: Nicolas Pitre <nico@linaro.org>
    Fixes: ab3c9c686e22 ("branch tracer, intel-iommu: fix build with CONFIG_BRANCH_TRACER=y")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 05da9f5999e0e2b00339f5fc5503ef8f202d8a72
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Mon Feb 15 12:36:14 2016 -0500

    tracepoints: Do not trace when cpu is offline
    
    commit f37755490fe9bf76f6ba1d8c6591745d3574a6a6 upstream.
    
    The tracepoint infrastructure uses RCU sched protection to enable and
    disable tracepoints safely. There are some instances where tracepoints are
    used in infrastructure code (like kfree()) that get called after a CPU is
    going offline, and perhaps when it is coming back online but hasn't been
    registered yet.
    
    This can probuce the following warning:
    
     [ INFO: suspicious RCU usage. ]
     4.4.0-00006-g0fe53e8-dirty #34 Tainted: G S
     -------------------------------
     include/trace/events/kmem.h:141 suspicious rcu_dereference_check() usage!
    
     other info that might help us debug this:
    
     RCU used illegally from offline CPU!  rcu_scheduler_active = 1, debug_locks = 1
     no locks held by swapper/8/0.
    
     stack backtrace:
      CPU: 8 PID: 0 Comm: swapper/8 Tainted: G S              4.4.0-00006-g0fe53e8-dirty #34
      Call Trace:
      [c0000005b76c78d0] [c0000000008b9540] .dump_stack+0x98/0xd4 (unreliable)
      [c0000005b76c7950] [c00000000010c898] .lockdep_rcu_suspicious+0x108/0x170
      [c0000005b76c79e0] [c00000000029adc0] .kfree+0x390/0x440
      [c0000005b76c7a80] [c000000000055f74] .destroy_context+0x44/0x100
      [c0000005b76c7b00] [c0000000000934a0] .__mmdrop+0x60/0x150
      [c0000005b76c7b90] [c0000000000e3ff0] .idle_task_exit+0x130/0x140
      [c0000005b76c7c20] [c000000000075804] .pseries_mach_cpu_die+0x64/0x310
      [c0000005b76c7cd0] [c000000000043e7c] .cpu_die+0x3c/0x60
      [c0000005b76c7d40] [c0000000000188d8] .arch_cpu_idle_dead+0x28/0x40
      [c0000005b76c7db0] [c000000000101e6c] .cpu_startup_entry+0x50c/0x560
      [c0000005b76c7ed0] [c000000000043bd8] .start_secondary+0x328/0x360
      [c0000005b76c7f90] [c000000000008a6c] start_secondary_prolog+0x10/0x14
    
    This warning is not a false positive either. RCU is not protecting code that
    is being executed while the CPU is offline.
    
    Instead of playing "whack-a-mole(TM)" and adding conditional statements to
    the tracepoints we find that are used in this instance, simply add a
    cpu_online() test to the tracepoint code where the tracepoint will be
    ignored if the CPU is offline.
    
    Use of raw_smp_processor_id() is fine, as there should never be a case where
    the tracepoint code goes from running on a CPU that is online and suddenly
    gets migrated to a CPU that is offline.
    
    Link: http://lkml.kernel.org/r/1455387773-4245-1-git-send-email-kda@linux-powerpc.org
    
    Reported-by: Denis Kirjanov <kda@linux-powerpc.org>
    Fixes: 97e1c18e8d17b ("tracing: Kernel Tracepoints")
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 747086ad031d61593e97f3603c575e8e31ff4629
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 15 16:20:24 2016 +0100

    ALSA: seq: Fix leak of pool buffer at concurrent writes
    
    commit d99a36f4728fcbcc501b78447f625bdcce15b842 upstream.
    
    When multiple concurrent writes happen on the ALSA sequencer device
    right after the open, it may try to allocate vmalloc buffer for each
    write and leak some of them.  It's because the presence check and the
    assignment of the buffer is done outside the spinlock for the pool.
    
    The fix is to move the check and the assignment into the spinlock.
    
    (The current implementation is suboptimal, as there can be multiple
     unnecessary vmallocs because the allocation is done before the check
     in the spinlock.  But the pool size is already checked beforehand, so
     this isn't a big problem; that is, the only possible path is the
     multiple writes before any pool assignment, and practically seen, the
     current coverage should be "good enough".)
    
    The issue was triggered by syzkaller fuzzer.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+bSzazpXNvtAr=WXaL8hptqjHwqEyFA+VN2AWEx=aurkg@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 74bbafdf291c9833ced6b78dfac69a740b1ea4ce
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Thu Feb 11 16:10:26 2016 -0500

    xen/pcifront: Fix mysterious crashes when NUMA locality information was extracted.
    
    commit 4d8c8bd6f2062c9988817183a91fe2e623c8aa5e upstream.
    
    Occasionaly PV guests would crash with:
    
    pciback 0000:00:00.1: Xen PCI mapped GSI0 to IRQ16
    BUG: unable to handle kernel paging request at 0000000d1a8c0be0
    .. snip..
      <ffffffff8139ce1b>] find_next_bit+0xb/0x10
      [<ffffffff81387f22>] cpumask_next_and+0x22/0x40
      [<ffffffff813c1ef8>] pci_device_probe+0xb8/0x120
      [<ffffffff81529097>] ? driver_sysfs_add+0x77/0xa0
      [<ffffffff815293e4>] driver_probe_device+0x1a4/0x2d0
      [<ffffffff813c1ddd>] ? pci_match_device+0xdd/0x110
      [<ffffffff81529657>] __device_attach_driver+0xa7/0xb0
      [<ffffffff815295b0>] ? __driver_attach+0xa0/0xa0
      [<ffffffff81527622>] bus_for_each_drv+0x62/0x90
      [<ffffffff8152978d>] __device_attach+0xbd/0x110
      [<ffffffff815297fb>] device_attach+0xb/0x10
      [<ffffffff813b75ac>] pci_bus_add_device+0x3c/0x70
      [<ffffffff813b7618>] pci_bus_add_devices+0x38/0x80
      [<ffffffff813dc34e>] pcifront_scan_root+0x13e/0x1a0
      [<ffffffff817a0692>] pcifront_backend_changed+0x262/0x60b
      [<ffffffff814644c6>] ? xenbus_gather+0xd6/0x160
      [<ffffffff8120900f>] ? put_object+0x2f/0x50
      [<ffffffff81465c1d>] xenbus_otherend_changed+0x9d/0xa0
      [<ffffffff814678ee>] backend_changed+0xe/0x10
      [<ffffffff81463a28>] xenwatch_thread+0xc8/0x190
      [<ffffffff810f22f0>] ? woken_wake_function+0x10/0x10
    
    which was the result of two things:
    
    When we call pci_scan_root_bus we would pass in 'sd' (sysdata)
    pointer which was an 'pcifront_sd' structure. However in the
    pci_device_add it expects that the 'sd' is 'struct sysdata' and
    sets the dev->node to what is in sd->node (offset 4):
    
    set_dev_node(&dev->dev, pcibus_to_node(bus));
    
     __pcibus_to_node(const struct pci_bus *bus)
    {
            const struct pci_sysdata *sd = bus->sysdata;
    
            return sd->node;
    }
    
    However our structure was pcifront_sd which had nothing at that
    offset:
    
    struct pcifront_sd {
            int                        domain;    /*     0     4 */
            /* XXX 4 bytes hole, try to pack */
            struct pcifront_device *   pdev;      /*     8     8 */
    }
    
    That is an hole - filled with garbage as we used kmalloc instead of
    kzalloc (the second problem).
    
    This patch fixes the issue by:
     1) Use kzalloc to initialize to a well known state.
     2) Put 'struct pci_sysdata' at the start of 'pcifront_sd'. That
        way access to the 'node' will access the right offset.
    
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9e3fb06c9404b828c59f2fee09fab863cb593961
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Thu Feb 11 16:10:24 2016 -0500

    xen/pciback: Save the number of MSI-X entries to be copied later.
    
    commit d159457b84395927b5a52adb72f748dd089ad5e5 upstream.
    
    Commit 8135cf8b092723dbfcc611fe6fdcb3a36c9951c5 (xen/pciback: Save
    xen_pci_op commands before processing it) broke enabling MSI-X because
    it would never copy the resulting vectors into the response.  The
    number of vectors requested was being overwritten by the return value
    (typically zero for success).
    
    Save the number of vectors before processing the op, so the correct
    number of vectors are copied afterwards.
    
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5c34210efee522586aab7a73421928af7887851d
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Thu Feb 11 16:10:23 2016 -0500

    xen/pciback: Check PF instead of VF for PCI_COMMAND_MEMORY
    
    commit 8d47065f7d1980dde52abb874b301054f3013602 upstream.
    
    Commit 408fb0e5aa7fda0059db282ff58c3b2a4278baa0 (xen/pciback: Don't
    allow MSI-X ops if PCI_COMMAND_MEMORY is not set) prevented enabling
    MSI-X on passed-through virtual functions, because it checked the VF
    for PCI_COMMAND_MEMORY but this is not a valid bit for VFs.
    
    Instead, check the physical function for PCI_COMMAND_MEMORY.
    
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 846b4032720fd8815984aaafc6cbb46f86063306
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Feb 11 14:16:27 2016 +0100

    libata: fix HDIO_GET_32BIT ioctl
    
    commit 287e6611ab1eac76c2c5ebf6e345e04c80ca9c61 upstream.
    
    As reported by Soohoon Lee, the HDIO_GET_32BIT ioctl does not
    work correctly in compat mode with libata.
    
    I have investigated the issue further and found multiple problems
    that all appeared with the same commit that originally introduced
    HDIO_GET_32BIT handling in libata back in linux-2.6.8 and presumably
    also linux-2.4, as the code uses "copy_to_user(arg, &val, 1)" to copy
    a 'long' variable containing either 0 or 1 to user space.
    
    The problems with this are:
    
    * On big-endian machines, this will always write a zero because it
      stores the wrong byte into user space.
    
    * In compat mode, the upper three bytes of the variable are updated
      by the compat_hdio_ioctl() function, but they now contain
      uninitialized stack data.
    
    * The hdparm tool calling this ioctl uses a 'static long' variable
      to store the result. This means at least the upper bytes are
      initialized to zero, but calling another ioctl like HDIO_GET_MULTCOUNT
      would fill them with data that remains stale when the low byte
      is overwritten. Fortunately libata doesn't implement any of the
      affected ioctl commands, so this would only happen when we query
      both an IDE and an ATA device in the same command such as
      "hdparm -N -c /dev/hda /dev/sda"
    
    * The libata code for unknown reasons started using ATA_IOC_GET_IO32
      and ATA_IOC_SET_IO32 as aliases for HDIO_GET_32BIT and HDIO_SET_32BIT,
      while the ioctl commands that were added later use the normal
      HDIO_* names. This is harmless but rather confusing.
    
    This addresses all four issues by changing the code to use put_user()
    on an 'unsigned long' variable in HDIO_GET_32BIT, like the IDE subsystem
    does, and by clarifying the names of the ioctl commands.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reported-by: Soohoon Lee <Soohoon.Lee@f5.com>
    Tested-by: Soohoon Lee <Soohoon.Lee@f5.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0b22bde0ff73aef631e0715d0e4dd957995cbd70
Author: Stefan Haberland <stefan.haberland@de.ibm.com>
Date:   Tue Dec 15 10:45:05 2015 +0100

    s390/dasd: fix refcount for PAV reassignment
    
    commit 9d862ababb609439c5d6987f6d3ddd09e703aa0b upstream.
    
    Add refcount to the DASD device when a summary unit check worker is
    scheduled. This prevents that the device is set offline with worker
    in place.
    
    Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 809216deaa2c3e3212a1f3d07cf1f102569fa698
Author: Stefan Haberland <stefan.haberland@de.ibm.com>
Date:   Tue Dec 15 10:16:43 2015 +0100

    s390/dasd: prevent incorrect length error under z/VM after PAV changes
    
    commit 020bf042e5b397479c1174081b935d0ff15d1a64 upstream.
    
    The channel checks the specified length and the provided amount of
    data for CCWs and provides an incorrect length error if the size does
    not match. Under z/VM with simulation activated the length may get
    changed. Having the suppress length indication bit set is stated as
    good CCW coding practice and avoids errors under z/VM.
    
    Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 751a5cf7c9ab11b54c97fdee372b5d57aba66224
Author: Anton Protopopov <a.s.protopopov@gmail.com>
Date:   Wed Feb 10 12:50:21 2016 -0500

    cifs: fix erroneous return value
    
    commit 4b550af519854421dfec9f7732cdddeb057134b2 upstream.
    
    The setup_ntlmv2_rsp() function may return positive value ENOMEM instead
    of -ENOMEM in case of kmalloc failure.
    
    Signed-off-by: Anton Protopopov <a.s.protopopov@gmail.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5602ed42a08c703faef61571adffc32c20466091
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Tue Feb 9 21:11:13 2016 +0100

    drm/i915: fix error path in intel_setup_gmbus()
    
    commit ed3f9fd1e865975ceefdb2a43b453e090b1fd787 upstream.
    
    This fails to undo the setup for pin==0; moreover, something
    interesting happens if the setup failed already at pin==0.
    
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Fixes: f899fc64cda8 ("drm/i915: use GMBUS to manage i2c links")
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1455048677-19882-3-git-send-email-linux@rasmusvillemoes.dk
    (cherry picked from commit 2417c8c03f508841b85bf61acc91836b7b0e2560)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    [bwh: Backported to 3.2: index variable is i, not pin]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1276251ff7319aec7fe7e21234f3c6a177dd6822
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Feb 8 21:11:50 2016 +0100

    nfs: fix nfs_size_to_loff_t
    
    commit 50ab8ec74a153eb30db26529088bc57dd700b24c upstream.
    
    See http: //www.infradead.org/rpr.html
    X-Evolution-Source: 1451162204.2173.11@leira.trondhjem.org
    Content-Transfer-Encoding: 8bit
    Mime-Version: 1.0
    
    We support OFFSET_MAX just fine, so don't round down below it.  Also
    switch to using min_t to make the helper more readable.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Fixes: 433c92379d9c ("NFS: Clean up nfs_size_to_loff_t()")
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff452c63c02a683eaeb63174625c74010cdeda5b
Author: Chris Bainbridge <chris.bainbridge@gmail.com>
Date:   Wed Jan 27 15:46:18 2016 +0000

    mac80211: fix use of uninitialised values in RX aggregation
    
    commit f39ea2690bd61efec97622c48323f40ed6e16317 upstream.
    
    Use kzalloc instead of kmalloc for struct tid_ampdu_rx to
    initialize the "removed" field (all others are initialized
    manually). That fixes:
    
    UBSAN: Undefined behaviour in net/mac80211/rx.c:932:29
    load of value 2 is not a valid value for type '_Bool'
    CPU: 3 PID: 1134 Comm: kworker/u16:7 Not tainted 4.5.0-rc1+ #265
    Workqueue: phy0 rt2x00usb_work_rxdone
     0000000000000004 ffff880254a7ba50 ffffffff8181d866 0000000000000007
     ffff880254a7ba78 ffff880254a7ba68 ffffffff8188422d ffffffff8379b500
     ffff880254a7bab8 ffffffff81884747 0000000000000202 0000000348620032
    Call Trace:
     [<ffffffff8181d866>] dump_stack+0x45/0x5f
     [<ffffffff8188422d>] ubsan_epilogue+0xd/0x40
     [<ffffffff81884747>] __ubsan_handle_load_invalid_value+0x67/0x70
     [<ffffffff82227b4d>] ieee80211_sta_reorder_release.isra.16+0x5ed/0x730
     [<ffffffff8222ca14>] ieee80211_prepare_and_rx_handle+0xd04/0x1c00
     [<ffffffff8222db03>] __ieee80211_rx_handle_packet+0x1f3/0x750
     [<ffffffff8222e4a7>] ieee80211_rx_napi+0x447/0x990
    
    While at it, convert to use sizeof(*tid_agg_rx) instead.
    
    Fixes: 788211d81bfdf ("mac80211: fix RX A-MPDU session reorder timer deletion")
    Signed-off-by: Chris Bainbridge <chris.bainbridge@gmail.com>
    [reword commit message, use sizeof(*tid_agg_rx)]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b9c061bd4888b02bea1f60dcc82e43af01074db3
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Wed Jan 27 13:29:34 2016 +0100

    cfg80211/wext: fix message ordering
    
    commit cb150b9d23be6ee7f3a0fff29784f1c5b5ac514d upstream.
    
    Since cfg80211 frequently takes actions from its netdev notifier
    call, wireless extensions messages could still be ordered badly
    since the wext netdev notifier, since wext is built into the
    kernel, runs before the cfg80211 netdev notifier. For example,
    the following can happen:
    
    5: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default
        link/ether 02:00:00:00:01:00 brd ff:ff:ff:ff:ff:ff
    5: wlan1: <BROADCAST,MULTICAST,UP>
        link/ether
    
    when setting the interface down causes the wext message.
    
    To also fix this, export the wireless_nlevent_flush() function
    and also call it from the cfg80211 notifier.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [bwh: Backported to 3.2:
     - Add default case in cfg80211_netdev_notifier_call() which bypasses
       the added wireless_nlevent_flush() (added upstream by commit
       6784c7db8d43 "cfg80211: change return value of notifier function")
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6a77bf1587092bfdff0376a5052cfd472ae116a1
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Wed Jan 27 12:37:52 2016 +0100

    wext: fix message delay/ordering
    
    commit 8bf862739a7786ae72409220914df960a0aa80d8 upstream.
    
    Beniamino reported that he was getting an RTM_NEWLINK message for a
    given interface, after the RTM_DELLINK for it. It turns out that the
    message is a wireless extensions message, which was sent because the
    interface had been connected and disconnection while it was deleted
    caused a wext message.
    
    For its netlink messages, wext uses RTM_NEWLINK, but the message is
    without all the regular rtnetlink attributes, so "ip monitor link"
    prints just rudimentary information:
    
    5: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default
        link/ether 02:00:00:00:01:00 brd ff:ff:ff:ff:ff:ff
    Deleted 5: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
        link/ether 02:00:00:00:01:00 brd ff:ff:ff:ff:ff:ff
    5: wlan1: <BROADCAST,MULTICAST,UP>
        link/ether
    (from my hwsim reproduction)
    
    This can cause userspace to get confused since it doesn't expect an
    RTM_NEWLINK message after RTM_DELLINK.
    
    The reason for this is that wext schedules a worker to send out the
    messages, and the scheduling delay can cause the messages to get out
    to userspace in different order.
    
    To fix this, have wext register a netdevice notifier and flush out
    any pending messages when netdevice state changes. This fixes any
    ordering whenever the original message wasn't sent by a notifier
    itself.
    
    Reported-by: Beniamino Galvani <bgalvani@redhat.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5107bd77d4603d426ecfdcde901d20633b2b7e9f
Author: CQ Tang <cq.tang@intel.com>
Date:   Wed Jan 13 21:15:03 2016 +0000

    iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG
    
    commit fda3bec12d0979aae3f02ee645913d66fbc8a26e upstream.
    
    This is a 32-bit register. Apparently harmless on real hardware, but
    causing justified warnings in simulation.
    
    Signed-off-by: CQ Tang <cq.tang@intel.com>
    Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 16b059733afec75695550c0cfa3b116f79c54720
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Mar 6 19:52:46 2016 +0000

    crypto: {blk,giv}cipher: Set has_setkey
    
    Commit a1383cd86a06 ("crypto: skcipher - Add crypto_skcipher_has_setkey")
    was incorrectly backported to the 3.2.y and 3.16.y stable branches.
    We need to set ablkcipher_tfm::has_setkey in the
    crypto_init_blkcipher_ops_async() and crypto_init_givcipher_ops()
    functions as well as crypto_init_ablkcipher_ops().
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d0c73ef2830a952e0bf2b5618a6d50b9d21fdfc2
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Mar 6 22:07:37 2016 +0000

    Revert "crypto: algif_skcipher - Do not dereference ctx without socket lock"
    
    This reverts commit c54ddfbb1b691d77c52b76ca6e13ca7082eb3b82, which
    was a poorly backported version of commit
    6454c2b83f719057069777132b13949e4c6b6350 upstream.  The small part I
    was able to backport makes no sense by itself.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>