commit bb47c5ece25da44126f06a0583cc836e2abbe1e4
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Wed Feb 24 11:04:33 2016 +0100

    Linux 3.12.55

commit af8d971602b9583e5e8400e637e2a48c7480bc64
Author: Dave Chinner <dchinner@redhat.com>
Date:   Tue Jan 12 07:03:44 2016 +1100

    xfs: inode recovery readahead can race with inode buffer creation
    
    commit b79f4a1c68bb99152d0785ee4ea3ab4396cdacc6 upstream.
    
    When we do inode readahead in log recovery, we do can do the
    readahead before we've replayed the icreate transaction that stamps
    the buffer with inode cores. The inode readahead verifier catches
    this and marks the buffer as !done to indicate that it doesn't yet
    contain valid inodes.
    
    In adding buffer error notification  (i.e. setting b_error = -EIO at
    the same time as as we clear the done flag) to such a readahead
    verifier failure, we can then get subsequent inode recovery failing
    with this error:
    
    XFS (dm-0): metadata I/O error: block 0xa00060 ("xlog_recover_do..(read#2)") error 5 numblks 32
    
    This occurs when readahead completion races with icreate item replay
    such as:
    
    	inode readahead
    		find buffer
    		lock buffer
    		submit RA io
    	....
    	icreate recovery
    	    xfs_trans_get_buffer
    		find buffer
    		lock buffer
    		<blocks on RA completion>
    	.....
    	<ra completion>
    		fails verifier
    		clear XBF_DONE
    		set bp->b_error = -EIO
    		release and unlock buffer
    	<icreate gains lock>
    	icreate initialises buffer
    	marks buffer as done
    	adds buffer to delayed write queue
    	releases buffer
    
    At this point, we have an initialised inode buffer that is up to
    date but has an -EIO state registered against it. When we finally
    get to recovering an inode in that buffer:
    
    	inode item recovery
    	    xfs_trans_read_buffer
    		find buffer
    		lock buffer
    		sees XBF_DONE is set, returns buffer
    	    sees bp->b_error is set
    		fail log recovery!
    
    Essentially, we need xfs_trans_get_buf_map() to clear the error status of
    the buffer when doing a lookup. This function returns uninitialised
    buffers, so the buffer returned can not be in an error state and
    none of the code that uses this function expects b_error to be set
    on return. Indeed, there is an ASSERT(!bp->b_error); in the
    transaction case in xfs_trans_get_buf_map() that would have caught
    this if log recovery used transactions....
    
    This patch firstly changes the inode readahead failure to set -EIO
    on the buffer, and secondly changes xfs_buf_get_map() to never
    return a buffer with an error state set so this first change doesn't
    cause unexpected log recovery failures.
    
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 811848048f1e4d74efaf299b0eba05ef50bc3e4f
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Mon Jan 4 16:13:21 2016 +1100

    libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct
    
    commit 96f859d52bcb1c6ea6f3388d39862bf7143e2f30 upstream.
    
    Because struct xfs_agfl is 36 bytes long and has a 64-bit integer
    inside it, gcc will quietly round the structure size up to the nearest
    64 bits -- in this case, 40 bytes.  This results in the XFS_AGFL_SIZE
    macro returning incorrect results for v5 filesystems on 64-bit
    machines (118 items instead of 119).  As a result, a 32-bit xfs_repair
    will see garbage in AGFL item 119 and complain.
    
    Therefore, tell gcc not to pad the structure so that the AGFL size
    calculation is correct.
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9aa1d60820b8fb0ce71d2ee7e406836c86ab55e9
Author: Rusty Russell <rusty@rustcorp.com.au>
Date:   Wed Feb 3 16:55:26 2016 +1030

    module: wrapper for symbol name.
    
    commit 2e7bac536106236104e9e339531ff0fcdb7b8147 upstream.
    
    This trivial wrapper adds clarity and makes the following patch
    smaller.
    
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8a39ca32bd3910e1df5824769bacb9b7af3d83b9
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sat Dec 19 20:07:38 2015 +0000

    futex: Drop refcount if requeue_pi() acquired the rtmutex
    
    commit fb75a4282d0d9a3c7c44d940582c2d226cf3acfb upstream.
    
    If the proxy lock in the requeue loop acquires the rtmutex for a
    waiter then it acquired also refcount on the pi_state related to the
    futex, but the waiter side does not drop the reference count.
    
    Add the missing free_pi_state() call.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Darren Hart <darren@dvhart.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Bhuvanesh_Surachari@mentor.com
    Cc: Andy Lowe <Andy_Lowe@mentor.com>
    Link: http://lkml.kernel.org/r/20151219200607.178132067@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 5e903959740934e0fe34a01ce5b5511cf501d4c6
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Jan 26 12:24:25 2016 +0300

    intel_scu_ipcutil: underflow in scu_reg_access()
    
    commit b1d353ad3d5835b16724653b33c05124e1b5acf1 upstream.
    
    "count" is controlled by the user and it can be negative.  Let's prevent
    that by making it unsigned.  You have to have CAP_SYS_RAWIO to call this
    function so the bug is not as serious as it could be.
    
    Fixes: 5369c02d951a ('intel_scu_ipc: Utility driver for intel scu ipc')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 535f0e46f5ba30d9a84c62dc92e70cfac34938ff
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Feb 5 15:36:16 2016 -0800

    dump_stack: avoid potential deadlocks
    
    commit d7ce36924344ace0dbdc855b1206cacc46b36d45 upstream.
    
    Some servers experienced fatal deadlocks because of a combination of
    bugs, leading to multiple cpus calling dump_stack().
    
    The checksumming bug was fixed in commit 34ae6a1aa054 ("ipv6: update
    skb->csum when CE mark is propagated").
    
    The second problem is a faulty locking in dump_stack()
    
    CPU1 runs in process context and calls dump_stack(), grabs dump_lock.
    
       CPU2 receives a TCP packet under softirq, grabs socket spinlock, and
       call dump_stack() from netdev_rx_csum_fault().
    
       dump_stack() spins on atomic_cmpxchg(&dump_lock, -1, 2), since
       dump_lock is owned by CPU1
    
    While dumping its stack, CPU1 is interrupted by a softirq, and happens
    to process a packet for the TCP socket locked by CPU2.
    
    CPU1 spins forever in spin_lock() : deadlock
    
    Stack trace on CPU1 looked like :
    
        NMI backtrace for cpu 1
        RIP: _raw_spin_lock+0x25/0x30
        ...
        Call Trace:
          <IRQ>
          tcp_v6_rcv+0x243/0x620
          ip6_input_finish+0x11f/0x330
          ip6_input+0x38/0x40
          ip6_rcv_finish+0x3c/0x90
          ipv6_rcv+0x2a9/0x500
          process_backlog+0x461/0xaa0
          net_rx_action+0x147/0x430
          __do_softirq+0x167/0x2d0
          call_softirq+0x1c/0x30
          do_softirq+0x3f/0x80
          irq_exit+0x6e/0xc0
          smp_call_function_single_interrupt+0x35/0x40
          call_function_single_interrupt+0x6a/0x70
          <EOI>
          printk+0x4d/0x4f
          printk_address+0x31/0x33
          print_trace_address+0x33/0x3c
          print_context_stack+0x7f/0x119
          dump_trace+0x26b/0x28e
          show_trace_log_lvl+0x4f/0x5c
          show_stack_log_lvl+0x104/0x113
          show_stack+0x42/0x44
          dump_stack+0x46/0x58
          netdev_rx_csum_fault+0x38/0x3c
          __skb_checksum_complete_head+0x6e/0x80
          __skb_checksum_complete+0x11/0x20
          tcp_rcv_established+0x2bd5/0x2fd0
          tcp_v6_do_rcv+0x13c/0x620
          sk_backlog_rcv+0x15/0x30
          release_sock+0xd2/0x150
          tcp_recvmsg+0x1c1/0xfc0
          inet_recvmsg+0x7d/0x90
          sock_recvmsg+0xaf/0xe0
          ___sys_recvmsg+0x111/0x3b0
          SyS_recvmsg+0x5c/0xb0
          system_call_fastpath+0x16/0x1b
    
    Fixes: b58d977432c8 ("dump_stack: serialize the output from dump_stack()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Alex Thorlton <athorlton@sgi.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 135bf262ed99bfbbaaff963b05d4add55ff8c4ab
Author: Konstantin Khlebnikov <koct9i@gmail.com>
Date:   Fri Feb 5 15:37:01 2016 -0800

    radix-tree: fix oops after radix_tree_iter_retry
    
    commit 732042821cfa106b3c20b9780e4c60fee9d68900 upstream.
    
    Helper radix_tree_iter_retry() resets next_index to the current index.
    In following radix_tree_next_slot current chunk size becomes zero.  This
    isn't checked and it tries to dereference null pointer in slot.
    
    Tagged iterator is fine because retry happens only at slot 0 where tag
    bitmask in iter->tags is filled with single bit.
    
    Fixes: 46437f9a554f ("radix-tree: fix race in gang lookup")
    Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
    Cc: Matthew Wilcox <willy@linux.intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Ohad Ben-Cohen <ohad@wizery.com>
    Cc: Jeremiah Mahler <jmmahler@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 44e026574e970b19ce548b659459ed8286cc5a44
Author: Matthew Wilcox <willy@linux.intel.com>
Date:   Tue Feb 2 16:57:52 2016 -0800

    radix-tree: fix race in gang lookup
    
    commit 46437f9a554fbe3e110580ca08ab703b59f2f95a upstream.
    
    If the indirect_ptr bit is set on a slot, that indicates we need to redo
    the lookup.  Introduce a new function radix_tree_iter_retry() which
    forces the loop to retry the lookup by setting 'slot' to NULL and
    turning the iterator back to point at the problematic entry.
    
    This is a pretty rare problem to hit at the moment; the lookup has to
    race with a grow of the radix tree from a height of 0.  The consequences
    of hitting this race are that gang lookup could return a pointer to a
    radix_tree_node instead of a pointer to whatever the user had inserted
    in the tree.
    
    Fixes: cebbd29e1c2f ("radix-tree: rewrite gang lookup using iterator")
    Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Ohad Ben-Cohen <ohad@wizery.com>
    Cc: Konstantin Khlebnikov <khlebnikov@openvz.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1c2456e301b60e027413bc4aec797a343a2b0d50
Author: Martijn Coenen <maco@google.com>
Date:   Fri Jan 15 16:57:49 2016 -0800

    memcg: only free spare array when readers are done
    
    commit 6611d8d76132f86faa501de9451a89bf23fb2371 upstream.
    
    A spare array holding mem cgroup threshold events is kept around to make
    sure we can always safely deregister an event and have an array to store
    the new set of events in.
    
    In the scenario where we're going from 1 to 0 registered events, the
    pointer to the primary array containing 1 event is copied to the spare
    slot, and then the spare slot is freed because no events are left.
    However, it is freed before calling synchronize_rcu(), which means
    readers may still be accessing threshold->primary after it is freed.
    
    Fixed by only freeing after synchronize_rcu().
    
    Signed-off-by: Martijn Coenen <maco@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Vladimir Davydov <vdavydov@virtuozzo.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 72ecf7ea4ad85bc9b0ce90f34c8c08f628d6be8b
Author: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Date:   Thu Jan 14 15:16:53 2016 -0800

    scripts/bloat-o-meter: fix python3 syntax error
    
    commit 72214a24a7677d4c7501eecc9517ed681b5f2db2 upstream.
    
    In Python3+ print is a function so the old syntax is not correct
    anymore:
    
      $ ./scripts/bloat-o-meter vmlinux.o vmlinux.o.old
        File "./scripts/bloat-o-meter", line 61
          print "add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s (%s)" % \
                                                                         ^
      SyntaxError: invalid syntax
    
    Fix by calling print as a function.
    
    Tested on python 2.7.11, 3.5.1
    
    Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit aab71806c9415232202c59aaf1083c285a1658a3
Author: Laura Abbott <labbott@fedoraproject.org>
Date:   Thu Jan 14 15:16:50 2016 -0800

    dma-debug: switch check from _text to _stext
    
    commit ea535e418c01837d07b6c94e817540f50bfdadb0 upstream.
    
    In include/asm-generic/sections.h:
    
      /*
       * Usage guidelines:
       * _text, _data: architecture specific, don't use them in
       * arch-independent code
       * [_stext, _etext]: contains .text.* sections, may also contain
       * .rodata.*
       *                   and/or .init.* sections
    
    _text is not guaranteed across architectures.  Architectures such as ARM
    may reuse parts which are not actually text and erroneously trigger a bug.
    Switch to using _stext which is guaranteed to contain text sections.
    
    Came out of https://lkml.kernel.org/g/<567B1176.4000106@redhat.com>
    
    Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 2194c6e713de1508c203148638faa91cbd992aac
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Thu Jan 14 15:16:47 2016 -0800

    m32r: fix m32104ut_defconfig build fail
    
    commit 601f1db653217f205ffa5fb33514b4e1711e56d1 upstream.
    
    The build of m32104ut_defconfig for m32r arch was failing for long long
    time with the error:
    
      ERROR: "memory_start" [fs/udf/udf.ko] undefined!
      ERROR: "memory_end" [fs/udf/udf.ko] undefined!
      ERROR: "memory_end" [drivers/scsi/sg.ko] undefined!
      ERROR: "memory_start" [drivers/scsi/sg.ko] undefined!
      ERROR: "memory_end" [drivers/i2c/i2c-dev.ko] undefined!
      ERROR: "memory_start" [drivers/i2c/i2c-dev.ko] undefined!
    
    As done in other architectures export the symbols to fix the error.
    
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f555d8c469b4e693510b7d4486b9cf200d2ba930
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Jan 26 17:50:12 2016 +0200

    xhci: Fix list corruption in urb dequeue at host removal
    
    commit 5c82171167adb8e4ac77b91a42cd49fb211a81a0 upstream.
    
    xhci driver frees data for all devices, both usb2 and and usb3 the
    first time usb_remove_hcd() is called, including td_list and and xhci_ring
    structures.
    
    When usb_remove_hcd() is called a second time for the second xhci bus it
    will try to dequeue all pending urbs, and touches td_list which is already
    freed for that endpoint.
    
    Reported-by: Joe Lawrence <joe.lawrence@stratus.com>
    Tested-by: Joe Lawrence <joe.lawrence@stratus.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 5a0451620e5c3ab83fbfd27d9103d0d6192d46d8
Author: Andrew Banman <abanman@sgi.com>
Date:   Tue Dec 29 14:54:25 2015 -0800

    mm/memory_hotplug.c: check for missing sections in test_pages_in_a_zone()
    
    commit 5f0f2887f4de9508dcf438deab28f1de8070c271 upstream.
    
    test_pages_in_a_zone() does not account for the possibility of missing
    sections in the given pfn range.  pfn_valid_within always returns 1 when
    CONFIG_HOLES_IN_ZONE is not set, allowing invalid pfns from missing
    sections to pass the test, leading to a kernel oops.
    
    Wrap an additional pfn loop with PAGES_PER_SECTION granularity to check
    for missing sections before proceeding into the zone-check code.
    
    This also prevents a crash from offlining memory devices with missing
    sections.  Despite this, it may be a good idea to keep the related patch
    '[PATCH 3/3] drivers: memory: prohibit offlining of memory blocks with
    missing sections' because missing sections in a memory block may lead to
    other problems not covered by the scope of this fix.
    
    Signed-off-by: Andrew Banman <abanman@sgi.com>
    Acked-by: Alex Thorlton <athorlton@sgi.com>
    Cc: Russ Anderson <rja@sgi.com>
    Cc: Alex Thorlton <athorlton@sgi.com>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Greg KH <greg@kroah.com>
    Cc: Seth Jennings <sjennings@variantweb.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d11bce1f90f52c278a53c127cf65fbfe294f3594
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>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7acdc7b409aa4fbb87a5abdaabadbb25e69fba06
Author: Aurélien Francillon <aurelien@francillon.net>
Date:   Sat Jan 2 20:39:54 2016 -0800

    Input: i8042 - add Fujitsu Lifebook U745 to the nomux list
    
    commit dd0d0d4de582a6a61c032332c91f4f4cb2bab569 upstream.
    
    Without i8042.nomux=1 the Elantech touch pad is not working at all on
    a Fujitsu Lifebook U745. This patch does not seem necessary for all
    U745 (maybe because of different BIOS versions?). However, it was
    verified that the patch does not break those (see opensuse bug 883192:
    https://bugzilla.opensuse.org/show_bug.cgi?id=883192).
    
    Signed-off-by: Aurélien Francillon <aurelien@francillon.net>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 07c9b9b83232ccbc6dff1300fcbabd4d26dbfc05
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Mon Jan 11 17:35:38 2016 -0800

    Input: elantech - mark protocols v2 and v3 as semi-mt
    
    commit 6544a1df11c48c8413071aac3316792e4678fbfb upstream.
    
    When using a protocol v2 or v3 hardware, elantech uses the function
    elantech_report_semi_mt_data() to report data. This devices are rather
    creepy because if num_finger is 3, (x2,y2) is (0,0). Yes, only one valid
    touch is reported.
    
    Anyway, userspace (libinput) is now confused by these (0,0) touches,
    and detect them as palm, and rejects them.
    
    Commit 3c0213d17a09 ("Input: elantech - fix semi-mt protocol for v3 HW")
    was sufficient enough for xf86-input-synaptics and libinput before it has
    palm rejection. Now we need to actually tell libinput that this device is
    a semi-mt one and it should not rely on the actual values of the 2 touches.
    
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 40426404b1761857eef6c61efd056b20de115497
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Nov 6 11:26:01 2015 -0800

    Input: elantech - add Fujitsu Lifebook U745 to force crc_enabled
    
    commit 60603950f836ef4e88daddf61a273b91e671db2d upstream.
    
    Another Lifebook machine that needs the same quirk as other similar
    models to make the driver working.
    
    Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=883192
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 5b48ad31b41c677d4f0c78791efa78500e72b988
Author: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date:   Fri Jan 15 16:54:03 2016 -0800

    mm: soft-offline: check return value in second __get_any_page() call
    
    commit d96b339f453997f2f08c52da3f41423be48c978f upstream.
    
    I saw the following BUG_ON triggered in a testcase where a process calls
    madvise(MADV_SOFT_OFFLINE) on thps, along with a background process that
    calls migratepages command repeatedly (doing ping-pong among different
    NUMA nodes) for the first process:
    
       Soft offlining page 0x60000 at 0x700000600000
       __get_any_page: 0x60000 free buddy page
       page:ffffea0001800000 count:0 mapcount:-127 mapping:          (null) index:0x1
       flags: 0x1fffc0000000000()
       page dumped because: VM_BUG_ON_PAGE(atomic_read(&page->_count) == 0)
       ------------[ cut here ]------------
       kernel BUG at /src/linux-dev/include/linux/mm.h:342!
       invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
       Modules linked in: cfg80211 rfkill crc32c_intel serio_raw virtio_balloon i2c_piix4 virtio_blk virtio_net ata_generic pata_acpi
       CPU: 3 PID: 3035 Comm: test_alloc_gene Tainted: G           O    4.4.0-rc8-v4.4-rc8-160107-1501-00000-rc8+ #74
       Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
       task: ffff88007c63d5c0 ti: ffff88007c210000 task.ti: ffff88007c210000
       RIP: 0010:[<ffffffff8118998c>]  [<ffffffff8118998c>] put_page+0x5c/0x60
       RSP: 0018:ffff88007c213e00  EFLAGS: 00010246
       Call Trace:
         put_hwpoison_page+0x4e/0x80
         soft_offline_page+0x501/0x520
         SyS_madvise+0x6bc/0x6f0
         entry_SYSCALL_64_fastpath+0x12/0x6a
       Code: 8b fc ff ff 5b 5d c3 48 89 df e8 b0 fa ff ff 48 89 df 31 f6 e8 c6 7d ff ff 5b 5d c3 48 c7 c6 08 54 a2 81 48 89 df e8 a4 c5 01 00 <0f> 0b 66 90 66 66 66 66 90 55 48 89 e5 41 55 41 54 53 48 8b 47
       RIP  [<ffffffff8118998c>] put_page+0x5c/0x60
        RSP <ffff88007c213e00>
    
    The root cause resides in get_any_page() which retries to get a refcount
    of the page to be soft-offlined.  This function calls
    put_hwpoison_page(), expecting that the target page is putback to LRU
    list.  But it can be also freed to buddy.  So the second check need to
    care about such case.
    
    Fixes: af8fae7c0886 ("mm/memory-failure.c: clean up soft_offline_page()")
    Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Jerome Marchand <jmarchan@redhat.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Steve Capper <steve.capper@linaro.org>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Christoph Lameter <cl@linux.com>
    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: Jiri Slaby <jslaby@suse.cz>

commit affc1b9e84738b96f2e4e24a6fc95e09ef9a7b4b
Author: Roman Gushchin <klamm@yandex-team.ru>
Date:   Mon Oct 12 16:33:44 2015 +0300

    fuse: break infinite loop in fuse_fill_write_pages()
    
    commit 3ca8138f014a913f98e6ef40e939868e1e9ea876 upstream.
    
    I got a report about unkillable task eating CPU. Further
    investigation shows, that the problem is in the fuse_fill_write_pages()
    function. If iov's first segment has zero length, we get an infinite
    loop, because we never reach iov_iter_advance() call.
    
    Fix this by calling iov_iter_advance() before repeating an attempt to
    copy data from userspace.
    
    A similar problem is described in 124d3b7041f ("fix writev regression:
    pan hanging unkillable and un-straceable"). If zero-length segmend
    is followed by segment with invalid address,
    iov_iter_fault_in_readable() checks only first segment (zero-length),
    iov_iter_copy_from_user_atomic() skips it, fails at second and
    returns zero -> goto again without skipping zero-length segment.
    
    Patch calls iov_iter_advance() before goto again: we'll skip zero-length
    segment at second iteraction and iov_iter_fault_in_readable() will detect
    invalid address.
    
    Special thanks to Konstantin Khlebnikov, who helped a lot with the commit
    description.
    
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Maxim Patlasov <mpatlasov@parallels.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: Roman Gushchin <klamm@yandex-team.ru>
    Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
    Fixes: ea9b9907b82a ("fuse: implement perform_write")
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8c6bd58155c1718aa12d7ffa3e318ed3962e5f07
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Mon Feb 8 09:14:37 2016 +0100

    ARM: 8517/1: ICST: avoid arithmetic overflow in icst_hz()
    
    commit 5070fb14a0154f075c8b418e5bc58a620ae85a45 upstream.
    
    When trying to set the ICST 307 clock to 25174000 Hz I ran into
    this arithmetic error: the icst_hz_to_vco() correctly figure out
    DIVIDE=2, RDW=100 and VDW=99 yielding a frequency of
    25174000 Hz out of the VCO. (I replicated the icst_hz() function
    in a spreadsheet to verify this.)
    
    However, when I called icst_hz() on these VCO settings it would
    instead return 4122709 Hz. This causes an error in the common
    clock driver for ICST as the common clock framework will call
    .round_rate() on the clock which will utilize icst_hz_to_vco()
    followed by icst_hz() suggesting the erroneous frequency, and
    then the clock gets set to this.
    
    The error did not manifest in the old clock framework since
    this high frequency was only used by the CLCD, which calls
    clk_set_rate() without first calling clk_round_rate() and since
    the old clock framework would not call clk_round_rate() before
    setting the frequency, the correct values propagated into
    the VCO.
    
    After some experimenting I figured out that it was due to a simple
    arithmetic overflow: the divisor for 24Mhz reference frequency
    as reference becomes 24000000*2*(99+8)=0x132212400 and the "1"
    in bit 32 overflows and is lost.
    
    But introducing an explicit 64-by-32 bit do_div() and casting
    the divisor into (u64) we get the right frequency back, and the
    right frequency gets set.
    
    Tested on the ARM Versatile.
    
    Cc: linux-clk@vger.kernel.org
    Cc: Pawel Moll <pawel.moll@arm.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d306ee9e24d2715985273829974876842d247e21
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Wed Feb 10 09:25:17 2016 +0100

    ARM: 8519/1: ICST: try other dividends than 1
    
    commit e972c37459c813190461dabfeaac228e00aae259 upstream.
    
    Since the dawn of time the ICST code has only supported divide
    by one or hang in an eternal loop. Luckily we were always dividing
    by one because the reference frequency for the systems using
    the ICSTs is 24MHz and the [min,max] values for the PLL input
    if [10,320] MHz for ICST307 and [6,200] for ICST525, so the loop
    will always terminate immediately without assigning any divisor
    for the reference frequency.
    
    But for the code to make sense, let's insert the missing i++
    
    Reported-by: David Binderman <dcb314@hotmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 02d2716d3300fd8bb4fab0a977a779fb68339249
Author: Anson Huang <Anson.Huang@freescale.com>
Date:   Mon Dec 7 10:09:19 2015 +0100

    ARM: 8471/1: need to save/restore arm register(r11) when it is corrupted
    
    commit fa0708b320f6da4c1104fe56e01b7abf66fd16ad upstream.
    
    In cpu_v7_do_suspend routine, r11 is used while it is NOT
    saved/restored, different compiler may have different usage
    of ARM general registers, so it may cause issues during
    calling cpu_v7_do_suspend.
    
    We meet kernel fault occurs when using GCC 4.8.3, r11 contains
    valid value before calling into cpu_v7_do_suspend, but when returned
    from this routine, r11 is corrupted and lead to kernel fault.
    Doing save/restore for those corrupted registers is a must in
    assemble code.
    
    Signed-off-by: Anson Huang <Anson.Huang@freescale.com>
    Reviewed-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 58893eec901c4a69d66aca3ae593f122204014d1
Author: Helmut Klein <hgkr.klein@gmail.com>
Date:   Wed Nov 11 15:03:04 2015 +0100

    ARM: dts: Kirkwood: Fix QNAP TS219 power-off
    
    commit 5442f0eadf2885453d5b2ed8c8592f32a3744f8e upstream.
    
    The "reg" entry in the "poweroff" section of "kirkwood-ts219.dtsi"
    addressed the wrong uart (0 = console). This patch changes the address
    to select uart 1, which is the uart connected to the pic
    microcontroller, which can switch the device off.
    
    Signed-off-by: Helmut Klein <hgkr.klein@gmail.com>
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Fixes: 4350a47bbac3 ("ARM: Kirkwood: Make use of the QNAP Power off driver.")
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit fc53080753d10b3389eb55c817b42e3ba1be719d
Author: Andrew Gabbasov <andrew_gabbasov@mentor.com>
Date:   Thu Dec 24 10:25:33 2015 -0600

    udf: Check output buffer length when converting name to CS0
    
    commit bb00c898ad1ce40c4bb422a8207ae562e9aea7ae upstream.
    
    If a name contains at least some characters with Unicode values
    exceeding single byte, the CS0 output should have 2 bytes per character.
    And if other input characters have single byte Unicode values, then
    the single input byte is converted to 2 output bytes, and the length
    of output becomes larger than the length of input. And if the input
    name is long enough, the output length may exceed the allocated buffer
    length.
    
    All this means that conversion from UTF8 or NLS to CS0 requires
    checking of output length in order to stop when it exceeds the given
    output buffer size.
    
    [JK: Make code return -ENAMETOOLONG instead of silently truncating the
    name]
    
    Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b20777e701634754eadc8e12c492459c600161a0
Author: Andrew Gabbasov <andrew_gabbasov@mentor.com>
Date:   Thu Dec 24 10:25:32 2015 -0600

    udf: Prevent buffer overrun with multi-byte characters
    
    commit ad402b265ecf6fa22d04043b41444cdfcdf4f52d upstream.
    
    udf_CS0toUTF8 function stops the conversion when the output buffer
    length reaches UDF_NAME_LEN-2, which is correct maximum name length,
    but, when checking, it leaves the space for a single byte only,
    while multi-bytes output characters can take more space, causing
    buffer overflow.
    
    Similar error exists in udf_CS0toNLS function, that restricts
    the output length to UDF_NAME_LEN, while actual maximum allowed
    length is UDF_NAME_LEN-2.
    
    In these cases the output can override not only the current buffer
    length field, causing corruption of the name buffer itself, but also
    following allocation structures, causing kernel crash.
    
    Adjust the output length checks in both functions to prevent buffer
    overruns in case of multi-bytes UTF8 or NLS characters.
    
    Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ac79eb71083136ce2690777051e5e4d88a6639f0
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Fri Dec 11 15:54:16 2015 +0100

    udf: limit the maximum number of indirect extents in a row
    
    commit b0918d9f476a8434b055e362b83fa4fd1d462c3f upstream.
    
    udf_next_aext() just follows extent pointers while extents are marked as
    indirect. This can loop forever for corrupted filesystem. Limit number
    the of indirect extents we are willing to follow in a row.
    
    [JK: Updated changelog, limit, style]
    
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Cc: Jan Kara <jack@suse.com>
    Cc: Quentin Casasnovas <quentin.casasnovas@oracle.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d92f52252bd94d8c33631ca6d00d0eb5d2ef416a
Author: Andrew Elble <aweits@rit.edu>
Date:   Wed Dec 2 09:20:57 2015 -0500

    nfs: Fix race in __update_open_stateid()
    
    commit 361cad3c89070aeb37560860ea8bfc092d545adc upstream.
    
    We've seen this in a packet capture - I've intermixed what I
    think was going on. The fix here is to grab the so_lock sooner.
    
    1964379 -> #1 open (for write) reply seqid=1
    1964393 -> #2 open (for read) reply seqid=2
    
      __nfs4_close(), state->n_wronly--
      nfs4_state_set_mode_locked(), changes state->state = [R]
      state->flags is [RW]
      state->state is [R], state->n_wronly == 0, state->n_rdonly == 1
    
    1964398 -> #3 open (for write) call -> because close is already running
    1964399 -> downgrade (to read) call seqid=2 (close of #1)
    1964402 -> #3 open (for write) reply seqid=3
    
     __update_open_stateid()
       nfs_set_open_stateid_locked(), changes state->flags
       state->flags is [RW]
       state->state is [R], state->n_wronly == 0, state->n_rdonly == 1
       new sequence number is exposed now via nfs4_stateid_copy()
    
       next step would be update_open_stateflags(), pending so_lock
    
    1964403 -> downgrade reply seqid=2, fails with OLD_STATEID (close of #1)
    
       nfs4_close_prepare() gets so_lock and recalcs flags -> send close
    
    1964405 -> downgrade (to read) call seqid=3 (close of #1 retry)
    
       __update_open_stateid() gets so_lock
     * update_open_stateflags() updates state->n_wronly.
       nfs4_state_set_mode_locked() updates state->state
    
       state->flags is [RW]
       state->state is [RW], state->n_wronly == 1, state->n_rdonly == 1
    
     * should have suppressed the preceding nfs4_close_prepare() from
       sending open_downgrade
    
    1964406 -> write call
    1964408 -> downgrade (to read) reply seqid=4 (close of #1 retry)
    
       nfs_clear_open_stateid_locked()
       state->flags is [R]
       state->state is [RW], state->n_wronly == 1, state->n_rdonly == 1
    
    1964409 -> write reply (fails, openmode)
    
    Signed-off-by: Andrew Elble <aweits@rit.edu>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 69ef7d4fd9644907eb842a9a49887063df972331
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: Jiri Slaby <jslaby@suse.cz>

commit ec6e80b82e3c3ee5ee5c1f38983eeb3e88d7851e
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Thu Jan 14 13:41:14 2016 +0300

    cifs_dbg() outputs an uninitialized buffer in cifs_readdir()
    
    commit 01b9b0b28626db4a47d7f48744d70abca9914ef1 upstream.
    
    In some cases tmp_bug can be not filled in cifs_filldir and stay uninitialized,
    therefore its printk with "%s" modifier can leak content of kernelspace memory.
    If old content of this buffer does not contain '\0' access bejond end of
    allocated object can crash the host.
    
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: Steve French <steve.french@primarydata.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d4cd077ac5077d1bb4c213413576012bbaec516c
Author: Yong Li <sdliyong@gmail.com>
Date:   Wed Jan 6 09:09:43 2016 +0800

    iio: dac: mcp4725: set iio name property in sysfs
    
    commit 97a249e98a72d6b79fb7350a8dd56b147e9d5bdb upstream.
    
    Without this change, the name entity for mcp4725 is missing in
    /sys/bus/iio/devices/iio\:device*/name
    
    With this change, name is reported correctly
    
    Signed-off-by: Yong Li <sdliyong@gmail.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8506cf1df5369bd1eec433a1396dc88c87877852
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Fri Nov 27 14:55:56 2015 +0100

    iio: adis_buffer: Fix out-of-bounds memory access
    
    commit d590faf9e8f8509a0a0aa79c38e87fcc6b913248 upstream.
    
    The SPI tx and rx buffers are both supposed to be scan_bytes amount of
    bytes large and a common allocation is used to allocate both buffers. This
    puts the beginning of the tx buffer scan_bytes bytes after the rx buffer.
    The initialization of the tx buffer pointer is done adding scan_bytes to
    the beginning of the rx buffer, but since the rx buffer is of type __be16
    this will actually add two times as much and the tx buffer ends up pointing
    after the allocated buffer.
    
    Fix this by using scan_count, which is scan_bytes / 2, instead of
    scan_bytes when initializing the tx buffer pointer.
    
    Fixes: aacff892cbd5 ("staging:iio:adis: Preallocate transfer message")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3a9194b1b662ec675d8cc61d4347e586d3d435cb
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Sat Nov 21 13:33:00 2015 +0300

    iio: fix some warning messages
    
    commit 231bfe53c57e89857753c940192acba933cba56c upstream.
    
    WARN_ON() only takes a condition argument.  I have changed these to
    WARN() instead.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c66e8114c1ad0dced13ffd736bdaeb22132a6eb9
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Tue Oct 13 18:15:38 2015 +0200

    iio: ad5064: Fix ad5629/ad5669 shift
    
    commit 5dcbe97bedd6ba4b0f574a96cc2e293d26f3d857 upstream.
    
    The ad5629/ad5669 are the I2C variant of the ad5628/ad5668, which has a SPI
    interface. They are mostly identical with the exception that the shift
    factor is different. Currently the driver does not take care of this
    difference which leads to incorrect DAC output values.
    
    Fix this by introducing a custom channel spec for the ad5629/ad5669 with
    the correct shift factor.
    
    Fixes: commit 6a17a0768f77 ("iio:dac:ad5064: Add support for the ad5629r and ad5669r")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit baae260f5a33fa6eb699807a51ae9bad7d0ec331
Author: Michael Hennerich <michael.hennerich@analog.com>
Date:   Tue Oct 13 18:15:37 2015 +0200

    iio:ad5064: Make sure ad5064_i2c_write() returns 0 on success
    
    commit 03fe472ef33b7f31fbd11d300dbb3fdab9c00fd4 upstream.
    
    i2c_master_send() returns the number of bytes transferred on success while
    the ad5064 driver expects that the write() callback returns 0 on success.
    Fix that by translating any non negative return value of i2c_master_send()
    to 0.
    
    Fixes: commit 6a17a0768f77 ("iio:dac:ad5064: Add support for the ad5629r and ad5669r")
    Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 0e2e731e57da45eca06ff8e5f1c58e891b2e66ce
Author: Vladimir Zapolskiy <vz@mleia.com>
Date:   Sat Oct 17 21:44:38 2015 +0300

    iio: lpc32xx_adc: fix warnings caused by enabling unprepared clock
    
    commit 01bb70ae0b98d266fa3e860482c7ce22fa482a6e upstream.
    
    If common clock framework is configured, the driver generates a warning,
    which is fixed by this change:
    
        root@devkit3250:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw
        ------------[ cut here ]------------
        WARNING: CPU: 0 PID: 724 at drivers/clk/clk.c:727 clk_core_enable+0x2c/0xa4()
        Modules linked in: sc16is7xx snd_soc_uda1380
        CPU: 0 PID: 724 Comm: cat Not tainted 4.3.0-rc2+ #198
        Hardware name: LPC32XX SoC (Flattened Device Tree)
        Backtrace:
        [<>] (dump_backtrace) from [<>] (show_stack+0x18/0x1c)
        [<>] (show_stack) from [<>] (dump_stack+0x20/0x28)
        [<>] (dump_stack) from [<>] (warn_slowpath_common+0x90/0xb8)
        [<>] (warn_slowpath_common) from [<>] (warn_slowpath_null+0x24/0x2c)
        [<>] (warn_slowpath_null) from [<>] (clk_core_enable+0x2c/0xa4)
        [<>] (clk_core_enable) from [<>] (clk_enable+0x24/0x38)
        [<>] (clk_enable) from [<>] (lpc32xx_read_raw+0x38/0x80)
        [<>] (lpc32xx_read_raw) from [<>] (iio_read_channel_info+0x70/0x94)
        [<>] (iio_read_channel_info) from [<>] (dev_attr_show+0x28/0x4c)
        [<>] (dev_attr_show) from [<>] (sysfs_kf_seq_show+0x8c/0xf0)
        [<>] (sysfs_kf_seq_show) from [<>] (kernfs_seq_show+0x2c/0x30)
        [<>] (kernfs_seq_show) from [<>] (seq_read+0x1c8/0x440)
        [<>] (seq_read) from [<>] (kernfs_fop_read+0x38/0x170)
        [<>] (kernfs_fop_read) from [<>] (do_readv_writev+0x16c/0x238)
        [<>] (do_readv_writev) from [<>] (vfs_readv+0x50/0x58)
        [<>] (vfs_readv) from [<>] (default_file_splice_read+0x1a4/0x308)
        [<>] (default_file_splice_read) from [<>] (do_splice_to+0x78/0x84)
        [<>] (do_splice_to) from [<>] (splice_direct_to_actor+0xc8/0x1cc)
        [<>] (splice_direct_to_actor) from [<>] (do_splice_direct+0xa0/0xb8)
        [<>] (do_splice_direct) from [<>] (do_sendfile+0x1a8/0x30c)
        [<>] (do_sendfile) from [<>] (SyS_sendfile64+0x104/0x10c)
        [<>] (SyS_sendfile64) from [<>] (ret_fast_syscall+0x0/0x38)
    
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3eefb1c1b7a64a51035816d79944576a664fb482
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Mon Oct 12 14:56:28 2015 +0200

    iio:ad7793: Fix ad7785 product ID
    
    commit 785171fd6cd7dcd7ada5a733b6a2d44ec566c3a0 upstream.
    
    While the datasheet for the AD7785 lists 0xXB as the product ID the actual
    product ID is 0xX3.
    
    Fix the product ID otherwise the driver will reject the device due to non
    matching IDs.
    
    Fixes: e786cc26dcc5 ("staging:iio:ad7793: Implement stricter id checking")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit bf7642bd50a6c0fce916df212765d43ade882f8f
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date:   Wed Feb 10 08:03:26 2016 -0800

    scsi: fix soft lockup in scsi_remove_target() on module removal
    
    commit 90a88d6ef88edcfc4f644dddc7eef4ea41bccf8b upstream.
    
    This softlockup is currently happening:
    
    [  444.088002] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 22s! [kworker/1:1:29]
    [  444.088002] Modules linked in: lpfc(-) qla2x00tgt(O) qla2xxx_scst(O) scst_vdisk(O) scsi_transport_fc libcrc32c scst(O) dlm configfs nfsd lockd grace nfs_acl auth_rpcgss sunrpc ed
    d snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device dm_mod iTCO_wdt snd_hda_codec_realtek snd_hda_codec_generic gpio_ich iTCO_vendor_support ppdev snd_hda_intel snd_hda_codec snd_hda
    _core snd_hwdep tg3 snd_pcm snd_timer libphy lpc_ich parport_pc ptp acpi_cpufreq snd pps_core fjes parport i2c_i801 ehci_pci tpm_tis tpm sr_mod cdrom soundcore floppy hwmon sg 8250_
    fintek pcspkr i915 drm_kms_helper uhci_hcd ehci_hcd drm fb_sys_fops sysimgblt sysfillrect syscopyarea i2c_algo_bit usbcore button video usb_common fan ata_generic ata_piix libata th
    ermal
    [  444.088002] CPU: 1 PID: 29 Comm: kworker/1:1 Tainted: G           O    4.4.0-rc5-2.g1e923a3-default #1
    [  444.088002] Hardware name: FUJITSU SIEMENS ESPRIMO E           /D2164-A1, BIOS 5.00 R1.10.2164.A1               05/08/2006
    [  444.088002] Workqueue: fc_wq_4 fc_rport_final_delete [scsi_transport_fc]
    [  444.088002] task: f6266ec0 ti: f6268000 task.ti: f6268000
    [  444.088002] EIP: 0060:[<c07e7044>] EFLAGS: 00000286 CPU: 1
    [  444.088002] EIP is at _raw_spin_unlock_irqrestore+0x14/0x20
    [  444.088002] EAX: 00000286 EBX: f20d3800 ECX: 00000002 EDX: 00000286
    [  444.088002] ESI: f50ba800 EDI: f2146848 EBP: f6269ec8 ESP: f6269ec8
    [  444.088002]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
    [  444.088002] CR0: 8005003b CR2: 08f96600 CR3: 363ae000 CR4: 000006d0
    [  444.088002] Stack:
    [  444.088002]  f6269eec c066b0f7 00000286 f2146848 f50ba808 f50ba800 f50ba800 f2146a90
    [  444.088002]  f2146848 f6269f08 f8f0a4ed f3141000 f2146800 f2146a90 f619fa00 00000040
    [  444.088002]  f6269f40 c026cb25 00000001 166c6392 00000061 f6757140 f6136340 00000004
    [  444.088002] Call Trace:
    [  444.088002]  [<c066b0f7>] scsi_remove_target+0x167/0x1c0
    [  444.088002]  [<f8f0a4ed>] fc_rport_final_delete+0x9d/0x1e0 [scsi_transport_fc]
    [  444.088002]  [<c026cb25>] process_one_work+0x155/0x3e0
    [  444.088002]  [<c026cde7>] worker_thread+0x37/0x490
    [  444.088002]  [<c027214b>] kthread+0x9b/0xb0
    [  444.088002]  [<c07e72c1>] ret_from_kernel_thread+0x21/0x40
    
    What appears to be happening is that something has pinned the target
    so it can't go into STARGET_DEL via final release and the loop in
    scsi_remove_target spins endlessly until that happens.
    
    The fix for this soft lockup is to not keep looping over a device that
    we've called remove on but which hasn't gone into DEL state.  This
    patch will retain a simplistic memory of the last target and not keep
    looping over it.
    
    Reported-by: Sebastian Herbszt <herbszt@gmx.de>
    Tested-by: Sebastian Herbszt <herbszt@gmx.de>
    Fixes: 40998193560dab6c3ce8d25f4fa58a23e252ef38
    Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 14b9a5ea3cb23c295c67bb66bedbb2fede978bde
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Wed Jan 27 16:19:13 2016 +0200

    SCSI: Add Marvell Console to VPD blacklist
    
    commit 82c43310508eb19eb41fe7862e89afeb74030b84 upstream.
    
    I have a Marvell 88SE9230 SATA Controller that has some sort of
    integrated console SCSI device attached to one of the ports.
    
      ata14: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
      ata14.00: ATAPI: MARVELL VIRTUALL, 1.09, max UDMA/66
      ata14.00: configured for UDMA/66
      scsi 13:0:0:0: Processor         Marvell  Console 1.01 PQ: 0 ANSI: 5
    
    Sending it VPD INQUIRY command seem to always fail with following error:
    
      ata14.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
      ata14.00: irq_stat 0x40000001
      ata14.00: cmd a0/01:00:00:00:01/00:00:00:00:00/a0 tag 2 dma 16640 in
                Inquiry 12 01 00 00 ff 00res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x3 (HSM violation)
      ata14: hard resetting link
    
    This has been minor annoyance (only error printed on dmesg) until commit
    09e2b0b14690 ("scsi: rescan VPD attributes") added call to scsi_attach_vpd()
    in scsi_rescan_device(). The commit causes the system to splat out
    following errors continuously without ever reaching the UI:
    
      ata14.00: configured for UDMA/66
      ata14: EH complete
      ata14.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
      ata14.00: irq_stat 0x40000001
      ata14.00: cmd a0/01:00:00:00:01/00:00:00:00:00/a0 tag 6 dma 16640 in
                Inquiry 12 01 00 00 ff 00res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x3 (HSM violation)
      ata14: hard resetting link
      ata14: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
      ata14.00: configured for UDMA/66
      ata14: EH complete
      ata14.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
      ata14.00: irq_stat 0x40000001
      ata14.00: cmd a0/01:00:00:00:01/00:00:00:00:00/a0 tag 7 dma 16640 in
                Inquiry 12 01 00 00 ff 00res 00/00:00:00:00:00/00:00:00:00:00/00 Emask 0x3 (HSM violation)
    
    Without in-depth understanding of SCSI layer and the Marvell controller,
    I suspect this happens because when the link goes down (because of an
    error) we schedule scsi_rescan_device() which again fails to read VPD
    data... ad infinitum.
    
    Since VPD data cannot be read from the device anyway we prevent the SCSI
    layer from even trying by blacklisting the device. This gets away the
    error and the system starts up normally.
    
    [mkp: Widened the match to all revisions of this device]
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reported-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: Alexander Duyck <alexander.duyck@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 6c3964e45284838e2bc550d13484cc669510e6b4
Author: Hannes Reinecke <hare@suse.de>
Date:   Fri Jan 22 15:42:41 2016 +0100

    scsi_dh_rdac: always retry MODE SELECT on command lock violation
    
    commit d2d06d4fe0f2cc2df9b17fefec96e6e1a1271d91 upstream.
    
    If MODE SELECT returns with sense '05/91/36' (command lock violation)
    it should always be retried without counting the number of retries.
    During an HBA upgrade or similar circumstances one might see a flood
    of MODE SELECT command from various HBAs, which will easily trigger
    the sense code and exceed the retry count.
    
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 26d026b8d14d7d4f01fe59ab97b0c7c2c40d3ec7
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Tue Feb 2 16:57:35 2016 -0800

    drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration
    
    commit 461c7fa126794157484dca48e88effa4963e3af3 upstream.
    
    Reduced testcase:
    
        #include <fcntl.h>
        #include <unistd.h>
        #include <sys/mman.h>
        #include <numaif.h>
    
        #define SIZE 0x2000
    
        int main()
        {
            int fd;
            void *p;
    
            fd = open("/dev/sg0", O_RDWR);
            p = mmap(NULL, SIZE, PROT_EXEC, MAP_PRIVATE | MAP_LOCKED, fd, 0);
            mbind(p, SIZE, 0, NULL, 0, MPOL_MF_MOVE);
            return 0;
        }
    
    We shouldn't try to migrate pages in sg VMA as we don't have a way to
    update Sg_scatter_hold::pages accordingly from mm core.
    
    Let's mark the VMA as VM_IO to indicate to mm core that the VMA is not
    migratable.
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Doug Gilbert <dgilbert@interlog.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Shiraz Hashim <shashim@codeaurora.org>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Cc: syzkaller <syzkaller@googlegroups.com>
    Cc: Kostya Serebryany <kcc@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d0adf9364339ce879d0b08019c43726b3a0c6215
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Jan 20 11:26:01 2016 -0500

    SCSI: fix crashes in sd and sr runtime PM
    
    commit 13b4389143413a1f18127c07f72c74cad5b563e8 upstream.
    
    Runtime suspend during driver probe and removal can cause problems.
    The driver's runtime_suspend or runtime_resume callbacks may invoked
    before the driver has finished binding to the device or after the
    driver has unbound from the device.
    
    This problem shows up with the sd and sr drivers, and can cause disk
    or CD/DVD drives to become unusable as a result.  The fix is simple.
    The drivers store a pointer to the scsi_disk or scsi_cd structure as
    their private device data when probing is finished, so we simply have
    to be sure to clear the private data during removal and test it during
    runtime suspend/resume.
    
    This fixes <https://bugs.debian.org/801925>.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Paul Menzel <paul.menzel@giantmonkey.de>
    Reported-by: Erich Schubert <erich@debian.org>
    Reported-by: Alexandre Rossi <alexandre.rossi@gmail.com>
    Tested-by: Paul Menzel <paul.menzel@giantmonkey.de>
    Tested-by: Erich Schubert <erich@debian.org>
    Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 31de1ca845b45d4ff902304f35ca704fd51438dd
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Tue Jan 19 16:15:27 2016 -0800

    iscsi-target: Fix potential dead-lock during node acl delete
    
    commit 26a99c19f810b2593410899a5b304b21b47428a6 upstream.
    
    This patch is a iscsi-target specific bug-fix for a dead-lock
    that can occur during explicit struct se_node_acl->acl_group
    se_session deletion via configfs rmdir(2), when iscsi-target
    time2retain timer is still active.
    
    It changes iscsi-target to obtain se_portal_group->session_lock
    internally using spin_in_locked() to check for the specific
    se_node_acl configfs shutdown rmdir(2) case.
    
    Note this patch is intended for stable, and the subsequent
    v4.5-rc patch converts target_core_tpg.c to use proper
    se_sess->sess_kref reference counting for both se_node_acl
    deletion + se_node_acl->queue_depth se_session restart.
    
    Reported-by:: Sagi Grimberg <sagig@mellanox.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Andy Grover <agrover@redhat.com>
    Cc: Mike Christie <michaelc@cs.wisc.edu>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 229ad79ae873c93add15917f5bdafdee1e4ef5e4
Author: Ken Xue <ken.xue@amd.com>
Date:   Tue Dec 1 14:45:46 2015 +0800

    SCSI: Fix NULL pointer dereference in runtime PM
    
    commit 4fd41a8552afc01054d9d9fc7f1a63c324867d27 upstream.
    
    The routines in scsi_pm.c assume that if a runtime-PM callback is
    invoked for a SCSI device, it can only mean that the device's driver
    has asked the block layer to handle the runtime power management (by
    calling blk_pm_runtime_init(), which among other things sets q->dev).
    
    However, this assumption turns out to be wrong for things like the ses
    driver.  Normally ses devices are not allowed to do runtime PM, but
    userspace can override this setting.  If this happens, the kernel gets
    a NULL pointer dereference when blk_post_runtime_resume() tries to use
    the uninitialized q->dev pointer.
    
    This patch fixes the problem by checking q->dev in block layer before
    handle runtime PM. Since ses doesn't define any PM callbacks and call
    blk_pm_runtime_init(), the crash won't occur.
    
    This fixes Bugzilla #101371.
    https://bugzilla.kernel.org/show_bug.cgi?id=101371
    
    More discussion can be found from below link.
    http://marc.info/?l=linux-scsi&m=144163730531875&w=2
    
    Signed-off-by: Ken Xue <Ken.Xue@amd.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Cc: Xiangliang Yu <Xiangliang.Yu@amd.com>
    Cc: James E.J. Bottomley <JBottomley@odin.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Michael Terry <Michael.terry@canonical.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 81a7d1af2eaac94f946bb67589c9f88fd7e17d00
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Wed Nov 18 14:56:36 2015 -0800

    Fix a memory leak in scsi_host_dev_release()
    
    commit b49493f99690c8eaacfbc635bafaad629ea2c036 upstream.
    
    Avoid that kmemleak reports the following memory leak if a
    SCSI LLD calls scsi_host_alloc() and scsi_host_put() but neither
    scsi_host_add() nor scsi_host_remove(). The following shell
    command triggers that scenario:
    
    for ((i=0; i<2; i++)); do
      srp_daemon -oac |
      while read line; do
        echo $line >/sys/class/infiniband_srp/srp-mlx4_0-1/add_target
      done
    done
    
    unreferenced object 0xffff88021b24a220 (size 8):
      comm "srp_daemon", pid 56421, jiffies 4295006762 (age 4240.750s)
      hex dump (first 8 bytes):
        68 6f 73 74 35 38 00 a5                          host58..
      backtrace:
        [<ffffffff8151014a>] kmemleak_alloc+0x7a/0xc0
        [<ffffffff81165c1e>] __kmalloc_track_caller+0xfe/0x160
        [<ffffffff81260d2b>] kvasprintf+0x5b/0x90
        [<ffffffff81260e2d>] kvasprintf_const+0x8d/0xb0
        [<ffffffff81254b0c>] kobject_set_name_vargs+0x3c/0xa0
        [<ffffffff81337e3c>] dev_set_name+0x3c/0x40
        [<ffffffff81355757>] scsi_host_alloc+0x327/0x4b0
        [<ffffffffa03edc8e>] srp_create_target+0x4e/0x8a0 [ib_srp]
        [<ffffffff8133778b>] dev_attr_store+0x1b/0x20
        [<ffffffff811f27fa>] sysfs_kf_write+0x4a/0x60
        [<ffffffff811f1e8e>] kernfs_fop_write+0x14e/0x180
        [<ffffffff81176eef>] __vfs_write+0x2f/0xf0
        [<ffffffff811771e4>] vfs_write+0xa4/0x100
        [<ffffffff81177c64>] SyS_write+0x54/0xc0
        [<ffffffff8151b257>] entry_SYSCALL_64_fastpath+0x12/0x6f
    
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1ff4ce3f58ada0340eee40aba75fab67fa206585
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Thu Nov 5 14:11:59 2015 -0800

    iscsi-target: Fix rx_login_comp hang after login failure
    
    commit ca82c2bded29b38d36140bfa1e76a7bbfcade390 upstream.
    
    This patch addresses a case where iscsi_target_do_tx_login_io()
    fails sending the last login response PDU, after the RX/TX
    threads have already been started.
    
    The case centers around iscsi_target_rx_thread() not invoking
    allow_signal(SIGINT) before the send_sig(SIGINT, ...) occurs
    from the failure path, resulting in RX thread hanging
    indefinately on iscsi_conn->rx_login_comp.
    
    Note this bug is a regression introduced by:
    
      commit e54198657b65625085834847ab6271087323ffea
      Author: Nicholas Bellinger <nab@linux-iscsi.org>
      Date:   Wed Jul 22 23:14:19 2015 -0700
    
          iscsi-target: Fix iscsit_start_kthreads failure OOPs
    
    To address this bug, complete ->rx_login_complete for good
    measure in the failure path, and immediately return from
    RX thread context if connection state did not actually reach
    full feature phase (TARG_CONN_STATE_LOGGED_IN).
    
    Cc: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 54c4a58c53228f430a01bd75bf78a9d167c428f3
Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Date:   Tue Oct 27 10:49:54 2015 +0100

    scsi_sysfs: Fix queue_ramp_up_period return code
    
    commit 863e02d0e173bb9d8cea6861be22820b25c076cc upstream.
    
    Writing a number to /sys/bus/scsi/devices/<sdev>/queue_ramp_up_period
    returns the value of that number instead of the number of bytes written.
    This behavior can confuse programs expecting POSIX write() semantics.
    Fix this by returning the number of bytes written instead.
    
    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 259d9d2f2725b1a8ca4d70f10c860259aef1d1a5
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Oct 19 16:35:46 2015 +0200

    scsi: restart list search after unlock in scsi_remove_target
    
    commit 40998193560dab6c3ce8d25f4fa58a23e252ef38 upstream.
    
    When dropping a lock while iterating a list we must restart the search
    as other threads could have manipulated the list under us.  Without this
    we can get stuck in an endless loop.  This bug was introduced by
    
    commit bc3f02a795d3b4faa99d37390174be2a75d091bd
    Author: Dan Williams <djbw@fb.com>
    Date:   Tue Aug 28 22:12:10 2012 -0700
    
        [SCSI] scsi_remove_target: fix softlockup regression on hot remove
    
    Which was itself trying to fix a reported soft lockup issue
    
    http://thread.gmane.org/gmane.linux.kernel/1348679
    
    However, we believe even with this revert of the original patch, the soft
    lockup problem has been fixed by
    
    commit f2495e228fce9f9cec84367547813cbb0d6db15a
    Author: James Bottomley <JBottomley@Parallels.com>
    Date:   Tue Jan 21 07:01:41 2014 -0800
    
        [SCSI] dual scan thread bug fix
    
    Thanks go to Dan Williams <dan.j.williams@intel.com> for tracking all this
    prior history down.
    
    Reported-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Tested-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Fixes: bc3f02a795d3b4faa99d37390174be2a75d091bd
    Signed-off-by: James Bottomley <JBottomley@Odin.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1661a36984b6a7e5deb4b8a77eb8d1de237226be
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date:   Wed Jan 13 08:10:31 2016 -0800

    klist: fix starting point removed bug in klist iterators
    
    commit 00cd29b799e3449f0c68b1cc77cd4a5f95b42d17 upstream.
    
    The starting node for a klist iteration is often passed in from
    somewhere way above the klist infrastructure, meaning there's no
    guarantee the node is still on the list.  We've seen this in SCSI where
    we use bus_find_device() to iterate through a list of devices.  In the
    face of heavy hotplug activity, the last device returned by
    bus_find_device() can be removed before the next call.  This leads to
    
    Dec  3 13:22:02 localhost kernel: WARNING: CPU: 2 PID: 28073 at include/linux/kref.h:47 klist_iter_init_node+0x3d/0x50()
    Dec  3 13:22:02 localhost kernel: Modules linked in: scsi_debug x86_pkg_temp_thermal kvm_intel kvm irqbypass crc32c_intel joydev iTCO_wdt dcdbas ipmi_devintf acpi_power_meter iTCO_vendor_support ipmi_si imsghandler pcspkr wmi acpi_cpufreq tpm_tis tpm shpchp lpc_ich mfd_core nfsd nfs_acl lockd grace sunrpc tg3 ptp pps_core
    Dec  3 13:22:02 localhost kernel: CPU: 2 PID: 28073 Comm: cat Not tainted 4.4.0-rc1+ #2
    Dec  3 13:22:02 localhost kernel: Hardware name: Dell Inc. PowerEdge R320/08VT7V, BIOS 2.0.22 11/19/2013
    Dec  3 13:22:02 localhost kernel: ffffffff81a20e77 ffff880613acfd18 ffffffff81321eef 0000000000000000
    Dec  3 13:22:02 localhost kernel: ffff880613acfd50 ffffffff8107ca52 ffff88061176b198 0000000000000000
    Dec  3 13:22:02 localhost kernel: ffffffff814542b0 ffff880610cfb100 ffff88061176b198 ffff880613acfd60
    Dec  3 13:22:02 localhost kernel: Call Trace:
    Dec  3 13:22:02 localhost kernel: [<ffffffff81321eef>] dump_stack+0x44/0x55
    Dec  3 13:22:02 localhost kernel: [<ffffffff8107ca52>] warn_slowpath_common+0x82/0xc0
    Dec  3 13:22:02 localhost kernel: [<ffffffff814542b0>] ? proc_scsi_show+0x20/0x20
    Dec  3 13:22:02 localhost kernel: [<ffffffff8107cb4a>] warn_slowpath_null+0x1a/0x20
    Dec  3 13:22:02 localhost kernel: [<ffffffff8167225d>] klist_iter_init_node+0x3d/0x50
    Dec  3 13:22:02 localhost kernel: [<ffffffff81421d41>] bus_find_device+0x51/0xb0
    Dec  3 13:22:02 localhost kernel: [<ffffffff814545ad>] scsi_seq_next+0x2d/0x40
    [...]
    
    And an eventual crash. It can actually occur in any hotplug system
    which has a device finder and a starting device.
    
    We can fix this globally by making sure the starting node for
    klist_iter_init_node() is actually a member of the list before using it
    (and by starting from the beginning if it isn't).
    
    Reported-by: Ewan D. Milne <emilne@redhat.com>
    Tested-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 0081cd7bf9e070cb6f7f8a87ca3b9e191e73609a
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: Jiri Slaby <jslaby@suse.cz>

commit 2a4305da14a537a00ea1cdb53aa25ba293bd6e5b
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Mon Nov 16 17:25:16 2015 -0500

    tools lib traceevent: Fix output of %llu for 64 bit values read on 32 bit machines
    
    commit 32abc2ede536aae52978d6c0a8944eb1df14f460 upstream.
    
    When a long value is read on 32 bit machines for 64 bit output, the
    parsing needs to change "%lu" into "%llu", as the value is read
    natively.
    
    Unfortunately, if "%llu" is already there, the code will add another "l"
    to it and fail to parse it properly.
    
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Link: http://lkml.kernel.org/r/20151116172516.4b79b109@gandalf.local.home
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 66d3ad932a161c39dd672dd84afb94d27ea3eedb
Author: Jann Horn <jann@thejh.net>
Date:   Wed Jan 20 15:00:04 2016 -0800

    ptrace: use fsuid, fsgid, effective creds for fs access checks
    
    commit caaee6234d05a58c5b4d05e7bf766131b810a657 upstream.
    
    By checking the effective credentials instead of the real UID / permitted
    capabilities, ensure that the calling process actually intended to use its
    credentials.
    
    To ensure that all ptrace checks use the correct caller credentials (e.g.
    in case out-of-tree code or newly added code omits the PTRACE_MODE_*CREDS
    flag), use two new flags and require one of them to be set.
    
    The problem was that when a privileged task had temporarily dropped its
    privileges, e.g.  by calling setreuid(0, user_uid), with the intent to
    perform following syscalls with the credentials of a user, it still passed
    ptrace access checks that the user would not be able to pass.
    
    While an attacker should not be able to convince the privileged task to
    perform a ptrace() syscall, this is a problem because the ptrace access
    check is reused for things in procfs.
    
    In particular, the following somewhat interesting procfs entries only rely
    on ptrace access checks:
    
     /proc/$pid/stat - uses the check for determining whether pointers
         should be visible, useful for bypassing ASLR
     /proc/$pid/maps - also useful for bypassing ASLR
     /proc/$pid/cwd - useful for gaining access to restricted
         directories that contain files with lax permissions, e.g. in
         this scenario:
         lrwxrwxrwx root root /proc/13020/cwd -> /root/foobar
         drwx------ root root /root
         drwxr-xr-x root root /root/foobar
         -rw-r--r-- root root /root/foobar/secret
    
    Therefore, on a system where a root-owned mode 6755 binary changes its
    effective credentials as described and then dumps a user-specified file,
    this could be used by an attacker to reveal the memory layout of root's
    processes or reveal the contents of files he is not allowed to access
    (through /proc/$pid/cwd).
    
    [akpm@linux-foundation.org: fix warning]
    Signed-off-by: Jann Horn <jann@thejh.net>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: Casey Schaufler <casey@schaufler-ca.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Morris <james.l.morris@oracle.com>
    Cc: "Serge E. Hallyn" <serge.hallyn@ubuntu.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f3dff1cbe9c2cbb3791fe4c4750c722fda986197
Author: Peter Feiner <pfeiner@google.com>
Date:   Wed Nov 4 09:21:46 2015 -0800

    perf trace: Fix documentation for -i
    
    commit 956959f6b7a982b2e789a7a8fa1de437074a5eb9 upstream.
    
    The -i flag was incorrectly listed as a short flag for --no-inherit.  It
    should have only been listed as a short flag for --input.
    
    This documentation error has existed since the --input flag was
    introduced in 6810fc915f7a89d8134edb3996dbbf8eac386c26 (perf trace: Add
    option to analyze events in a file versus live).
    
    Signed-off-by: Peter Feiner <pfeiner@google.com>
    Cc: David Ahern <dsahern@gmail.com>
    Link: http://lkml.kernel.org/r/1446657706-14518-1-git-send-email-pfeiner@google.com
    Fixes: 6810fc915f7a ("perf trace: Add option to analyze events in a file versus live")
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c788b454913823cfadf40c4a96cfd09abb7c8dfc
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Mon Nov 2 10:50:51 2015 +0100

    perf: Fix inherited events vs. tracepoint filters
    
    commit b71b437eedaed985062492565d9d421d975ae845 upstream.
    
    Arnaldo reported that tracepoint filters seem to misbehave (ie. not
    apply) on inherited events.
    
    The fix is obvious; filters are only set on the actual (parent)
    event, use the normal pattern of using this parent event for filters.
    This is safe because each child event has a reference to it.
    
    Reported-by: Arnaldo Carvalho de Melo <acme@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@kernel.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frédéric Weisbecker <fweisbec@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/20151102095051.GN17308@twins.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 2c0d636da649546fde114db32cd70b7f56e8d11b
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Feb 3 19:17:27 2016 +0000

    Btrfs: fix hang on extent buffer lock caused by the inode_paths ioctl
    
    commit 0c0fe3b0fa45082cd752553fdb3a4b42503a118e upstream.
    
    While doing some tests I ran into an hang on an extent buffer's rwlock
    that produced the following trace:
    
    [39389.800012] NMI watchdog: BUG: soft lockup - CPU#15 stuck for 22s! [fdm-stress:32166]
    [39389.800016] NMI watchdog: BUG: soft lockup - CPU#14 stuck for 22s! [fdm-stress:32165]
    [39389.800016] Modules linked in: btrfs dm_mod ppdev xor sha256_generic hmac raid6_pq drbg ansi_cprng aesni_intel i2c_piix4 acpi_cpufreq aes_x86_64 ablk_helper tpm_tis parport_pc i2c_core sg cryptd evdev psmouse lrw tpm parport gf128mul serio_raw pcspkr glue_helper processor button loop autofs4 ext4 crc16 mbcache jbd2 sd_mod sr_mod cdrom ata_generic virtio_scsi ata_piix libata virtio_pci virtio_ring crc32c_intel scsi_mod e1000 virtio floppy [last unloaded: btrfs]
    [39389.800016] irq event stamp: 0
    [39389.800016] hardirqs last  enabled at (0): [<          (null)>]           (null)
    [39389.800016] hardirqs last disabled at (0): [<ffffffff8104e58d>] copy_process+0x638/0x1a35
    [39389.800016] softirqs last  enabled at (0): [<ffffffff8104e58d>] copy_process+0x638/0x1a35
    [39389.800016] softirqs last disabled at (0): [<          (null)>]           (null)
    [39389.800016] CPU: 14 PID: 32165 Comm: fdm-stress Not tainted 4.4.0-rc6-btrfs-next-18+ #1
    [39389.800016] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS by qemu-project.org 04/01/2014
    [39389.800016] task: ffff880175b1ca40 ti: ffff8800a185c000 task.ti: ffff8800a185c000
    [39389.800016] RIP: 0010:[<ffffffff810902af>]  [<ffffffff810902af>] queued_spin_lock_slowpath+0x57/0x158
    [39389.800016] RSP: 0018:ffff8800a185fb80  EFLAGS: 00000202
    [39389.800016] RAX: 0000000000000101 RBX: ffff8801710c4e9c RCX: 0000000000000101
    [39389.800016] RDX: 0000000000000100 RSI: 0000000000000001 RDI: 0000000000000001
    [39389.800016] RBP: ffff8800a185fb98 R08: 0000000000000001 R09: 0000000000000000
    [39389.800016] R10: ffff8800a185fb68 R11: 6db6db6db6db6db7 R12: ffff8801710c4e98
    [39389.800016] R13: ffff880175b1ca40 R14: ffff8800a185fc10 R15: ffff880175b1ca40
    [39389.800016] FS:  00007f6d37fff700(0000) GS:ffff8802be9c0000(0000) knlGS:0000000000000000
    [39389.800016] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [39389.800016] CR2: 00007f6d300019b8 CR3: 0000000037c93000 CR4: 00000000001406e0
    [39389.800016] Stack:
    [39389.800016]  ffff8801710c4e98 ffff8801710c4e98 ffff880175b1ca40 ffff8800a185fbb0
    [39389.800016]  ffffffff81091e11 ffff8801710c4e98 ffff8800a185fbc8 ffffffff81091895
    [39389.800016]  ffff8801710c4e98 ffff8800a185fbe8 ffffffff81486c5c ffffffffa067288c
    [39389.800016] Call Trace:
    [39389.800016]  [<ffffffff81091e11>] queued_read_lock_slowpath+0x46/0x60
    [39389.800016]  [<ffffffff81091895>] do_raw_read_lock+0x3e/0x41
    [39389.800016]  [<ffffffff81486c5c>] _raw_read_lock+0x3d/0x44
    [39389.800016]  [<ffffffffa067288c>] ? btrfs_tree_read_lock+0x54/0x125 [btrfs]
    [39389.800016]  [<ffffffffa067288c>] btrfs_tree_read_lock+0x54/0x125 [btrfs]
    [39389.800016]  [<ffffffffa0622ced>] ? btrfs_find_item+0xa7/0xd2 [btrfs]
    [39389.800016]  [<ffffffffa069363f>] btrfs_ref_to_path+0xd6/0x174 [btrfs]
    [39389.800016]  [<ffffffffa0693730>] inode_to_path+0x53/0xa2 [btrfs]
    [39389.800016]  [<ffffffffa0693e2e>] paths_from_inode+0x117/0x2ec [btrfs]
    [39389.800016]  [<ffffffffa0670cff>] btrfs_ioctl+0xd5b/0x2793 [btrfs]
    [39389.800016]  [<ffffffff8108a8b0>] ? arch_local_irq_save+0x9/0xc
    [39389.800016]  [<ffffffff81276727>] ? __this_cpu_preempt_check+0x13/0x15
    [39389.800016]  [<ffffffff8108a8b0>] ? arch_local_irq_save+0x9/0xc
    [39389.800016]  [<ffffffff8118b3d4>] ? rcu_read_unlock+0x3e/0x5d
    [39389.800016]  [<ffffffff811822f8>] do_vfs_ioctl+0x42b/0x4ea
    [39389.800016]  [<ffffffff8118b4f3>] ? __fget_light+0x62/0x71
    [39389.800016]  [<ffffffff8118240e>] SyS_ioctl+0x57/0x79
    [39389.800016]  [<ffffffff814872d7>] entry_SYSCALL_64_fastpath+0x12/0x6f
    [39389.800016] Code: b9 01 01 00 00 f7 c6 00 ff ff ff 75 32 83 fe 01 89 ca 89 f0 0f 45 d7 f0 0f b1 13 39 f0 74 04 89 c6 eb e2 ff ca 0f 84 fa 00 00 00 <8b> 03 84 c0 74 04 f3 90 eb f6 66 c7 03 01 00 e9 e6 00 00 00 e8
    [39389.800012] Modules linked in: btrfs dm_mod ppdev xor sha256_generic hmac raid6_pq drbg ansi_cprng aesni_intel i2c_piix4 acpi_cpufreq aes_x86_64 ablk_helper tpm_tis parport_pc i2c_core sg cryptd evdev psmouse lrw tpm parport gf128mul serio_raw pcspkr glue_helper processor button loop autofs4 ext4 crc16 mbcache jbd2 sd_mod sr_mod cdrom ata_generic virtio_scsi ata_piix libata virtio_pci virtio_ring crc32c_intel scsi_mod e1000 virtio floppy [last unloaded: btrfs]
    [39389.800012] irq event stamp: 0
    [39389.800012] hardirqs last  enabled at (0): [<          (null)>]           (null)
    [39389.800012] hardirqs last disabled at (0): [<ffffffff8104e58d>] copy_process+0x638/0x1a35
    [39389.800012] softirqs last  enabled at (0): [<ffffffff8104e58d>] copy_process+0x638/0x1a35
    [39389.800012] softirqs last disabled at (0): [<          (null)>]           (null)
    [39389.800012] CPU: 15 PID: 32166 Comm: fdm-stress Tainted: G             L  4.4.0-rc6-btrfs-next-18+ #1
    [39389.800012] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS by qemu-project.org 04/01/2014
    [39389.800012] task: ffff880179294380 ti: ffff880034a60000 task.ti: ffff880034a60000
    [39389.800012] RIP: 0010:[<ffffffff81091e8d>]  [<ffffffff81091e8d>] queued_write_lock_slowpath+0x62/0x72
    [39389.800012] RSP: 0018:ffff880034a639f0  EFLAGS: 00000206
    [39389.800012] RAX: 0000000000000101 RBX: ffff8801710c4e98 RCX: 0000000000000000
    [39389.800012] RDX: 00000000000000ff RSI: 0000000000000000 RDI: ffff8801710c4e9c
    [39389.800012] RBP: ffff880034a639f8 R08: 0000000000000001 R09: 0000000000000000
    [39389.800012] R10: ffff880034a639b0 R11: 0000000000001000 R12: ffff8801710c4e98
    [39389.800012] R13: 0000000000000001 R14: ffff880172cbc000 R15: ffff8801710c4e00
    [39389.800012] FS:  00007f6d377fe700(0000) GS:ffff8802be9e0000(0000) knlGS:0000000000000000
    [39389.800012] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [39389.800012] CR2: 00007f6d3d3c1000 CR3: 0000000037c93000 CR4: 00000000001406e0
    [39389.800012] Stack:
    [39389.800012]  ffff8801710c4e98 ffff880034a63a10 ffffffff81091963 ffff8801710c4e98
    [39389.800012]  ffff880034a63a30 ffffffff81486f1b ffffffffa0672cb3 ffff8801710c4e00
    [39389.800012]  ffff880034a63a78 ffffffffa0672cb3 ffff8801710c4e00 ffff880034a63a58
    [39389.800012] Call Trace:
    [39389.800012]  [<ffffffff81091963>] do_raw_write_lock+0x72/0x8c
    [39389.800012]  [<ffffffff81486f1b>] _raw_write_lock+0x3a/0x41
    [39389.800012]  [<ffffffffa0672cb3>] ? btrfs_tree_lock+0x119/0x251 [btrfs]
    [39389.800012]  [<ffffffffa0672cb3>] btrfs_tree_lock+0x119/0x251 [btrfs]
    [39389.800012]  [<ffffffffa061aeba>] ? rcu_read_unlock+0x5b/0x5d [btrfs]
    [39389.800012]  [<ffffffffa061ce13>] ? btrfs_root_node+0xda/0xe6 [btrfs]
    [39389.800012]  [<ffffffffa061ce83>] btrfs_lock_root_node+0x22/0x42 [btrfs]
    [39389.800012]  [<ffffffffa062046b>] btrfs_search_slot+0x1b8/0x758 [btrfs]
    [39389.800012]  [<ffffffff810fc6b0>] ? time_hardirqs_on+0x15/0x28
    [39389.800012]  [<ffffffffa06365db>] btrfs_lookup_inode+0x31/0x95 [btrfs]
    [39389.800012]  [<ffffffff8108d62f>] ? trace_hardirqs_on+0xd/0xf
    [39389.800012]  [<ffffffff8148482b>] ? mutex_lock_nested+0x397/0x3bc
    [39389.800012]  [<ffffffffa068821b>] __btrfs_update_delayed_inode+0x59/0x1c0 [btrfs]
    [39389.800012]  [<ffffffffa068858e>] __btrfs_commit_inode_delayed_items+0x194/0x5aa [btrfs]
    [39389.800012]  [<ffffffff81486ab7>] ? _raw_spin_unlock+0x31/0x44
    [39389.800012]  [<ffffffffa0688a48>] __btrfs_run_delayed_items+0xa4/0x15c [btrfs]
    [39389.800012]  [<ffffffffa0688d62>] btrfs_run_delayed_items+0x11/0x13 [btrfs]
    [39389.800012]  [<ffffffffa064048e>] btrfs_commit_transaction+0x234/0x96e [btrfs]
    [39389.800012]  [<ffffffffa0618d10>] btrfs_sync_fs+0x145/0x1ad [btrfs]
    [39389.800012]  [<ffffffffa0671176>] btrfs_ioctl+0x11d2/0x2793 [btrfs]
    [39389.800012]  [<ffffffff8108a8b0>] ? arch_local_irq_save+0x9/0xc
    [39389.800012]  [<ffffffff81140261>] ? __might_fault+0x4c/0xa7
    [39389.800012]  [<ffffffff81140261>] ? __might_fault+0x4c/0xa7
    [39389.800012]  [<ffffffff8108a8b0>] ? arch_local_irq_save+0x9/0xc
    [39389.800012]  [<ffffffff8118b3d4>] ? rcu_read_unlock+0x3e/0x5d
    [39389.800012]  [<ffffffff811822f8>] do_vfs_ioctl+0x42b/0x4ea
    [39389.800012]  [<ffffffff8118b4f3>] ? __fget_light+0x62/0x71
    [39389.800012]  [<ffffffff8118240e>] SyS_ioctl+0x57/0x79
    [39389.800012]  [<ffffffff814872d7>] entry_SYSCALL_64_fastpath+0x12/0x6f
    [39389.800012] Code: f0 0f b1 13 85 c0 75 ef eb 2a f3 90 8a 03 84 c0 75 f8 f0 0f b0 13 84 c0 75 f0 ba ff 00 00 00 eb 0a f0 0f b1 13 ff c8 74 0b f3 90 <8b> 03 83 f8 01 75 f7 eb ed c6 43 04 00 5b 5d c3 0f 1f 44 00 00
    
    This happens because in the code path executed by the inode_paths ioctl we
    end up nesting two calls to read lock a leaf's rwlock when after the first
    call to read_lock() and before the second call to read_lock(), another
    task (running the delayed items as part of a transaction commit) has
    already called write_lock() against the leaf's rwlock. This situation is
    illustrated by the following diagram:
    
             Task A                       Task B
    
      btrfs_ref_to_path()               btrfs_commit_transaction()
        read_lock(&eb->lock);
    
                                          btrfs_run_delayed_items()
                                            __btrfs_commit_inode_delayed_items()
                                              __btrfs_update_delayed_inode()
                                                btrfs_lookup_inode()
    
                                                  write_lock(&eb->lock);
                                                    --> task waits for lock
    
        read_lock(&eb->lock);
        --> makes this task hang
            forever (and task B too
    	of course)
    
    So fix this by avoiding doing the nested read lock, which is easily
    avoidable. This issue does not happen if task B calls write_lock() after
    task A does the second call to read_lock(), however there does not seem
    to exist anything in the documentation that mentions what is the expected
    behaviour for recursive locking of rwlocks (leaving the idea that doing
    so is not a good usage of rwlocks).
    
    Also, as a side effect necessary for this fix, make sure we do not
    needlessly read lock extent buffers when the input path has skip_locking
    set (used when called from send).
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ce0c9e8cc99631b875504c67c04715f87cf47348
Author: David Sterba <dsterba@suse.com>
Date:   Fri Nov 13 13:44:28 2015 +0100

    btrfs: properly set the termination value of ctx->pos in readdir
    
    commit bc4ef7592f657ae81b017207a1098817126ad4cb upstream.
    
    The value of ctx->pos in the last readdir call is supposed to be set to
    INT_MAX due to 32bit compatibility, unless 'pos' is intentially set to a
    larger value, then it's LLONG_MAX.
    
    There's a report from PaX SIZE_OVERFLOW plugin that "ctx->pos++"
    overflows (https://forums.grsecurity.net/viewtopic.php?f=1&t=4284), on a
    64bit arch, where the value is 0x7fffffffffffffff ie. LLONG_MAX before
    the increment.
    
    We can get to that situation like that:
    
    * emit all regular readdir entries
    * still in the same call to readdir, bump the last pos to INT_MAX
    * next call to readdir will not emit any entries, but will reach the
      bump code again, finds pos to be INT_MAX and sets it to LLONG_MAX
    
    Normally this is not a problem, but if we call readdir again, we'll find
    'pos' set to LLONG_MAX and the unconditional increment will overflow.
    
    The report from Victor at
    (http://thread.gmane.org/gmane.comp.file-systems.btrfs/49500) with debugging
    print shows that pattern:
    
     Overflow: e
     Overflow: 7fffffff
     Overflow: 7fffffffffffffff
     PAX: size overflow detected in function btrfs_real_readdir
       fs/btrfs/inode.c:5760 cicus.935_282 max, count: 9, decl: pos; num: 0;
       context: dir_context;
     CPU: 0 PID: 2630 Comm: polkitd Not tainted 4.2.3-grsec #1
     Hardware name: Gigabyte Technology Co., Ltd. H81ND2H/H81ND2H, BIOS F3 08/11/2015
      ffffffff81901608 0000000000000000 ffffffff819015e6 ffffc90004973d48
      ffffffff81742f0f 0000000000000007 ffffffff81901608 ffffc90004973d78
      ffffffff811cb706 0000000000000000 ffff8800d47359e0 ffffc90004973ed8
     Call Trace:
      [<ffffffff81742f0f>] dump_stack+0x4c/0x7f
      [<ffffffff811cb706>] report_size_overflow+0x36/0x40
      [<ffffffff812ef0bc>] btrfs_real_readdir+0x69c/0x6d0
      [<ffffffff811dafc8>] iterate_dir+0xa8/0x150
      [<ffffffff811e6d8d>] ? __fget_light+0x2d/0x70
      [<ffffffff811dba3a>] SyS_getdents+0xba/0x1c0
     Overflow: 1a
      [<ffffffff811db070>] ? iterate_dir+0x150/0x150
      [<ffffffff81749b69>] entry_SYSCALL_64_fastpath+0x12/0x83
    
    The jump from 7fffffff to 7fffffffffffffff happens when new dir entries
    are not yet synced and are processed from the delayed list. Then the code
    could go to the bump section again even though it might not emit any new
    dir entries from the delayed list.
    
    The fix avoids entering the "bump" section again once we've finished
    emitting the entries, both for synced and delayed entries.
    
    References: https://forums.grsecurity.net/viewtopic.php?f=1&t=4284
    Reported-by: Victor <services@swwu.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Tested-by: Holger Hoffstätte <holger.hoffstaette@googlemail.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b7993fb7ce48ca9ba2cfba6226c0f54db589fb9d
Author: Insu Yun <wuninsu@gmail.com>
Date:   Fri Feb 12 01:15:59 2016 -0500

    ext4: fix potential integer overflow
    
    commit 46901760b46064964b41015d00c140c83aa05bcf upstream.
    
    Since sizeof(ext_new_group_data) > sizeof(ext_new_flex_group_data),
    integer overflow could be happened.
    Therefore, need to fix integer overflow sanitization.
    
    Signed-off-by: Insu Yun <wuninsu@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 2698377daeb469a9d68021979d2e506922f788da
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Feb 19 17:36:21 2016 -0800

    AIO: properly check iovec sizes
    
    In Linus's tree, the iovec code has been reworked massively, but in
    older kernels the AIO layer should be checking this before passing the
    request on to other layers.
    
    Many thanks to Ben Hawkes of Google Project Zero for pointing out the
    issue.
    
    Reported-by: Ben Hawkes <hawkes@google.com>
    Acked-by: Benjamin LaHaise <bcrl@kvack.org>
    Tested-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 6bfc19b4c22da366a019505065c0225d2b0e3867
Author: Soeren Grunewald <soeren.grunewald@desy.de>
Date:   Thu Jun 11 09:25:05 2015 +0200

    serial: 8250_pci: Correct uartclk for xr17v35x expansion chips
    
    commit 899f0c1c7dbcc487fdc8756a49ff70b1d5d75f89 upstream.
    
    The internal clock of the master chip, which is usually 125MHz, is only half
    (62.5MHz) for the slave chips. So we have to adjust the uartclk for all the
    slave ports. Therefor we add a new function to determine if a slave chip is
    present and update pci_xr17v35x_setup accordingly.
    
    Signed-off-by: Soeren Grunewald <soeren.grunewald@desy.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit dd5ceb1ae6372270ee56731df5913fcbb278448d
Author: Herton R. Krzesinski <herton@redhat.com>
Date:   Thu Jan 14 17:56:58 2016 -0200

    pty: make sure super_block is still valid in final /dev/tty close
    
    commit 1f55c718c290616889c04946864a13ef30f64929 upstream.
    
    Considering current pty code and multiple devpts instances, it's possible
    to umount a devpts file system while a program still has /dev/tty opened
    pointing to a previosuly closed pty pair in that instance. In the case all
    ptmx and pts/N files are closed, umount can be done. If the program closes
    /dev/tty after umount is done, devpts_kill_index will use now an invalid
    super_block, which was already destroyed in the umount operation after
    running ->kill_sb. This is another "use after free" type of issue, but now
    related to the allocated super_block instance.
    
    To avoid the problem (warning at ida_remove and potential crashes) for
    this specific case, I added two functions in devpts which grabs additional
    references to the super_block, which pty code now uses so it makes sure
    the super block structure is still valid until pty shutdown is done.
    I also moved the additional inode references to the same functions, which
    also covered similar case with inode being freed before /dev/tty final
    close/shutdown.
    
    Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 552c893b95a97b442aa26fb8a415ff34089333db
Author: Herton R. Krzesinski <herton@redhat.com>
Date:   Mon Jan 11 12:07:43 2016 -0200

    pty: fix possible use after free of tty->driver_data
    
    commit 2831c89f42dcde440cfdccb9fee9f42d54bbc1ef upstream.
    
    This change fixes a bug for a corner case where we have the the last
    release from a pty master/slave coming from a previously opened /dev/tty
    file. When this happens, the tty->driver_data can be stale, due to all
    ptmx or pts/N files having already been closed before (and thus the inode
    related to these files, which tty->driver_data points to, being already
    freed/destroyed).
    
    The fix here is to keep a reference on the opened master ptmx inode.
    We maintain the inode referenced until the final pty_unix98_shutdown,
    and only pass this inode to devpts_kill_index.
    
    Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
    Reviewed-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1b49b92c666d57620b3e87bf2584a0ea0bd6424e
Author: Peter Hurley <peter@hurleysoftware.com>
Date:   Sun Jan 10 22:40:58 2016 -0800

    staging/speakup: Use tty_ldisc_ref() for paste kworker
    
    commit f4f9edcf9b5289ed96113e79fa65a7bf27ecb096 upstream.
    
    As the function documentation for tty_ldisc_ref_wait() notes, it is
    only callable from a tty file_operations routine; otherwise there
    is no guarantee the ref won't be NULL.
    
    The key difference with the VT's paste_selection() is that is an ioctl,
    where __speakup_paste_selection() is completely async kworker, kicked
    off from interrupt context.
    
    Fixes: 28a821c30688 ("Staging: speakup: Update __speakup_paste_selection()
           tty (ab)usage to match vt")
    Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ef0a7ee47fbd17f11e3cf743f98df0eb2eb9e3c6
Author: Peter Hurley <peter@hurleysoftware.com>
Date:   Fri Nov 27 14:18:39 2015 -0500

    wan/x25: Fix use-after-free in x25_asy_open_tty()
    
    commit ee9159ddce14bc1dec9435ae4e3bd3153e783706 upstream.
    
    The N_X25 line discipline may access the previous line discipline's closed
    and already-freed private data on open [1].
    
    The tty->disc_data field _never_ refers to valid data on entry to the
    line discipline's open() method. Rather, the ldisc is expected to
    initialize that field for its own use for the lifetime of the instance
    (ie. from open() to close() only).
    
    [1]
        [  634.336761] ==================================================================
        [  634.338226] BUG: KASAN: use-after-free in x25_asy_open_tty+0x13d/0x490 at addr ffff8800a743efd0
        [  634.339558] Read of size 4 by task syzkaller_execu/8981
        [  634.340359] =============================================================================
        [  634.341598] BUG kmalloc-512 (Not tainted): kasan: bad access detected
        ...
        [  634.405018] Call Trace:
        [  634.405277] dump_stack (lib/dump_stack.c:52)
        [  634.405775] print_trailer (mm/slub.c:655)
        [  634.406361] object_err (mm/slub.c:662)
        [  634.406824] kasan_report_error (mm/kasan/report.c:138 mm/kasan/report.c:236)
        [  634.409581] __asan_report_load4_noabort (mm/kasan/report.c:279)
        [  634.411355] x25_asy_open_tty (drivers/net/wan/x25_asy.c:559 (discriminator 1))
        [  634.413997] tty_ldisc_open.isra.2 (drivers/tty/tty_ldisc.c:447)
        [  634.414549] tty_set_ldisc (drivers/tty/tty_ldisc.c:567)
        [  634.415057] tty_ioctl (drivers/tty/tty_io.c:2646 drivers/tty/tty_io.c:2879)
        [  634.423524] do_vfs_ioctl (fs/ioctl.c:43 fs/ioctl.c:607)
        [  634.427491] SyS_ioctl (fs/ioctl.c:622 fs/ioctl.c:613)
        [  634.427945] entry_SYSCALL_64_fastpath (arch/x86/entry/entry_64.S:188)
    
    Reported-and-tested-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b9485806adcc27a2ee6cdb6b87a90e67ad429b0e
Author: Tony Lindgren <tony@atomide.com>
Date:   Mon Nov 30 21:39:53 2015 -0800

    phy: twl4030-usb: Relase usb phy on unload
    
    commit b241d31ef2f6a289d33dcaa004714b26e06f476f upstream.
    
    Otherwise rmmod omap2430; rmmod phy-twl4030-usb; modprobe omap2430
    will try to use a non-existing phy and oops:
    
    Unable to handle kernel paging request at virtual address b6f7c1f0
    ...
    [<c048a284>] (devm_usb_get_phy_by_node) from [<bf0758ac>]
    (omap2430_musb_init+0x44/0x2b4 [omap2430])
    [<bf0758ac>] (omap2430_musb_init [omap2430]) from [<bf055ec0>]
    (musb_init_controller+0x194/0x878 [musb_hdrc])
    
    Cc: Bin Liu <b-liu@ti.com>
    Cc: Felipe Balbi <balbi@ti.com>
    Cc: Kishon Vijay Abraham I <kishon@ti.com>
    Cc: NeilBrown <neil@brown.name>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c9ccd18aeaf036d6df0d762e3ba02aaa5a4a4596
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: Jiri Slaby <jslaby@suse.cz>

commit ae0b4dd6fb604d7760b7dab66d382018b9e54d79
Author: Matt Fleming <matt@codeblueprint.co.uk>
Date:   Fri Jan 29 11:36:10 2016 +0000

    x86/mm/pat: Avoid truncation when converting cpa->numpages to address
    
    commit 742563777e8da62197d6cb4b99f4027f59454735 upstream.
    
    There are a couple of nasty truncation bugs lurking in the pageattr
    code that can be triggered when mapping EFI regions, e.g. when we pass
    a cpa->pgd pointer. Because cpa->numpages is a 32-bit value, shifting
    left by PAGE_SHIFT will truncate the resultant address to 32-bits.
    
    Viorel-Cătălin managed to trigger this bug on his Dell machine that
    provides a ~5GB EFI region which requires 1236992 pages to be mapped.
    When calling populate_pud() the end of the region gets calculated
    incorrectly in the following buggy expression,
    
      end = start + (cpa->numpages << PAGE_SHIFT);
    
    And only 188416 pages are mapped. Next, populate_pud() gets invoked
    for a second time because of the loop in __change_page_attr_set_clr(),
    only this time no pages get mapped because shifting the remaining
    number of pages (1048576) by PAGE_SHIFT is zero. At which point the
    loop in __change_page_attr_set_clr() spins forever because we fail to
    map progress.
    
    Hitting this bug depends very much on the virtual address we pick to
    map the large region at and how many pages we map on the initial run
    through the loop. This explains why this issue was only recently hit
    with the introduction of commit
    
      a5caa209ba9c ("x86/efi: Fix boot crash by mapping EFI memmap
       entries bottom-up at runtime, instead of top-down")
    
    It's interesting to note that safe uses of cpa->numpages do exist in
    the pageattr code. If instead of shifting ->numpages we multiply by
    PAGE_SIZE, no truncation occurs because PAGE_SIZE is a UL value, and
    so the result is unsigned long.
    
    To avoid surprises when users try to convert very large cpa->numpages
    values to addresses, change the data type from 'int' to 'unsigned
    long', thereby making it suitable for shifting by PAGE_SHIFT without
    any type casting.
    
    The alternative would be to make liberal use of casting, but that is
    far more likely to cause problems in the future when someone adds more
    code and fails to cast properly; this bug was difficult enough to
    track down in the first place.
    
    Reported-and-tested-by: Viorel-Cătălin Răpițeanu <rapiteanu.catalin@gmail.com>
    Acked-by: Borislav Petkov <bp@alien8.de>
    Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=110131
    Link: http://lkml.kernel.org/r/1454067370-10374-1-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1f9253b715169ca42c657937c58516a6cac7b416
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Fri Jan 1 13:39:22 2016 +0100

    s390: fix normalization bug in exception table sorting
    
    commit bcb7825a77f41c7dd91da6f7ac10b928156a322e upstream.
    
    The normalization pass in the sorting routine of the relative exception
    table serves two purposes:
    - it ensures that the address fields of the exception table entries are
      fully ordered, so that no ambiguities arise between entries with
      identical instruction offsets (i.e., when two instructions that are
      exactly 8 bytes apart each have an exception table entry associated with
      them)
    - it ensures that the offsets of both the instruction and the fixup fields
      of each entry are relative to their final location after sorting.
    
    Commit eb608fb366de ("s390/exceptions: switch to relative exception table
    entries") ported the relative exception table format from x86, but modified
    the sorting routine to only normalize the instruction offset field and not
    the fixup offset field. The result is that the fixup offset of each entry
    will be relative to the original location of the entry before sorting,
    likely leading to crashes when those entries are dereferenced.
    
    Fixes: eb608fb366de ("s390/exceptions: switch to relative exception table entries")
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7f3c42624a02ccadb9440e8c5a738edb3116c91f
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue May 26 14:45:29 2015 -0700

    tty: remove platform_sysrq_reset_seq
    
    commit ffb6e0c9a0572f8e5f8e9337a1b40ac2ec1493a1 upstream.
    
    The platform_sysrq_reset_seq code was intended as a way for an embedded
    platform to provide its own sysrq sequence at compile time. After over two
    years, nobody has started using it in an upstream kernel, and the platforms
    that were interested in it have moved on to devicetree, which can be used
    to configure the sequence without requiring kernel changes. The method is
    also incompatible with the way that most architectures build support for
    multiple platforms into a single kernel.
    
    Now the code is producing warnings when built with gcc-5.1:
    
    drivers/tty/sysrq.c: In function 'sysrq_init':
    drivers/tty/sysrq.c:959:33: warning: array subscript is above array bounds [-Warray-bounds]
       key = platform_sysrq_reset_seq[i];
    
    We could fix this, but it seems unlikely that it will ever be used, so
    let's just remove the code instead. We still have the option to pass the
    sequence either in DT, using the kernel command line, or using the
    /sys/module/sysrq/parameters/reset_seq file.
    
    Fixes: 154b7a489a ("Input: sysrq - allow specifying alternate reset sequence")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: Mark Brown <broonie@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c21a6e3844a1de8200cf89547527b6b10edabbc4
Author: Maciej W. Rozycki <macro@imgtec.com>
Date:   Mon Oct 26 15:48:19 2015 +0000

    binfmt_elf: Don't clobber passed executable's file header
    
    commit b582ef5c53040c5feef4c96a8f9585b6831e2441 upstream.
    
    Do not clobber the buffer space passed from `search_binary_handler' and
    originally preloaded by `prepare_binprm' with the executable's file
    header by overwriting it with its interpreter's file header.  Instead
    keep the buffer space intact and directly use the data structure locally
    allocated for the interpreter's file header, fixing a bug introduced in
    2.1.14 with loadable module support (linux-mips.org commit beb11695
    [Import of Linux/MIPS 2.1.14], predating kernel.org repo's history).
    Adjust the amount of data read from the interpreter's file accordingly.
    
    This was not an issue before loadable module support, because back then
    `load_elf_binary' was executed only once for a given ELF executable,
    whether the function succeeded or failed.
    
    With loadable module support supported and enabled, upon a failure of
    `load_elf_binary' -- which may for example be caused by architecture
    code rejecting an executable due to a missing hardware feature requested
    in the file header -- a module load is attempted and then the function
    reexecuted by `search_binary_handler'.  With the executable's file
    header replaced with its interpreter's file header the executable can
    then be erroneously accepted in this subsequent attempt.
    
    Signed-off-by: Maciej W. Rozycki <macro@imgtec.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 607d88c10b989cab05c64db592a3794e0363e7e5
Author: Kinglong Mee <kinglongmee@gmail.com>
Date:   Wed Nov 4 15:20:24 2015 +0000

    FS-Cache: Don't override netfs's primary_index if registering failed
    
    commit b130ed5998e62879a66bad08931a2b5e832da95c upstream.
    
    Only override netfs->primary_index when registering success.
    
    Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 695c19b03c9362ceb191bbe15274ccaabeee6606
Author: Kinglong Mee <kinglongmee@gmail.com>
Date:   Wed Nov 4 15:20:15 2015 +0000

    FS-Cache: Increase reference of parent after registering, netfs success
    
    commit 86108c2e34a26e4bec3c6ddb23390bf8cedcf391 upstream.
    
    If netfs exist, fscache should not increase the reference of parent's
    usage and n_children, otherwise, never be decreased.
    
    v2: thanks David's suggest,
     move increasing reference of parent if success
     use kmem_cache_free() freeing primary_index directly
    
    v3: don't move "netfs->primary_index->parent = &fscache_fsdef_index;"
    
    Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8cc3c33db6a61e2258d4135ac13caf631e32e974
Author: Mathias Krause <minipli@googlemail.com>
Date:   Mon Feb 1 14:27:30 2016 +0100

    crypto: user - lock crypto_alg_list on alg dump
    
    commit 63e41ebc6630f39422d87f8a4bade1e793f37a01 upstream.
    
    We miss to take the crypto_alg_sem semaphore when traversing the
    crypto_alg_list for CRYPTO_MSG_GETALG dumps. This allows a race with
    crypto_unregister_alg() removing algorithms from the list while we're
    still traversing it, thereby leading to a use-after-free as show below:
    
    [ 3482.071639] general protection fault: 0000 [#1] SMP
    [ 3482.075639] Modules linked in: aes_x86_64 glue_helper lrw ablk_helper cryptd gf128mul ipv6 pcspkr serio_raw virtio_net microcode virtio_pci virtio_ring virtio sr_mod cdrom [last unloaded: aesni_intel]
    [ 3482.075639] CPU: 1 PID: 11065 Comm: crconf Not tainted 4.3.4-grsec+ #126
    [ 3482.075639] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.7.5-20140531_083030-gandalf 04/01/2014
    [ 3482.075639] task: ffff88001cd41a40 ti: ffff88001cd422c8 task.ti: ffff88001cd422c8
    [ 3482.075639] RIP: 0010:[<ffffffff93722bd3>]  [<ffffffff93722bd3>] strncpy+0x13/0x30
    [ 3482.075639] RSP: 0018:ffff88001f713b60  EFLAGS: 00010202
    [ 3482.075639] RAX: ffff88001f6c4430 RBX: ffff88001f6c43a0 RCX: ffff88001f6c4430
    [ 3482.075639] RDX: 0000000000000040 RSI: fefefefefefeff16 RDI: ffff88001f6c4430
    [ 3482.075639] RBP: ffff88001f713b60 R08: ffff88001f6c4470 R09: ffff88001f6c4480
    [ 3482.075639] R10: 0000000000000002 R11: 0000000000000246 R12: ffff88001ce2aa28
    [ 3482.075639] R13: ffff880000093700 R14: ffff88001f5e4bf8 R15: 0000000000003b20
    [ 3482.075639] FS:  0000033826fa2700(0000) GS:ffff88001e900000(0000) knlGS:0000000000000000
    [ 3482.075639] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 3482.075639] CR2: ffffffffff600400 CR3: 00000000139ec000 CR4: 00000000001606f0
    [ 3482.075639] Stack:
    [ 3482.075639]  ffff88001f713bd8 ffffffff936ccd00 ffff88001e5c4200 ffff880000093700
    [ 3482.075639]  ffff88001f713bd0 ffffffff938ef4bf 0000000000000000 0000000000003b20
    [ 3482.075639]  ffff88001f5e4bf8 ffff88001f5e4848 0000000000000000 0000000000003b20
    [ 3482.075639] Call Trace:
    [ 3482.075639]  [<ffffffff936ccd00>] crypto_report_alg+0xc0/0x3e0
    [ 3482.075639]  [<ffffffff938ef4bf>] ? __alloc_skb+0x16f/0x300
    [ 3482.075639]  [<ffffffff936cd08a>] crypto_dump_report+0x6a/0x90
    [ 3482.075639]  [<ffffffff93935707>] netlink_dump+0x147/0x2e0
    [ 3482.075639]  [<ffffffff93935f99>] __netlink_dump_start+0x159/0x190
    [ 3482.075639]  [<ffffffff936ccb13>] crypto_user_rcv_msg+0xc3/0x130
    [ 3482.075639]  [<ffffffff936cd020>] ? crypto_report_alg+0x3e0/0x3e0
    [ 3482.075639]  [<ffffffff936cc4b0>] ? alg_test_crc32c+0x120/0x120
    [ 3482.075639]  [<ffffffff93933145>] ? __netlink_lookup+0xd5/0x120
    [ 3482.075639]  [<ffffffff936cca50>] ? crypto_add_alg+0x1d0/0x1d0
    [ 3482.075639]  [<ffffffff93938141>] netlink_rcv_skb+0xe1/0x130
    [ 3482.075639]  [<ffffffff936cc4f8>] crypto_netlink_rcv+0x28/0x40
    [ 3482.075639]  [<ffffffff939375a8>] netlink_unicast+0x108/0x180
    [ 3482.075639]  [<ffffffff93937c21>] netlink_sendmsg+0x541/0x770
    [ 3482.075639]  [<ffffffff938e31e1>] sock_sendmsg+0x21/0x40
    [ 3482.075639]  [<ffffffff938e4763>] SyS_sendto+0xf3/0x130
    [ 3482.075639]  [<ffffffff93444203>] ? bad_area_nosemaphore+0x13/0x20
    [ 3482.075639]  [<ffffffff93444470>] ? __do_page_fault+0x80/0x3a0
    [ 3482.075639]  [<ffffffff939d80cb>] entry_SYSCALL_64_fastpath+0x12/0x6e
    [ 3482.075639] Code: 88 4a ff 75 ed 5d 48 0f ba 2c 24 3f c3 66 66 2e 0f 1f 84 00 00 00 00 00 55 48 85 d2 48 89 f8 48 89 f9 4c 8d 04 17 48 89 e5 74 15 <0f> b6 16 80 fa 01 88 11 48 83 de ff 48 83 c1 01 4c 39 c1 75 eb
    [ 3482.075639] RIP  [<ffffffff93722bd3>] strncpy+0x13/0x30
    
    To trigger the race run the following loops simultaneously for a while:
      $ while : ; do modprobe aesni-intel; rmmod aesni-intel; done
      $ while : ; do crconf show all > /dev/null; done
    
    Fix the race by taking the crypto_alg_sem read lock, thereby preventing
    crypto_unregister_alg() from modifying the algorithm list during the
    dump.
    
    This bug has been detected by the PaX memory sanitize feature.
    
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: PaX Team <pageexec@freemail.hu>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 828e12a71f898d9bf817ae5e471ced7c88a19490
Author: Wang, Rui Y <rui.y.wang@intel.com>
Date:   Wed Jan 27 17:08:37 2016 +0800

    crypto: algif_hash - wait for crypto_ahash_init() to complete
    
    commit fe09786178f9df713a4b2dd6b93c0a722346bf5e upstream.
    
    hash_sendmsg/sendpage() need to wait for the completion
    of crypto_ahash_init() otherwise it can cause panic.
    
    Signed-off-by: Rui Wang <rui.y.wang@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f282156266930ed4a6c71fe6b4ff1e8bc6daaaa1
Author: Alexandra Yates <alexandra.yates@linux.intel.com>
Date:   Fri Feb 5 15:27:49 2016 -0800

    ahci: Intel DNV device IDs SATA
    
    commit 342decff2b846b46fa61eb5ee40986fab79a9a32 upstream.
    
    Adding Intel codename DNV platform device IDs for SATA.
    
    Signed-off-by: Alexandra Yates <alexandra.yates@linux.intel.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 6b1297a1aeabe4ee9daf71c0e3087d4b2e4c2605
Author: Tejun Heo <tj@kernel.org>
Date:   Fri Jan 15 15:13:05 2016 -0500

    libata: disable forced PORTS_IMPL for >= AHCI 1.3
    
    commit 566d1827df2ef0cbe921d3d6946ac3007b1a6938 upstream.
    
    Some early controllers incorrectly reported zero ports in PORTS_IMPL
    register and the ahci driver fabricates PORTS_IMPL from the number of
    ports in those cases.  This hasn't mattered but with the new nvme
    controllers there are cases where zero PORTS_IMPL is valid and should
    be honored.
    
    Disable the workaround for >= AHCI 1.3.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Andy Lutomirski <luto@amacapital.net>
    Link: http://lkml.kernel.org/g/CALCETrU7yMvXEDhjAUShoHEhDwifJGapdw--BKxsP0jmjKGmRw@mail.gmail.com
    Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ecb40f2932a04468f1a6327e2b9551cb61b4b410
Author: Xiangliang Yu <Xiangliang.Yu@amd.com>
Date:   Thu Nov 26 20:27:02 2015 +0800

    AHCI: Fix softreset failed issue of Port Multiplier
    
    commit 023113d24ef9e1d2b44cb2446872b17e2b01d8b1 upstream.
    
    Current code doesn't update port value of Port Multiplier(PM) when
    sending FIS of softreset to device, command will fail if FBS is
    enabled.
    
    There are two ways to fix the issue: the first is to disable FBS
    before sending softreset command to PM device and the second is
    to update port value of PM when sending command.
    
    For the first way, i can't find any related rule in AHCI Spec. The
    second way can avoid disabling FBS and has better performance.
    
    Signed-off-by: Xiangliang Yu <Xiangliang.Yu@amd.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b2a0707817d3dec83652bb460a7775613058aedd
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Jan 8 21:31:04 2016 +0800

    crypto: algif_hash - Require setkey before accept(2)
    
    commit 6de62f15b581f920ade22d758f4c338311c2f0d4 upstream.
    
    Hash implementations that require a key may crash if you use
    them without setting a key.  This patch adds the necessary checks
    so that if you do attempt to use them without a key that we return
    -ENOKEY instead of proceeding.
    
    This patch also adds a compatibility path to support old applications
    that do acept(2) before setkey.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f382cd5ac26674877143fa7d9c0ea23c6640e706
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Jan 8 21:28:26 2016 +0800

    crypto: hash - Add crypto_ahash_has_setkey
    
    commit a5596d6332787fd383b3b5427b41f94254430827 upstream.
    
    This patch adds a way for ahash users to determine whether a key
    is required by a crypto_ahash transform.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c25e22ff51d3bebf579a054aecbaa98c81149c02
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Mon Jan 4 13:36:12 2016 +0900

    crypto: algif_skcipher - Add nokey compatibility path
    
    commit a0fa2d037129a9849918a92d91b79ed6c7bd2818 upstream.
    
    This patch adds a compatibility path to support old applications
    that do acept(2) before setkey.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1e3f8a31f01e5967fcf413d72832ce41aa4efd1d
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Mon Jan 4 13:35:18 2016 +0900

    crypto: af_alg - Add nokey compatibility path
    
    commit 37766586c965d63758ad542325a96d5384f4a8c9 upstream.
    
    This patch adds a compatibility path to support old applications
    that do acept(2) before setkey.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit b9da7c51a11a2e7b625122905109e8737fcfbe07
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Wed Dec 30 20:24:17 2015 +0800

    crypto: af_alg - Fix socket double-free when accept fails
    
    commit a383292c86663bbc31ac62cc0c04fc77504636a6 upstream.
    
    When we fail an accept(2) call we will end up freeing the socket
    twice, once due to the direct sk_free call and once again through
    newsock.
    
    This patch fixes this by removing the sk_free call.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 79adba68c32883c6559dc80040e97c35e208c7f1
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Wed Dec 30 11:47:53 2015 +0800

    crypto: af_alg - Disallow bind/setkey/... after accept(2)
    
    commit c840ac6af3f8713a71b4d2363419145760bd6044 upstream.
    
    Each af_alg parent socket obtained by socket(2) corresponds to a
    tfm object once bind(2) has succeeded.  An accept(2) call on that
    parent socket creates a context which then uses the tfm object.
    
    Therefore as long as any child sockets created by accept(2) exist
    the parent socket must not be modified or freed.
    
    This patch guarantees this by using locks and a reference count
    on the parent socket.  Any attempt to modify the parent socket will
    fail with EBUSY.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 82a0aa2c08de674191cf5e99b649af145c5ade25
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Fri Dec 25 15:40:05 2015 +0800

    crypto: algif_skcipher - Require setkey before accept(2)
    
    commit dd504589577d8e8e70f51f997ad487a4cb6c026f upstream.
    
    Some cipher implementations will crash if you try to use them
    without calling setkey first.  This patch adds a check so that
    the accept(2) call will fail with -ENOKEY if setkey hasn't been
    done on the socket yet.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c01b01f0a925c9eb01c58591f15f8d499b104726
Author: David Turner <novalis@novalis.org>
Date:   Tue Nov 24 14:34:37 2015 -0500

    ext4: Fix handling of extended tv_sec
    
    commit a4dad1ae24f850410c4e60f22823cba1289b8d52 upstream.
    
    In ext4, the bottom two bits of {a,c,m}time_extra are used to extend
    the {a,c,m}time fields, deferring the year 2038 problem to the year
    2446.
    
    When decoding these extended fields, for times whose bottom 32 bits
    would represent a negative number, sign extension causes the 64-bit
    extended timestamp to be negative as well, which is not what's
    intended.  This patch corrects that issue, so that the only negative
    {a,c,m}times are those between 1901 and 1970 (as per 32-bit signed
    timestamps).
    
    Some older kernels might have written pre-1970 dates with 1,1 in the
    extra bits.  This patch treats those incorrectly-encoded dates as
    pre-1970, instead of post-2311, until kernel 4.20 is released.
    Hopefully by then e2fsck will have fixed up the bad data.
    
    Also add a comment explaining the encoding of ext4's extra {a,c,m}time
    bits.
    
    Signed-off-by: David Turner <novalis@novalis.org>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reported-by: Mark Harris <mh8928@yahoo.com>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=23732
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 26c8d8213932cb796350061bc644223bf4e8daf7
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Dec 11 14:38:06 2015 +0200

    xhci: fix usb2 resume timing and races.
    
    commit f69115fdbc1ac0718e7d19ad3caa3da2ecfe1c96 upstream.
    
    According to USB 2 specs ports need to signal resume for at least 20ms,
    in practice even longer, before moving to U0 state.
    Both host and devices can initiate resume.
    
    On device initiated resume, a port status interrupt with the port in resume
    state in issued. The interrupt handler tags a resume_done[port]
    timestamp with current time + USB_RESUME_TIMEOUT, and kick roothub timer.
    Root hub timer requests for port status, finds the port in resume state,
    checks if resume_done[port] timestamp passed, and set port to U0 state.
    
    On host initiated resume, current code sets the port to resume state,
    sleep 20ms, and finally sets the port to U0 state. This should also
    be changed to work in a similar way as the device initiated resume, with
    timestamp tagging, but that is not yet tested and will be a separate
    fix later.
    
    There are a few issues with this approach
    
    1. A host initiated resume will also generate a resume event. The event
       handler will find the port in resume state, believe it's a device
       initiated resume, and act accordingly.
    
    2. A port status request might cut the resume signalling short if a
       get_port_status request is handled during the host resume signalling.
       The port will be found in resume state. The timestamp is not set leading
       to time_after_eq(jiffies, timestamp) returning true, as timestamp = 0.
       get_port_status will proceed with moving the port to U0.
    
    3. If an error, or anything else happens to the port during device
       initiated resume signalling it will leave all the device resume
       parameters hanging uncleared, preventing further suspend, returning
       -EBUSY, and cause the pm thread to busyloop trying to enter suspend.
    
    Fix this by using the existing resuming_ports bitfield to indicate that
    resume signalling timing is taken care of.
    Check if the resume_done[port] is set before using it for timestamp
    comparison, and also clear out any resume signalling related variables
    if port is not in U0 or Resume state
    
    This issue was discovered when a PM thread busylooped, trying to runtime
    suspend the xhci USB 2 roothub on a Dell XPS
    
    Reported-by: Daniel J Blueman <daniel@quora.org>
    Tested-by: Daniel J Blueman <daniel@quora.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 4e6d2e76232ae19658064746fd5e5d800b8b5964
Author: Peter Hurley <peter@hurleysoftware.com>
Date:   Sun Jan 10 22:40:55 2016 -0800

    tty: Fix unsafe ldisc reference via ioctl(TIOCGETD)
    
    commit 5c17c861a357e9458001f021a7afa7aab9937439 upstream.
    
    ioctl(TIOCGETD) retrieves the line discipline id directly from the
    ldisc because the line discipline id (c_line) in termios is untrustworthy;
    userspace may have set termios via ioctl(TCSETS*) without actually
    changing the line discipline via ioctl(TIOCSETD).
    
    However, directly accessing the current ldisc via tty->ldisc is
    unsafe; the ldisc ptr dereferenced may be stale if the line discipline
    is changing via ioctl(TIOCSETD) or hangup.
    
    Wait for the line discipline reference (just like read() or write())
    to retrieve the "current" line discipline id.
    
    Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit e13eaeb04dd5241d33104fef290afe750e0b4358
Author: Peter Hurley <peter@hurleysoftware.com>
Date:   Fri Nov 27 14:25:08 2015 -0500

    tty: Fix GPF in flush_to_ldisc()
    
    commit 9ce119f318ba1a07c29149301f1544b6c4bea52a upstream.
    
    A line discipline which does not define a receive_buf() method can
    can cause a GPF if data is ever received [1]. Oddly, this was known
    to the author of n_tracesink in 2011, but never fixed.
    
    [1] GPF report
        BUG: unable to handle kernel NULL pointer dereference at           (null)
        IP: [<          (null)>]           (null)
        PGD 3752d067 PUD 37a7b067 PMD 0
        Oops: 0010 [#1] SMP KASAN
        Modules linked in:
        CPU: 2 PID: 148 Comm: kworker/u10:2 Not tainted 4.4.0-rc2+ #51
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
        Workqueue: events_unbound flush_to_ldisc
        task: ffff88006da94440 ti: ffff88006db60000 task.ti: ffff88006db60000
        RIP: 0010:[<0000000000000000>]  [<          (null)>]           (null)
        RSP: 0018:ffff88006db67b50  EFLAGS: 00010246
        RAX: 0000000000000102 RBX: ffff88003ab32f88 RCX: 0000000000000102
        RDX: 0000000000000000 RSI: ffff88003ab330a6 RDI: ffff88003aabd388
        RBP: ffff88006db67c48 R08: ffff88003ab32f9c R09: ffff88003ab31fb0
        R10: ffff88003ab32fa8 R11: 0000000000000000 R12: dffffc0000000000
        R13: ffff88006db67c20 R14: ffffffff863df820 R15: ffff88003ab31fb8
        FS:  0000000000000000(0000) GS:ffff88006dc00000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
        CR2: 0000000000000000 CR3: 0000000037938000 CR4: 00000000000006e0
        Stack:
         ffffffff829f46f1 ffff88006da94bf8 ffff88006da94bf8 0000000000000000
         ffff88003ab31fb0 ffff88003aabd438 ffff88003ab31ff8 ffff88006430fd90
         ffff88003ab32f9c ffffed0007557a87 1ffff1000db6cf78 ffff88003ab32078
        Call Trace:
         [<ffffffff8127cf91>] process_one_work+0x8f1/0x17a0 kernel/workqueue.c:2030
         [<ffffffff8127df14>] worker_thread+0xd4/0x1180 kernel/workqueue.c:2162
         [<ffffffff8128faaf>] kthread+0x1cf/0x270 drivers/block/aoe/aoecmd.c:1302
         [<ffffffff852a7c2f>] ret_from_fork+0x3f/0x70 arch/x86/entry/entry_64.S:468
        Code:  Bad RIP value.
        RIP  [<          (null)>]           (null)
         RSP <ffff88006db67b50>
        CR2: 0000000000000000
        ---[ end trace a587f8947e54d6ea ]---
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ec0657a008a46efd5569a0a9d2a3d078a2e693e4
Author: John Ernberg <john.ernberg@actia.se>
Date:   Mon Jan 25 12:27:17 2016 +0000

    USB: option: fix Cinterion AHxx enumeration
    
    commit 4152b387da81617c80cb2946b2d56e3958906b3e upstream.
    
    In certain kernel configurations where the cdc_ether and option drivers
    are compiled as modules there can occur a race condition in enumeration.
    This causes the option driver to enumerate the ethernet(wwan) interface
    as usb-serial interfaces.
    
    usb-devices output for the modem:
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  5 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1e2d ProdID=0055 Rev=00.00
    S:  Manufacturer=Cinterion
    S:  Product=AHx
    C:  #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=10mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:  If#= 1 Alt= 0 #EPs= 2 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=option
    I:  If#= 4 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
    I:  If#= 5 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    
    Signed-off-by: John Ernberg <john.ernberg@actia.se>
    Fixes: 1941138e1c02 ("USB: added support for Cinterion's products...")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 0fa3bb0d2d550a8fa385740e5f631552880dee7a
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Tue Jan 12 17:22:06 2016 +0100

    USB: serial: option: Adding support for Telit LE922
    
    commit ff4e2494dc17b173468e1713fdf6237fd8578bc7 upstream.
    
    This patch adds support for two PIDs of LE922.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 80e3397cb927db91019ef85a83f225158faef80e
Author: Peter Dedecker <peter.dedecker@hotmail.com>
Date:   Fri Jan 8 12:34:41 2016 +0100

    USB: cp210x: add ID for IAI USB to RS485 adaptor
    
    commit f487c54ddd544e1c9172cd510954f697b77b76e3 upstream.
    
    Added the USB serial console device ID for IAI Corp. RCB-CV-USB
    USB to RS485 adaptor.
    
    Signed-off-by: Peter Dedecker <peter.dedecker@hotmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1c2b780abdf9c0ee2db85953af28539be0328ea1
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jan 19 23:43:13 2016 -0800

    USB: serial: ftdi_sio: add support for Yaesu SCU-18 cable
    
    commit e03cdf22a2727c60307be6a729233edab3bfda9c upstream.
    
    Harald Linden reports that the ftdi_sio driver works properly for the
    Yaesu SCU-18 cable if the device ids are added to the driver.  So let's
    add them.
    
    Reported-by: Harald Linden <harald.linden@7183.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c88ff183d8a3b3599394885f458b40eb838c0850
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Tue Jan 12 15:10:50 2016 +0100

    USB: serial: visor: fix crash on detecting device without write_urbs
    
    commit cb3232138e37129e88240a98a1d2aba2187ff57c upstream.
    
    The visor driver crashes in clie_5_attach() when a specially crafted USB
    device without bulk-out endpoint is detected. This fix adds a check that
    the device has proper configuration expected by the driver.
    
    Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Fixes: cfb8da8f69b8 ("USB: visor: fix initialisation of UX50/TH55 devices")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit e70e32e4ee44a7945a51dbad3bdc4e13a9d86172
Author: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Date:   Thu Feb 4 15:59:43 2016 -0200

    saa7134-alsa: Only frees registered sound cards
    
    commit ac75fe5d8fe4a0bf063be18fb29684405279e79e upstream.
    
    That prevents this bug:
    [ 2382.269496] BUG: unable to handle kernel NULL pointer dereference at 0000000000000540
    [ 2382.270013] IP: [<ffffffffa01fe616>] snd_card_free+0x36/0x70 [snd]
    [ 2382.270013] PGD 0
    [ 2382.270013] Oops: 0002 [#1] SMP
    [ 2382.270013] Modules linked in: saa7134_alsa(-) tda1004x saa7134_dvb videobuf2_dvb dvb_core tda827x tda8290 tuner saa7134 tveeprom videobuf2_dma_sg videobuf2_memops videobuf2_v4l2 videobuf2_core v4l2_common videodev media auth_rpcgss nfsv4 dns_resolver nfs lockd grace sunrpc tun bridge stp llc ebtables ip6table_filter ip6_tables nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack it87 hwmon_vid snd_hda_codec_idt snd_hda_codec_generic iTCO_wdt iTCO_vendor_support snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core snd_seq pcspkr i2c_i801 snd_seq_device snd_pcm snd_timer lpc_ich snd mfd_core soundcore binfmt_misc i915 video i2c_algo_bit drm_kms_helper drm r8169 ata_generic serio_raw pata_acpi mii i2c_core [last unloaded: videobuf2_memops]
    [ 2382.270013] CPU: 0 PID: 4899 Comm: rmmod Not tainted 4.5.0-rc1+ #4
    [ 2382.270013] Hardware name: PCCHIPS P17G/P17G, BIOS 080012  05/14/2008
    [ 2382.270013] task: ffff880039c38000 ti: ffff88003c764000 task.ti: ffff88003c764000
    [ 2382.270013] RIP: 0010:[<ffffffffa01fe616>]  [<ffffffffa01fe616>] snd_card_free+0x36/0x70 [snd]
    [ 2382.270013] RSP: 0018:ffff88003c767ea0  EFLAGS: 00010286
    [ 2382.270013] RAX: ffff88003c767eb8 RBX: 0000000000000000 RCX: 0000000000006260
    [ 2382.270013] RDX: ffffffffa020a060 RSI: ffffffffa0206de1 RDI: ffff88003c767eb0
    [ 2382.270013] RBP: ffff88003c767ed8 R08: 0000000000019960 R09: ffffffff811a5412
    [ 2382.270013] R10: ffffea0000d7c200 R11: 0000000000000000 R12: ffff88003c767ea8
    [ 2382.270013] R13: 00007ffe760617f7 R14: 0000000000000000 R15: 0000557625d7f1e0
    [ 2382.270013] FS:  00007f80bb1c0700(0000) GS:ffff88003f400000(0000) knlGS:0000000000000000
    [ 2382.270013] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [ 2382.270013] CR2: 0000000000000540 CR3: 000000003c00f000 CR4: 00000000000006f0
    [ 2382.270013] Stack:
    [ 2382.270013]  000000003c767ed8 ffffffff00000000 ffff880000000000 ffff88003c767eb8
    [ 2382.270013]  ffff88003c767eb8 ffffffffa049a890 00007ffe76060060 ffff88003c767ef0
    [ 2382.270013]  ffffffffa049889d ffffffffa049a500 ffff88003c767f48 ffffffff8111079c
    [ 2382.270013] Call Trace:
    [ 2382.270013]  [<ffffffffa049889d>] saa7134_alsa_exit+0x1d/0x780 [saa7134_alsa]
    [ 2382.270013]  [<ffffffff8111079c>] SyS_delete_module+0x19c/0x1f0
    [ 2382.270013]  [<ffffffff8170fc2e>] entry_SYSCALL_64_fastpath+0x12/0x71
    [ 2382.270013] Code: 20 a0 48 c7 c6 e1 6d 20 a0 48 89 e5 41 54 53 4c 8d 65 d0 48 89 fb 48 83 ec 28 c7 45 d0 00 00 00 00 49 8d 7c 24 08 e8 7a 55 ed e0 <4c> 89 a3 40 05 00 00 48 89 df e8 eb fd ff ff 85 c0 75 1a 48 8d
    [ 2382.270013] RIP  [<ffffffffa01fe616>] snd_card_free+0x36/0x70 [snd]
    [ 2382.270013]  RSP <ffff88003c767ea0>
    [ 2382.270013] CR2: 0000000000000540
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f842f055d907c901320399022cfb9753fa709eb1
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Feb 2 15:27:36 2016 +0100

    ALSA: dummy: Implement timer backend switching more safely
    
    commit ddce57a6f0a2d8d1bfacfa77f06043bc760403c2 upstream.
    
    Currently the selected timer backend is referred at any moment from
    the running PCM callbacks.  When the backend is switched, it's
    possible to lead to inconsistency from the running backend.  This was
    pointed by syzkaller fuzzer, and the commit [7ee96216c31a: ALSA:
    dummy: Disable switching timer backend via sysfs] disabled the dynamic
    switching for avoiding the crash.
    
    This patch improves the handling of timer backend switching.  It keeps
    the reference to the selected backend during the whole operation of an
    opened stream so that it won't be changed by other streams.
    
    Together with this change, the hrtimer parameter is reenabled as
    writable now.
    
    NOTE: this patch also turned out to fix the still remaining race.
    Namely, ops was still replaced dynamically at dummy_pcm_open:
    
      static int dummy_pcm_open(struct snd_pcm_substream *substream)
      {
      ....
              dummy->timer_ops = &dummy_systimer_ops;
              if (hrtimer)
                      dummy->timer_ops = &dummy_hrtimer_ops;
    
    Since dummy->timer_ops is common among all streams, and when the
    replacement happens during accesses of other streams, it may lead to a
    crash.  This was actually triggered by syzkaller fuzzer and KASAN.
    
    This patch rewrites the code not to use the ops shared by all streams
    any longer, too.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+aZ+xisrpuM6cOXbL21DuM0yVxPYXf4cD4Md9uw0C3dBQ@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ba6ec2a89a85e7e17d8cc09658db2b1e5e6955aa
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Feb 7 09:38:26 2016 +0100

    ALSA: hda - Fix speaker output from VAIO AiO machines
    
    commit c44d9b1181cf34e0860c72cc8a00e0c47417aac0 upstream.
    
    Some Sony VAIO AiO models (VGC-JS4EF and VGC-JS25G, both with PCI SSID
    104d:9044) need the same quirk to make the speaker working properly.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=112031
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit c1dd92fbc262dc6b53d7fcc941164916dc3a73ac
Author: David Henningsson <david.henningsson@canonical.com>
Date:   Fri Feb 5 09:05:41 2016 +0100

    ALSA: hda - Fix static checker warning in patch_hdmi.c
    
    commit 360a8245680053619205a3ae10e6bfe624a5da1d upstream.
    
    The static checker warning is:
    
    	sound/pci/hda/patch_hdmi.c:460 hdmi_eld_ctl_get()
    	error: __memcpy() 'eld->eld_buffer' too small (256 vs 512)
    
    I have a hard time figuring out if this can ever cause an information leak
    (I don't think so), but nonetheless it does not hurt to increase the
    robustness of the code.
    
    Fixes: 68e03de98507 ('ALSA: hda - hdmi: Do not expose eld data when eld is invalid')
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David Henningsson <david.henningsson@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 059f1b15518f4d8725340c869a8d63518406c5e0
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Feb 3 12:32:51 2016 +0100

    ALSA: hda - Add fixup for Mac Mini 7,1 model
    
    commit 2154cc0e2d4ae15132d005d17e473327c70c9a06 upstream.
    
    Mac Mini 7,1 model with CS4208 codec reports the headphone jack
    detection wrongly in an inverted way.  Moreover, the advertised pins
    for the audio input and SPDIF output have actually no jack detection.
    
    This patch addresses these issues.  The inv_jack_detect flag is set
    for fixing the headphone jack detection, and the pin configs for audio
    input and SPDIF output are marked as non-detectable.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=105161
    Report-and-tested-by: moosotc@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit aa482b4ddf287095641a49f0343aff8f161c67c2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Feb 9 12:02:32 2016 +0100

    ALSA: timer: Fix race between stop and interrupt
    
    commit ed8b1d6d2c741ab26d60d499d7fbb7ac801f0f51 upstream.
    
    A slave timer element also unlinks at snd_timer_stop() but it takes
    only slave_active_lock.  When a slave is assigned to a master,
    however, this may become a race against the master's interrupt
    handling, eventually resulting in a list corruption.  The actual bug
    could be seen with a syzkaller fuzzer test case in BugLink below.
    
    As a fix, we need to take timeri->timer->lock when timer isn't NULL,
    i.e. assigned to a master, while the assignment to a master itself is
    protected by slave_active_lock.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+Y_Bm+7epAb=8Wi=AaWd+DYS7qawX52qxdCfOfY49vozQ@mail.gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 009e4dbe919bfd67f9ce7800885a34008d730982
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 8 17:36:25 2016 +0100

    ALSA: timer: Fix wrong instance passed to slave callbacks
    
    commit 117159f0b9d392fb433a7871426fad50317f06f7 upstream.
    
    In snd_timer_notify1(), the wrong timer instance was passed for slave
    ccallback function.  This leads to the access to the wrong data when
    an incompatible master is handled (e.g. the master is the sequencer
    timer and the slave is a user timer), as spotted by syzkaller fuzzer.
    
    This patch fixes that wrong assignment.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+Y_Bm+7epAb=8Wi=AaWd+DYS7qawX52qxdCfOfY49vozQ@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a16b3aad331fb3f05e2d910c55da97dcba475c1c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Jan 30 23:09:08 2016 +0100

    ALSA: timer: Fix link corruption due to double start or stop
    
    commit f784beb75ce82f4136f8a0960d3ee872f7109e09 upstream.
    
    Although ALSA timer code got hardening for races, it still causes
    use-after-free error.  This is however rather a corrupted linked list,
    not actually the concurrent accesses.  Namely, when timer start is
    triggered twice, list_add_tail() is called twice, too.  This ends
    up with the link corruption and triggers KASAN error.
    
    The simplest fix would be replacing list_add_tail() with
    list_move_tail(), but fundamentally it's the problem that we don't
    check the double start/stop correctly.  So, the right fix here is to
    add the proper checks to snd_timer_start() and snd_timer_stop() (and
    their variants).
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+ZyPRoMQjmawbvmCEDrkBD2BQuH7R09=eOkf5ESK8kJAw@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 39b16b6e4adfceac57b1981e050019443ac0adec
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Feb 4 17:06:13 2016 +0100

    ALSA: timer: Fix leftover link at closing
    
    commit 094fd3be87b0f102589e2d5c3fa5d06b7e20496d upstream.
    
    In ALSA timer core, the active timer instance is managed in
    active_list linked list.  Each element is added / removed dynamically
    at timer start, stop and in timer interrupt.  The problem is that
    snd_timer_interrupt() has a thinko and leaves the element in
    active_list when it's the last opened element.  This eventually leads
    to list corruption or use-after-free error.
    
    This hasn't been revealed because we used to delete the list forcibly
    in snd_timer_stop() in the past.  However, the recent fix avoids the
    double-stop behavior (in commit [f784beb75ce8: ALSA: timer: Fix link
    corruption due to double start or stop]), and this leak hits reality.
    
    This patch fixes the link management in snd_timer_interrupt().  Now it
    simply unlinks no matter which stream is.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+Yy2aukHP-EDp8-ziNqNNmb-NTf=jDWXMP7jB8HDa2vng@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit fd5e7b71861246d43713ab336e12c65c8724a037
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jan 14 17:01:46 2016 +0100

    ALSA: timer: Code cleanup
    
    commit c3b1681375dc6e71d89a3ae00cc3ce9e775a8917 upstream.
    
    This is a minor code cleanup without any functional changes:
    - Kill keep_flag argument from _snd_timer_stop(), as all callers pass
      only it false.
    - Remove redundant NULL check in _snd_timer_stop().
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit df94faf6543a592ba2c5a6c3c2904dde0cf2ddd7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Feb 3 08:32:44 2016 +0100

    ALSA: seq: Fix lockdep warnings due to double mutex locks
    
    commit 7f0973e973cd74aa40747c9d38844560cd184ee8 upstream.
    
    The port subscription code uses double mutex locks for source and
    destination ports, and this may become racy once when wrongly set up.
    It leads to lockdep warning splat, typically triggered by fuzzer like
    syzkaller, although the actual deadlock hasn't been seen, so far.
    
    This patch simplifies the handling by reducing to two single locks, so
    that no lockdep warning will be trigger any longer.
    
    By splitting to two actions, a still-in-progress element shall be
    added in one list while handling another.  For ignoring this element,
    a new check is added in deliver_to_subscribers().
    
    Along with it, the code to add/remove the subscribers list element was
    cleaned up and refactored.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+aKQXV7xkBW9hpQbzaDO7LrUvohxWh-UwMxXjDy-yBD=A@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>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit dd2a5c036a927e100235e7b339c25345fb7eb3a7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 1 12:06:42 2016 +0100

    ALSA: seq: Fix race at closing in virmidi driver
    
    commit 2d1b5c08366acd46c35a2e9aba5d650cb5bf5c19 upstream.
    
    The virmidi driver has an open race at closing its assigned rawmidi
    device, and this may lead to use-after-free in
    snd_seq_deliver_single_event().
    
    Plug the hole by properly protecting the linked list deletion and
    calling in the right order in snd_virmidi_input_close().
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+Zd66+w12fNN85-425cVQT=K23kWbhnCEcMB8s3us-Frw@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>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 33d988fdc62ec7bcabc3c201a562904151299eb3
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Jan 30 23:30:25 2016 +0100

    ALSA: seq: Fix yet another races among ALSA timer accesses
    
    commit 2cdc7b636d55cbcf42e1e6c8accd85e62d3e9ae8 upstream.
    
    ALSA sequencer may open/close and control ALSA timer instance
    dynamically either via sequencer events or direct ioctls.  These are
    done mostly asynchronously, and it may call still some timer action
    like snd_timer_start() while another is calling snd_timer_close().
    Since the instance gets removed by snd_timer_close(), it may lead to
    a use-after-free.
    
    This patch tries to address such a race by protecting each
    snd_timer_*() call via the existing spinlock and also by avoiding the
    access to timer during close call.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+Z6RzW5MBr-HUdV-8zwg71WQfKTdPpYGvOeS7v4cyurNQ@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 1b869719fe73988853abbc6d54d24c39d0f04131
Author: Vinod Koul <vinod.koul@intel.com>
Date:   Mon Feb 1 22:26:40 2016 +0530

    ASoC: dpcm: fix the BE state on hw_free
    
    commit 5e82d2be6ee53275c72e964507518d7964c82753 upstream.
    
    While performing hw_free, DPCM checks the BE state but leaves out
    the suspend state. The suspend state needs to be checked as well,
    as we might be suspended and then usermode closes rather than
    resuming the audio stream.
    
    This was found by a stress testing of system with playback in
    loop and killed after few seconds running in background and second
    script running suspend-resume test in loop
    
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Acked-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3b6c5252f68e70a567d0d6eed2c2d62ef10c577c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Jan 31 10:32:37 2016 +0100

    ALSA: pcm: Fix potential deadlock in OSS emulation
    
    commit b248371628aad599a48540962f6b85a21a8a0c3f upstream.
    
    There are potential deadlocks in PCM OSS emulation code while
    accessing read/write and mmap concurrently.  This comes from the
    infamous mmap_sem usage in copy_from/to_user().  Namely,
    
       snd_pcm_oss_write() ->
         &runtime->oss.params_lock ->
            copy_to_user() ->
              &mm->mmap_sem
      mmap() ->
        &mm->mmap_sem ->
          snd_pcm_oss_mmap() ->
            &runtime->oss.params_lock
    
    Since we can't avoid taking params_lock from mmap code path, use
    trylock variant and aborts with -EAGAIN as a workaround of this AB/BA
    deadlock.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+bVrBKDG0G2_AcUgUQa+X91VKTeS4v+wN7BSHwHtqn3kQ@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7f5ad25a03f34f16165b3ca6a8b250c1937fb29f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Feb 3 14:41:22 2016 +0100

    ALSA: rawmidi: Fix race at copying & updating the position
    
    commit 81f577542af15640cbcb6ef68baa4caa610cbbfc upstream.
    
    The rawmidi read and write functions manage runtime stream status
    such as runtime->appl_ptr and runtime->avail.  These point where to
    copy the new data and how many bytes have been copied (or to be
    read).  The problem is that rawmidi read/write call copy_from_user()
    or copy_to_user(), and the runtime spinlock is temporarily unlocked
    and relocked while copying user-space.  Since the current code
    advances and updates the runtime status after the spin unlock/relock,
    the copy and the update may be asynchronous, and eventually
    runtime->avail might go to a negative value when many concurrent
    accesses are done.  This may lead to memory corruption in the end.
    
    For fixing this race, in this patch, the status update code is
    performed in the same lock before the temporary unlock.  Also, the
    spinlock is now taken more widely in snd_rawmidi_kernel_read1() for
    protecting more properly during the whole operation.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+b-dCmNf1GpgPKfDO0ih+uZCL2JV4__j-r1kdhPLSgQCQ@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>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d5ba65be238e4856dd783eb57cb8a377c42fa953
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 1 12:04:55 2016 +0100

    ALSA: rawmidi: Remove kernel WARNING for NULL user-space buffer check
    
    commit cc85f7a634cfaf9f0713c6aa06d08817424db37a upstream.
    
    NULL user-space buffer can be passed even in a normal path, thus it's
    not good to spew a kernel warning with stack trace at each time.
    Just drop snd_BUG_ON() macro usage there.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+YfVJ3L+q0i-4vyQVyyPD7V=OMX0PWPi29x9Bo3QaBLdw@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 0440139871c0ff467774b1002deaabc8ead76efe
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 25 11:01:47 2016 +0100

    ALSA: seq: Fix incorrect sanity check at snd_seq_oss_synth_cleanup()
    
    commit 599151336638d57b98d92338aa59c048e3a3e97d upstream.
    
    ALSA sequencer OSS emulation code has a sanity check for currently
    opened devices, but there is a thinko there, eventually it spews
    warnings and skips the operation wrongly like:
      WARNING: CPU: 1 PID: 7573 at sound/core/seq/oss/seq_oss_synth.c:311
    
    Fix this off-by-one error.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 45d0f31cfeadeb31b3023c1919cda0d435d4bf31
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jan 28 07:54:16 2016 +0100

    ALSA: dummy: Disable switching timer backend via sysfs
    
    commit 7ee96216c31aabe1eb42fb91ff50dae9fcd014b2 upstream.
    
    ALSA dummy driver can switch the timer backend between system timer
    and hrtimer via its hrtimer module option.  This can be also switched
    dynamically via sysfs, but it may lead to a memory corruption when
    switching is done while a PCM stream is running; the stream instance
    for the newly switched timer method tries to access the memory that
    was allocated by another timer method although the sizes differ.
    
    As the simplest fix, this patch just disables the switch via sysfs by
    dropping the writable bit.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+ZGEeEBntHW5WHn2GoeE0G_kRrCmUh6=dWyy-wfzvuJLg@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7e7e76a343578d96fc3ece56eeb2931273983de9
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 25 13:59:21 2016 +0100

    ALSA: compress: Disable GET_CODEC_CAPS ioctl for some architectures
    
    commit 462b3f161beb62eeb290f4ec52f5ead29a2f8ac7 upstream.
    
    Some architectures like PowerPC can handle the maximum struct size in
    an ioctl only up to 13 bits, and struct snd_compr_codec_caps used by
    SNDRV_COMPRESS_GET_CODEC_CAPS ioctl overflows this limit.  This
    problem was revealed recently by a powerpc change, as it's now treated
    as a fatal build error.
    
    This patch is a stop-gap for that: for architectures with less than 14
    bit ioctl struct size, get rid of the handling of the relevant ioctl.
    We should provide an alternative equivalent ioctl code later, but for
    now just paper over it.  Luckily, the compress API hasn't been used on
    such architectures, so the impact must be effectively zero.
    
    Reviewed-by: Mark Brown <broonie@kernel.org>
    Acked-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 563b627dbd698b2ae2f385718f1682ec20a51119
Author: Andrey Konovalov <andreyknvl@gmail.com>
Date:   Sat Feb 13 11:08:06 2016 +0300

    ALSA: usb-audio: avoid freeing umidi object twice
    
    commit 07d86ca93db7e5cdf4743564d98292042ec21af7 upstream.
    
    The 'umidi' object will be free'd on the error path by snd_usbmidi_free()
    when tearing down the rawmidi interface. So we shouldn't try to free it
    in snd_usbmidi_create() after having registered the rawmidi interface.
    
    Found by KASAN.
    
    Signed-off-by: Andrey Konovalov <andreyknvl@gmail.com>
    Acked-by: Clemens Ladisch <clemens@ladisch.de>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 2d0ca443abc1ec9446df136123d1a63419d7bda8
Author: Guillaume Fougnies <guillaume@eulerian.com>
Date:   Tue Jan 26 00:28:27 2016 +0100

    ALSA: usb-audio: Fix TEAC UD-501/UD-503/NT-503 usb delay
    
    commit 5a4ff9ec8d6edd2ab1cfe8ce6a080d6e57cbea9a upstream.
    
    TEAC UD-501/UD-503/NT-503 fail to switch properly between different
    rate/format. Similar to 'Playback Design', this patch corrects the
    invalid clock source error for TEAC products and avoids complete
    freeze of the usb interface of 503 series.
    
    Signed-off-by: Guillaume Fougnies <guillaume@eulerian.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit f250a9dabe6384837c256781f673d1623a84b193
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Nov 23 21:11:08 2015 -0500

    fix sysvfs symlinks
    
    commit 0ebf7f10d67a70e120f365018f1c5fce9ddc567d upstream.
    
    The thing got broken back in 2002 - sysvfs does *not* have inline
    symlinks; even short ones have bodies stored in the first block
    of file.  sysv_symlink() handles that correctly; unfortunately,
    attempting to look an existing symlink up will end up confusing
    them for inline symlinks, and interpret the block number containing
    the body as the body itself.
    
    Nobody has noticed until now, which says something about the level
    of testing sysvfs gets ;-/
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 36642d1836acbd8b90ebbe2335433123d8de7a7a
Author: Tiffany Lin <tiffany.lin@mediatek.com>
Date:   Thu Sep 24 06:02:36 2015 -0300

    media: vb2 dma-contig: Fully cache synchronise buffers in prepare and finish
    
    commit d9a985883fa32453d099d6293188c11d75cef1fa upstream.
    
    In videobuf2 dma-contig memory type the prepare and finish ops, instead of
    passing the number of entries in the original scatterlist as the "nents"
    parameter to dma_sync_sg_for_device() and dma_sync_sg_for_cpu(), the value
    returned by dma_map_sg() was used. Albeit this has been suggested in
    comments of some implementations (which have since been corrected), this
    is wrong.
    
    Fixes: 199d101efdba ("v4l: vb2-dma-contig: add prepare/finish to dma-contig allocator")
    
    Signed-off-by: Tiffany Lin <tiffany.lin@mediatek.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 521f02ebd3c4002c98bd5e4de9014f0ed564c064
Author: Andrzej Hajda <a.hajda@samsung.com>
Date:   Mon Aug 31 08:56:15 2015 -0300

    v4l2-compat-ioctl32: fix alignment for ARM64
    
    commit 655e9780ab913a3a06d4a164d55e3b755524186d upstream.
    
    Alignment/padding rules on AMD64 and ARM64 differs. To allow properly match
    compatible ioctls on ARM64 kernels without breaking AMD64 some fields
    should be aligned using compat_s64 type and in one case struct should be
    unpacked.
    
    Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
    [hans.verkuil@cisco.com: use compat_u64 instead of compat_s64 in v4l2_input32]
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>

commit db8d9cd9aa8846b9395be6af85c1e7713943bcb2
Author: Helge Deller <deller@gmx.de>
Date:   Sun Jan 10 09:30:42 2016 +0100

    parisc: Fix __ARCH_SI_PREAMBLE_SIZE
    
    commit e60fc5aa608eb38b47ba4ee058f306f739eb70a0 upstream.
    
    On a 64bit kernel build the compiler aligns the _sifields union in the
    struct siginfo_t on a 64bit address. The __ARCH_SI_PREAMBLE_SIZE define
    compensates for this alignment and thus fixes the wait testcase of the
    strace package.
    
    The symptoms of a wrong __ARCH_SI_PREAMBLE_SIZE value is that
    _sigchld.si_stime variable is missed to be copied and thus after a
    copy_siginfo() will have uninitialized values.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 70e2633a6757510fea72f305e49b49d40b39eab3
Author: Helge Deller <deller@gmx.de>
Date:   Mon Dec 21 10:03:30 2015 +0100

    parisc: Fix syscall restarts
    
    commit 71a71fb5374a23be36a91981b5614590b9e722c3 upstream.
    
    On parisc syscalls which are interrupted by signals sometimes failed to
    restart and instead returned -ENOSYS which in the worst case lead to
    userspace crashes.
    A similiar problem existed on MIPS and was fixed by commit e967ef02
    ("MIPS: Fix restart of indirect syscalls").
    
    On parisc the current syscall restart code assumes that all syscall
    callers load the syscall number in the delay slot of the ble
    instruction. That's how it is e.g. done in the unistd.h header file:
    	ble 0x100(%sr2, %r0)
    	ldi #syscall_nr, %r20
    Because of that assumption the current code never restored %r20 before
    returning to userspace.
    
    This assumption is at least not true for code which uses the glibc
    syscall() function, which instead uses this syntax:
    	ble 0x100(%sr2, %r0)
    	copy regX, %r20
    where regX depend on how the compiler optimizes the code and register
    usage.
    
    This patch fixes this problem by adding code to analyze how the syscall
    number is loaded in the delay branch and - if needed - copy the syscall
    number to regX prior returning to userspace for the syscall restart.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7248da879ceaa8aa0195f39975470b1cd947eca0
Author: Helge Deller <deller@gmx.de>
Date:   Sun Nov 22 12:14:14 2015 +0100

    parisc: Drop unused MADV_xxxK_PAGES flags from asm/mman.h
    
    commit dcbf0d299c00ed4f82ea8d6e359ad88a5182f9b8 upstream.
    
    Drop the MADV_xxK_PAGES flags, which were never used and were from a proposed
    API which was never integrated into the generic Linux kernel code.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit a6abf86bb91493fe8b94268219d99e42788fa110
Author: Andy Leiserson <andy@leiserson.org>
Date:   Sun Oct 18 00:36:29 2015 -0400

    fix calculation of meta_bg descriptor backups
    
    commit 904dad4742d211b7a8910e92695c0fa957483836 upstream.
    
    "group" is the group where the backup will be placed, and is
    initialized to zero in the declaration. This meant that backups for
    meta_bg descriptors were erroneously written to the backup block group
    descriptors in groups 1 and (desc_per_block-1).
    
    Reproduction information:
      mke2fs -Fq -t ext4 -b 1024 -O ^resize_inode /tmp/foo.img 16G
      truncate -s 24G /tmp/foo.img
      losetup /dev/loop0 /tmp/foo.img
      mount /dev/loop0 /mnt
      resize2fs /dev/loop0
      umount /dev/loop0
      dd if=/dev/zero of=/dev/loop0 bs=1024 count=2
      e2fsck -fy /dev/loop0
      losetup -d /dev/loop0
    
    Signed-off-by: Andy Leiserson <andy@leiserson.org>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 7c0000680544561358178d3a8d28f8b598a3e9c3
Author: Jan Kara <jack@suse.cz>
Date:   Tue Nov 24 15:34:35 2015 -0500

    jbd2: Fix unreclaimed pages after truncate in data=journal mode
    
    commit bc23f0c8d7ccd8d924c4e70ce311288cb3e61ea8 upstream.
    
    Ted and Namjae have reported that truncated pages don't get timely
    reclaimed after being truncated in data=journal mode. The following test
    triggers the issue easily:
    
    for (i = 0; i < 1000; i++) {
    	pwrite(fd, buf, 1024*1024, 0);
    	fsync(fd);
    	fsync(fd);
    	ftruncate(fd, 0);
    }
    
    The reason is that journal_unmap_buffer() finds that truncated buffers
    are not journalled (jh->b_transaction == NULL), they are part of
    checkpoint list of a transaction (jh->b_cp_transaction != NULL) and have
    been already written out (!buffer_dirty(bh)). We clean such buffers but
    we leave them in the checkpoint list. Since checkpoint transaction holds
    a reference to the journal head, these buffers cannot be released until
    the checkpoint transaction is cleaned up. And at that point we don't
    call release_buffer_page() anymore so pages detached from mapping are
    lingering in the system waiting for reclaim to find them and free them.
    
    Fix the problem by removing buffers from transaction checkpoint lists
    when journal_unmap_buffer() finds out they don't have to be there
    anymore.
    
    Reported-and-tested-by: Namjae Jeon <namjae.jeon@samsung.com>
    Fixes: de1b794130b130e77ffa975bb58cb843744f9ae5
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 96ecc0e4e7c8685287883a9860d49c98e60df74b
Author: Qiu Peiyang <peiyangx.qiu@intel.com>
Date:   Thu Dec 31 13:11:28 2015 +0800

    tracing: Fix setting of start_index in find_next()
    
    commit f36d1be2930ede0a1947686e1126ffda5d5ee1bb upstream.
    
    When we do cat /sys/kernel/debug/tracing/printk_formats, we hit kernel
    panic at t_show.
    
    general protection fault: 0000 [#1] PREEMPT SMP
    CPU: 0 PID: 2957 Comm: sh Tainted: G W  O 3.14.55-x86_64-01062-gd4acdc7 #2
    RIP: 0010:[<ffffffff811375b2>]
     [<ffffffff811375b2>] t_show+0x22/0xe0
    RSP: 0000:ffff88002b4ebe80  EFLAGS: 00010246
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000004
    RDX: 0000000000000004 RSI: ffffffff81fd26a6 RDI: ffff880032f9f7b1
    RBP: ffff88002b4ebe98 R08: 0000000000001000 R09: 000000000000ffec
    R10: 0000000000000000 R11: 000000000000000f R12: ffff880004d9b6c0
    R13: 7365725f6d706400 R14: ffff880004d9b6c0 R15: ffffffff82020570
    FS:  0000000000000000(0000) GS:ffff88003aa00000(0063) knlGS:00000000f776bc40
    CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
    CR2: 00000000f6c02ff0 CR3: 000000002c2b3000 CR4: 00000000001007f0
    Call Trace:
     [<ffffffff811dc076>] seq_read+0x2f6/0x3e0
     [<ffffffff811b749b>] vfs_read+0x9b/0x160
     [<ffffffff811b7f69>] SyS_read+0x49/0xb0
     [<ffffffff81a3a4b9>] ia32_do_call+0x13/0x13
     ---[ end trace 5bd9eb630614861e ]---
    Kernel panic - not syncing: Fatal exception
    
    When the first time find_next calls find_next_mod_format, it should
    iterate the trace_bprintk_fmt_list to find the first print format of
    the module. However in current code, start_index is smaller than *pos
    at first, and code will not iterate the list. Latter container_of will
    get the wrong address with former v, which will cause mod_fmt be a
    meaningless object and so is the returned mod_fmt->fmt.
    
    This patch will fix it by correcting the start_index. After fixed,
    when the first time calls find_next_mod_format, start_index will be
    equal to *pos, and code will iterate the trace_bprintk_fmt_list to
    get the right module printk format, so is the returned mod_fmt->fmt.
    
    Link: http://lkml.kernel.org/r/5684B900.9000309@intel.com
    
    Fixes: 102c9323c35a8 "tracing: Add __tracepoint_string() to export string pointers"
    Signed-off-by: Qiu Peiyang <peiyangx.qiu@intel.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 2b774589eb9e58ca3ea56b9fb33b98df043da216
Author: Boris BREZILLON <boris.brezillon@free-electrons.com>
Date:   Thu Jul 30 12:18:03 2015 +0200

    mtd: mtdpart: fix add_mtd_partitions error path
    
    commit e5bae86797141e4a95e42d825f737cb36d7b8c37 upstream.
    
    If we fail to allocate a partition structure in the middle of the partition
    creation process, the already allocated partitions are never removed, which
    means they are still present in the partition list and their resources are
    never freed.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9100d1654d2c3c2980401f472326f83ea0e90c0d
Author: Hon Ching \(Vicky\) Lo <honclo@linux.vnet.ibm.com>
Date:   Wed Oct 7 20:11:51 2015 -0400

    vTPM: fix memory allocation flag for rtce buffer at kernel boot
    
    commit 60ecd86c4d985750efa0ea3d8610972b09951715 upstream.
    
    At ibm vtpm initialzation, tpm_ibmvtpm_probe() registers its interrupt
    handler, ibmvtpm_interrupt, which calls ibmvtpm_crq_process to allocate
    memory for rtce buffer.  The current code uses 'GFP_KERNEL' as the
    type of kernel memory allocation, which resulted a warning at
    kernel/lockdep.c.  This patch uses 'GFP_ATOMIC' instead so that the
    allocation is high-priority and does not sleep.
    
    Signed-off-by: Hon Ching(Vicky) Lo <honclo@linux.vnet.ibm.com>
    Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit d5dfe9381067b56d585f0f3cf2723da791de8e99
Author: Uri Mashiach <uri.mashiach@compulab.co.il>
Date:   Thu Dec 24 16:05:00 2015 +0200

    wlcore/wl12xx: spi: fix NULL pointer dereference (Oops)
    
    commit e47301b06d5a65678690f04c2248fd181db1e59a upstream.
    
    Fix the below Oops when trying to modprobe wlcore_spi.
    The oops occurs because the wl1271_power_{off,on}()
    function doesn't check the power() function pointer.
    
    [   23.401447] Unable to handle kernel NULL pointer dereference at
    virtual address 00000000
    [   23.409954] pgd = c0004000
    [   23.412922] [00000000] *pgd=00000000
    [   23.416693] Internal error: Oops: 80000007 [#1] SMP ARM
    [   23.422168] Modules linked in: wl12xx wlcore mac80211 cfg80211
    musb_dsps musb_hdrc usbcore usb_common snd_soc_simple_card evdev joydev
    omap_rng wlcore_spi snd_soc_tlv320aic23_i2c rng_core snd_soc_tlv320aic23
    c_can_platform c_can can_dev snd_soc_davinci_mcasp snd_soc_edma
    snd_soc_omap omap_wdt musb_am335x cpufreq_dt thermal_sys hwmon
    [   23.453253] CPU: 0 PID: 36 Comm: kworker/0:2 Not tainted
    4.2.0-00002-g951efee-dirty #233
    [   23.461720] Hardware name: Generic AM33XX (Flattened Device Tree)
    [   23.468123] Workqueue: events request_firmware_work_func
    [   23.473690] task: de32efc0 ti: de4ee000 task.ti: de4ee000
    [   23.479341] PC is at 0x0
    [   23.482112] LR is at wl12xx_set_power_on+0x28/0x124 [wlcore]
    [   23.488074] pc : [<00000000>]    lr : [<bf2581f0>]    psr: 60000013
    [   23.488074] sp : de4efe50  ip : 00000002  fp : 00000000
    [   23.500162] r10: de7cdd00  r9 : dc848800  r8 : bf27af00
    [   23.505663] r7 : bf27a1a8  r6 : dcbd8a80  r5 : dce0e2e0  r4 :
    dce0d2e0
    [   23.512536] r3 : 00000000  r2 : 00000000  r1 : 00000001  r0 :
    dc848810
    [   23.519412] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM
    Segment kernel
    [   23.527109] Control: 10c5387d  Table: 9cb78019  DAC: 00000015
    [   23.533160] Process kworker/0:2 (pid: 36, stack limit = 0xde4ee218)
    [   23.539760] Stack: (0xde4efe50 to 0xde4f0000)
    
    [...]
    
    [   23.665030] [<bf2581f0>] (wl12xx_set_power_on [wlcore]) from
    [<bf25f7ac>] (wlcore_nvs_cb+0x118/0xa4c [wlcore])
    [   23.675604] [<bf25f7ac>] (wlcore_nvs_cb [wlcore]) from [<c04387ec>]
    (request_firmware_work_func+0x30/0x58)
    [   23.685784] [<c04387ec>] (request_firmware_work_func) from
    [<c0058e2c>] (process_one_work+0x1b4/0x4b4)
    [   23.695591] [<c0058e2c>] (process_one_work) from [<c0059168>]
    (worker_thread+0x3c/0x4a4)
    [   23.704124] [<c0059168>] (worker_thread) from [<c005ee68>]
    (kthread+0xd4/0xf0)
    [   23.711747] [<c005ee68>] (kthread) from [<c000f598>]
    (ret_from_fork+0x14/0x3c)
    [   23.719357] Code: bad PC value
    [   23.722760] ---[ end trace 981be8510db9b3a9 ]---
    
    Prevent oops by validationg power() pointer value before
    calling the function.
    
    Signed-off-by: Uri Mashiach <uri.mashiach@compulab.co.il>
    Acked-by: Igor Grinberg <grinberg@compulab.co.il>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit eb0c82e1e1d06bd932d1ace3992abc2d6d208b7d
Author: Uri Mashiach <uri.mashiach@compulab.co.il>
Date:   Thu Dec 10 15:12:56 2015 +0200

    wlcore/wl12xx: spi: fix oops on firmware load
    
    commit 9b2761cb72dc41e1948c8a5512b4efd384eda130 upstream.
    
    The maximum chunks used by the function is
    (SPI_AGGR_BUFFER_SIZE / WSPI_MAX_CHUNK_SIZE + 1).
    The original commands array had space for
    (SPI_AGGR_BUFFER_SIZE / WSPI_MAX_CHUNK_SIZE) commands.
    When the last chunk is used (len > 4 * WSPI_MAX_CHUNK_SIZE), the last
    command is stored outside the bounds of the commands array.
    
    Oops 5 (page fault) is generated during current wl1271 firmware load
    attempt:
    
    root@debian-armhf:~# ifconfig wlan0 up
    [  294.312399] Unable to handle kernel paging request at virtual address
    00203fc4
    [  294.320173] pgd = de528000
    [  294.323028] [00203fc4] *pgd=00000000
    [  294.326916] Internal error: Oops: 5 [#1] SMP ARM
    [  294.331789] Modules linked in: bnep rfcomm bluetooth ipv6 arc4 wl12xx
    wlcore mac80211 musb_dsps cfg80211 musb_hdrc usbcore usb_common
    wlcore_spi omap_rng rng_core musb_am335x omap_wdt cpufreq_dt thermal_sys
    hwmon
    [  294.351838] CPU: 0 PID: 1827 Comm: ifconfig Not tainted
    4.2.0-00002-g3e9ad27-dirty #78
    [  294.360154] Hardware name: Generic AM33XX (Flattened Device Tree)
    [  294.366557] task: dc9d6d40 ti: de550000 task.ti: de550000
    [  294.372236] PC is at __spi_validate+0xa8/0x2ac
    [  294.376902] LR is at __spi_sync+0x78/0x210
    [  294.381200] pc : [<c049c760>]    lr : [<c049ebe0>]    psr: 60000013
    [  294.381200] sp : de551998  ip : de5519d8  fp : 00200000
    [  294.393242] r10: de551c8c  r9 : de5519d8  r8 : de3a9000
    [  294.398730] r7 : de3a9258  r6 : de3a9400  r5 : de551a48  r4 :
    00203fbc
    [  294.405577] r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 :
    de3a9000
    [  294.412420] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM
    Segment user
    [  294.419918] Control: 10c5387d  Table: 9e528019  DAC: 00000015
    [  294.425954] Process ifconfig (pid: 1827, stack limit = 0xde550218)
    [  294.432437] Stack: (0xde551998 to 0xde552000)
    
    ...
    
    [  294.883613] [<c049c760>] (__spi_validate) from [<c049ebe0>]
    (__spi_sync+0x78/0x210)
    [  294.891670] [<c049ebe0>] (__spi_sync) from [<bf036598>]
    (wl12xx_spi_raw_write+0xfc/0x148 [wlcore_spi])
    [  294.901661] [<bf036598>] (wl12xx_spi_raw_write [wlcore_spi]) from
    [<bf21c694>] (wlcore_boot_upload_firmware+0x1ec/0x458 [wlcore])
    [  294.914038] [<bf21c694>] (wlcore_boot_upload_firmware [wlcore]) from
    [<bf24532c>] (wl12xx_boot+0xc10/0xfac [wl12xx])
    [  294.925161] [<bf24532c>] (wl12xx_boot [wl12xx]) from [<bf20d5cc>]
    (wl1271_op_add_interface+0x5b0/0x910 [wlcore])
    [  294.936364] [<bf20d5cc>] (wl1271_op_add_interface [wlcore]) from
    [<bf15c4ac>] (ieee80211_do_open+0x44c/0xf7c [mac80211])
    [  294.947963] [<bf15c4ac>] (ieee80211_do_open [mac80211]) from
    [<c0537978>] (__dev_open+0xa8/0x110)
    [  294.957307] [<c0537978>] (__dev_open) from [<c0537bf8>]
    (__dev_change_flags+0x88/0x148)
    [  294.965713] [<c0537bf8>] (__dev_change_flags) from [<c0537cd0>]
    (dev_change_flags+0x18/0x48)
    [  294.974576] [<c0537cd0>] (dev_change_flags) from [<c05a55a0>]
    (devinet_ioctl+0x6b4/0x7d0)
    [  294.983191] [<c05a55a0>] (devinet_ioctl) from [<c0517040>]
    (sock_ioctl+0x1e4/0x2bc)
    [  294.991244] [<c0517040>] (sock_ioctl) from [<c017d378>]
    (do_vfs_ioctl+0x420/0x6b0)
    [  294.999208] [<c017d378>] (do_vfs_ioctl) from [<c017d674>]
    (SyS_ioctl+0x6c/0x7c)
    [  295.006880] [<c017d674>] (SyS_ioctl) from [<c000f4c0>]
    (ret_fast_syscall+0x0/0x54)
    [  295.014835] Code: e1550004 e2444034 0a00007d e5953018 (e5942008)
    [  295.021544] ---[ end trace 66ed188198f4e24e ]---
    
    Signed-off-by: Uri Mashiach <uri.mashiach@compulab.co.il>
    Acked-by: Igor Grinberg <grinberg@compulab.co.il>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9671d92512a2c3ee31d7f16887531636b68a66e7
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Dec 14 16:16:19 2015 +0100

    spi: fix parent-device reference leak
    
    commit 157f38f993919b648187ba341bfb05d0e91ad2f6 upstream.
    
    Fix parent-device reference leak due to SPI-core taking an unnecessary
    reference to the parent when allocating the master structure, a
    reference that was never released.
    
    Note that driver core takes its own reference to the parent when the
    master device is registered.
    
    Fixes: 49dce689ad4e ("spi doesn't need class_device")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 3b8d42286ca364e26082da247653b1c0c8384ad3
Author: Vignesh R <vigneshr@ti.com>
Date:   Mon Oct 12 13:22:02 2015 +0530

    spi: ti-qspi: Fix data corruption seen on r/w stress test
    
    commit bc27a53928981662079aa243915b443370294a03 upstream.
    
    Writing invalid command to QSPI_SPI_CMD_REG will terminate current
    transfer and de-assert the chip select. This has to be done before
    calling spi_finalize_current_message(). Because
    spi_finalize_current_message() will mark the end of current message
    transfer and schedule the next transfer. If the chipselect is not
    de-asserted before calling spi_finalize_current_message() then the next
    transfer will overlap with the previous transfer leading to data
    corruption.
    __spi_pump_message() can be called either from kthread worker context or
    directly from the calling process's context. It is possible that these
    two calls can race against each other. But race is serialized by
    checking whether master->cur_msg == NULL (pointer to msg being handled
    by transfer_one() at present). The master->cur_msg is set to NULL when
    spi_finalize_current_message() is called on that message, which means
    calling spi_finalize_current_message() allows __spi_sync() to pump next
    message in calling process context.
    Now if spi-ti-qspi calls spi_finalize_current_message() before we
    terminate transfer at hardware side, if __spi_pump_message() is called
    from process context then the successive transactions can overlap.
    
    Fix this by moving writing invalid command to QSPI_SPI_CMD_REG to
    before calling spi_finalize_current_message() call.
    
    Signed-off-by: Vignesh R <vigneshr@ti.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit faed3a9b791845428adb337313a566ffbcaba4d6
Author: David Mosberger-Tang <davidm@egauge.net>
Date:   Tue Oct 20 14:26:47 2015 +0200

    spi: atmel: Fix DMA-setup for transfers with more than 8 bits per word
    
    commit 06515f83908d038d9e12ffa3dcca27a1b67f2de0 upstream.
    
    The DMA-slave configuration depends on the whether <= 8 or > 8 bits
    are transferred per word, so we need to call
    atmel_spi_dma_slave_config() with the correct value.
    
    Signed-off-by: David Mosberger <davidm@egauge.net>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit ec3b2cdc13357e617ae0cce6fec611926009c483
Author: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
Date:   Thu Oct 29 10:24:23 2015 -0200

    Revert "dm mpath: fix stalls when handling invalid ioctls"
    
    commit 47796938c46b943d157ac8a6f9ed4e3b98b83cf4 upstream.
    
    This reverts commit a1989b330093578ea5470bea0a00f940c444c466.
    
    That commit introduced a regression at least for the case of the SG_IO ioctl()
    running without CAP_SYS_RAWIO capability (e.g., unprivileged users) when there
    are no active paths: the ioctl() fails with the ENOTTY errno immediately rather
    than blocking due to queue_if_no_path until a path becomes active, for example.
    
    That case happens to be exercised by QEMU KVM guests with 'scsi-block' devices
    (qemu "-device scsi-block" [1], libvirt "<disk type='block' device='lun'>" [2])
    from multipath devices; which leads to SCSI/filesystem errors in such a guest.
    
    More general scenarios can hit that regression too. The following demonstration
    employs a SG_IO ioctl() with a standard SCSI INQUIRY command for this objective
    (some output & user changes omitted for brevity and comments added for clarity).
    
    Reverting that commit restores normal operation (queueing) in failing scenarios;
    tested on linux-next (next-20151022).
    
    1) Test-case is based on sg_simple0 [3] (just SG_IO; remove SG_GET_VERSION_NUM)
    
        $ cat sg_simple0.c
        ... see [3] ...
        $ sed '/SG_GET_VERSION_NUM/,/}/d' sg_simple0.c > sgio_inquiry.c
        $ gcc sgio_inquiry.c -o sgio_inquiry
    
    2) The ioctl() works fine with active paths present.
    
        # multipath -l 85ag56
        85ag56 (...) dm-19 IBM     ,2145
        size=60G features='1 queue_if_no_path' hwhandler='0' wp=rw
        |-+- policy='service-time 0' prio=0 status=active
        | |- 8:0:11:0  sdz  65:144  active undef running
        | `- 9:0:9:0   sdbf 67:144  active undef running
        `-+- policy='service-time 0' prio=0 status=enabled
          |- 8:0:12:0  sdae 65:224  active undef running
          `- 9:0:12:0  sdbo 68:32   active undef running
    
        $ ./sgio_inquiry /dev/mapper/85ag56
        Some of the INQUIRY command's response:
            IBM       2145              0000
        INQUIRY duration=0 millisecs, resid=0
    
    3) The ioctl() fails with ENOTTY errno with _no_ active paths present,
       for unprivileged users (rather than blocking due to queue_if_no_path).
    
        # for path in $(multipath -l 85ag56 | grep -o 'sd[a-z]\+'); \
              do multipathd -k"fail path $path"; done
    
        # multipath -l 85ag56
        85ag56 (...) dm-19 IBM     ,2145
        size=60G features='1 queue_if_no_path' hwhandler='0' wp=rw
        |-+- policy='service-time 0' prio=0 status=enabled
        | |- 8:0:11:0  sdz  65:144  failed undef running
        | `- 9:0:9:0   sdbf 67:144  failed undef running
        `-+- policy='service-time 0' prio=0 status=enabled
          |- 8:0:12:0  sdae 65:224  failed undef running
          `- 9:0:12:0  sdbo 68:32   failed undef running
    
        $ ./sgio_inquiry /dev/mapper/85ag56
        sg_simple0: Inquiry SG_IO ioctl error: Inappropriate ioctl for device
    
    4) dmesg shows that scsi_verify_blk_ioctl() failed for SG_IO (0x2285);
       it returns -ENOIOCTLCMD, later replaced with -ENOTTY in vfs_ioctl().
    
        $ dmesg
        <...>
        [] device-mapper: multipath: Failing path 65:144.
        [] device-mapper: multipath: Failing path 67:144.
        [] device-mapper: multipath: Failing path 65:224.
        [] device-mapper: multipath: Failing path 68:32.
        [] sgio_inquiry: sending ioctl 2285 to a partition!
    
    5) The ioctl() only works if the SYS_CAP_RAWIO capability is present
       (then queueing happens -- in this example, queue_if_no_path is set);
       this is due to a conditional check in scsi_verify_blk_ioctl().
    
        # capsh --drop=cap_sys_rawio -- -c './sgio_inquiry /dev/mapper/85ag56'
        sg_simple0: Inquiry SG_IO ioctl error: Inappropriate ioctl for device
    
        # ./sgio_inquiry /dev/mapper/85ag56 &
        [1] 72830
    
        # cat /proc/72830/stack
        [<c00000171c0df700>] 0xc00000171c0df700
        [<c000000000015934>] __switch_to+0x204/0x350
        [<c000000000152d4c>] msleep+0x5c/0x80
        [<c00000000077dfb0>] dm_blk_ioctl+0x70/0x170
        [<c000000000487c40>] blkdev_ioctl+0x2b0/0x9b0
        [<c0000000003128e4>] block_ioctl+0x64/0xd0
        [<c0000000002dd3b0>] do_vfs_ioctl+0x490/0x780
        [<c0000000002dd774>] SyS_ioctl+0xd4/0xf0
        [<c000000000009358>] system_call+0x38/0xd0
    
    6) This is the function call chain exercised in this analysis:
    
    SYSCALL_DEFINE3(ioctl, <...>) @ fs/ioctl.c
        -> do_vfs_ioctl()
            -> vfs_ioctl()
                ...
                error = filp->f_op->unlocked_ioctl(filp, cmd, arg);
                ...
                    -> dm_blk_ioctl() @ drivers/md/dm.c
                        -> multipath_ioctl() @ drivers/md/dm-mpath.c
                            ...
                            (bdev = NULL, due to no active paths)
                            ...
                            if (!bdev || <...>) {
                                int err = scsi_verify_blk_ioctl(NULL, cmd);
                                if (err)
                                    r = err;
                            }
                            ...
                                -> scsi_verify_blk_ioctl() @ block/scsi_ioctl.c
                                    ...
                                    if (bd && bd == bd->bd_contains) // not taken (bd = NULL)
                                        return 0;
                                    ...
                                    if (capable(CAP_SYS_RAWIO)) // not taken (unprivileged user)
                                        return 0;
                                    ...
                                    printk_ratelimited(KERN_WARNING
                                               "%s: sending ioctl %x to a partition!\n" <...>);
    
                                    return -ENOIOCTLCMD;
                                <-
                            ...
                            return r ? : <...>
                        <-
                ...
                if (error == -ENOIOCTLCMD)
                    error = -ENOTTY;
                 out:
                    return error;
                ...
    
    Links:
    [1] http://git.qemu.org/?p=qemu.git;a=commit;h=336a6915bc7089fb20fea4ba99972ad9a97c5f52
    [2] https://libvirt.org/formatdomain.html#elementsDisks (see 'disk' -> 'device')
    [3] http://tldp.org/HOWTO/SCSI-Generic-HOWTO/pexample.html (Revision 1.2, 2002-05-03)
    
    Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit afa6ea6ad1bef53a8ac1b6c4ce7437371d46f251
Author: Dmitry V. Levin <ldv@altlinux.org>
Date:   Fri Dec 11 13:41:06 2015 -0800

    sh64: fix __NR_fgetxattr
    
    commit 2d33fa1059da4c8e816627a688d950b613ec0474 upstream.
    
    According to arch/sh/kernel/syscalls_64.S and common sense, __NR_fgetxattr
    has to be defined to 259, but it doesn't.  Instead, it's defined to 269,
    which is of course used by another syscall, __NR_sched_setaffinity in this
    case.
    
    This bug was found by strace test suite.
    
    Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
    Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 4e7094d5b3677a5a832985d2891568c9573bfa28
Author: xuejiufei <xuejiufei@huawei.com>
Date:   Fri Feb 5 15:36:47 2016 -0800

    ocfs2/dlm: clear refmap bit of recovery lock while doing local recovery cleanup
    
    commit c95a51807b730e4681e2ecbdfd669ca52601959e upstream.
    
    When recovery master down, dlm_do_local_recovery_cleanup() only remove
    the $RECOVERY lock owned by dead node, but do not clear the refmap bit.
    Which will make umount thread falling in dead loop migrating $RECOVERY
    to the dead node.
    
    Signed-off-by: xuejiufei <xuejiufei@huawei.com>
    Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
    Cc: Mark Fasheh <mfasheh@suse.de>
    Cc: Joel Becker <jlbec@evilplan.org>
    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: Jiri Slaby <jslaby@suse.cz>

commit 327f9703c84483c87b0fa3048819939e79f43b37
Author: xuejiufei <xuejiufei@huawei.com>
Date:   Thu Jan 14 15:17:38 2016 -0800

    ocfs2/dlm: ignore cleaning the migration mle that is inuse
    
    commit bef5502de074b6f6fa647b94b73155d675694420 upstream.
    
    We have found that migration source will trigger a BUG that the refcount
    of mle is already zero before put when the target is down during
    migration.  The situation is as follows:
    
    dlm_migrate_lockres
      dlm_add_migration_mle
      dlm_mark_lockres_migrating
      dlm_get_mle_inuse
      <<<<<< Now the refcount of the mle is 2.
      dlm_send_one_lockres and wait for the target to become the
      new master.
      <<<<<< o2hb detect the target down and clean the migration
      mle. Now the refcount is 1.
    
    dlm_migrate_lockres woken, and put the mle twice when found the target
    goes down which trigger the BUG with the following message:
    
      "ERROR: bad mle: ".
    
    Signed-off-by: Jiufei Xue <xuejiufei@huawei.com>
    Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
    Cc: Mark Fasheh <mfasheh@suse.de>
    Cc: Joel Becker <jlbec@evilplan.org>
    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: Jiri Slaby <jslaby@suse.cz>

commit 562b5d5e87834bfad9fd7baa9d23fccc74fd41b0
Author: Richard Weinberger <richard@nod.at>
Date:   Fri Nov 20 15:57:21 2015 -0800

    kernel/signal.c: unexport sigsuspend()
    
    commit 9d8a765211335cfdad464b90fb19f546af5706ae upstream.
    
    sigsuspend() is nowhere used except in signal.c itself, so we can mark it
    static do not pollute the global namespace.
    
    But this patch is more than a boring cleanup patch, it fixes a real issue
    on UserModeLinux.  UML has a special console driver to display ttys using
    xterm, or other terminal emulators, on the host side.  Vegard reported
    that sometimes UML is unable to spawn a xterm and he's facing the
    following warning:
    
      WARNING: CPU: 0 PID: 908 at include/linux/thread_info.h:128 sigsuspend+0xab/0xc0()
    
    It turned out that this warning makes absolutely no sense as the UML
    xterm code calls sigsuspend() on the host side, at least it tries.  But
    as the kernel itself offers a sigsuspend() symbol the linker choose this
    one instead of the glibc wrapper.  Interestingly this code used to work
    since ever but always blocked signals on the wrong side.  Some recent
    kernel change made the WARN_ON() trigger and uncovered the bug.
    
    It is a wonderful example of how much works by chance on computers. :-)
    
    Fixes: 68f3f16d9ad0f1 ("new helper: sigsuspend()")
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
    Tested-by: Vegard Nossum <vegard.nossum@oracle.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 8ffd304fd7a423ba1fe8819ac70785fb9ed46bab
Author: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Date:   Fri Nov 20 15:57:15 2015 -0800

    fat: fix fake_offset handling on error path
    
    commit 928a477102c4fc6739883415b66987207e3502f4 upstream.
    
    For the root directory, .  and ..  are faked (using dir_emit_dots()) and
    ctx->pos is reset from 2 to 0.
    
    A corrupted root directory could cause fat_get_entry() to fail, but
    ->iterate() (fat_readdir()) reports progress to the VFS (with ctx->pos
    rewound to 0), so any following calls to ->iterate() continue to return
    the same entries again and again.
    
    The result is that userspace will never see the end of the directory,
    causing e.g.  'ls' to hang in a getdents() loop.
    
    [hirofumi@mail.parknet.co.jp: cleanup and make sure to correct fake_offset]
    Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
    Tested-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Richard Weinberger <richard.weinberger@gmail.com>
    Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 881aa623a5ffdb1b08f04a3d8af08905b64118c6
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Nov 20 18:26:07 2015 +0100

    remoteproc: avoid stack overflow in debugfs file
    
    commit 92792e48e2ae6051af30468a87994b5432da2f06 upstream.
    
    Recent gcc versions warn about reading from a negative offset of
    an on-stack array:
    
    drivers/remoteproc/remoteproc_debugfs.c: In function 'rproc_recovery_write':
    drivers/remoteproc/remoteproc_debugfs.c:167:9: warning: 'buf[4294967295u]' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
    I don't see anything in sys_write() that prevents us from
    being called with a zero 'count' argument, so we should
    add an extra check in rproc_recovery_write() to prevent the
    access and avoid the warning.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 2e37abb89a2e ("remoteproc: create a 'recovery' debugfs entry")
    Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 71755056d169833625addb418e59e2b2d8d3bcdf
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Fri Nov 6 16:30:06 2015 -0800

    proc: actually make proc_fd_permission() thread-friendly
    
    commit 54708d2858e79a2bdda10bf8a20c80eb96c20613 upstream.
    
    The commit 96d0df79f264 ("proc: make proc_fd_permission() thread-friendly")
    fixed the access to /proc/self/fd from sub-threads, but introduced another
    problem: a sub-thread can't access /proc/<tid>/fd/ or /proc/thread-self/fd
    if generic_permission() fails.
    
    Change proc_fd_permission() to check same_thread_group(pid_task(), current).
    
    Fixes: 96d0df79f264 ("proc: make proc_fd_permission() thread-friendly")
    Reported-by: "Jin, Yihua" <yihua.jin@intel.com>
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 9d7b13540116fa3727a081b122b4714d50eb6cdf
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Mon Feb 15 16:51:55 2016 +0100

    Revert "ocfs2: fix umask ignored issue"
    
    This reverts commit e1f20b83cc2d70aafb060e302564f968d2da9d43, upstream
    commit 8f1eb48758aacf6c1ffce18179295adbf3bd7640. This commit fixes
    702e5bc ("ocfs2: use generic posix ACL infrastructure"), which is only
    in 3.14.
    
    So this commit should have never been applied to 3.12 and it can
    cause sgid inheritance issues.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 6316a3e99fc7a48af3d2ccabb11806c4d4d61c0b
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 13 18:42:26 2016 +0000

    pipe: Fix buffer offset after partially failed read
    
    Quoting the RHEL advisory:
    
    > It was found that the fix for CVE-2015-1805 incorrectly kept buffer
    > offset and buffer length in sync on a failed atomic read, potentially
    > resulting in a pipe buffer state corruption. A local, unprivileged user
    > could use this flaw to crash the system or leak kernel memory to user
    > space. (CVE-2016-0774, Moderate)
    
    The same flawed fix was applied to stable branches from 2.6.32.y to
    3.14.y inclusive, and I was able to reproduce the issue on 3.2.y.
    We need to give pipe_iov_copy_to_user() a separate offset variable
    and only update the buffer offset if it succeeds.
    
    References: https://rhn.redhat.com/errata/RHSA-2016-0103.html
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>

commit 173a4661a78d49aee0f4e28e4075f01af8976c19
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Thu Jun 28 12:10:55 2012 -0400

    dcache: use IS_ROOT to decide where dentry is hashed
    
    commit 7632e465feb182cadc3c9aa1282a057201818a8c upstream.
    
    Every hashed dentry is either hashed in the dentry_hashtable, or a
    superblock's s_anon list.
    
    __d_drop() assumes it can determine which is the case by checking
    DCACHE_DISCONNECTED; this is not true.
    
    It is true that when DCACHE_DISCONNECTED is cleared, the dentry is not
    only hashed on dentry_hashtable, but is fully connected to its parents
    back to the root.
    
    But the converse is *not* true: fs/exportfs/expfs.c:reconnect_path()
    attempts to connect a directory (found by filehandle lookup) back to
    root by ascending to parents and performing lookups one at a time.  It
    does not clear DCACHE_DISCONNECTED until it's done, and that is not at
    all an atomic process.
    
    In particular, it is possible for DCACHE_DISCONNECTED to be set on a
    dentry which is hashed on the dentry_hashtable.
    
    Instead, use IS_ROOT() to check which hash chain a dentry is on.  This
    *does* work:
    
    Dentries are hashed only by:
    
    	- d_obtain_alias, which adds an IS_ROOT() dentry to sb_anon.
    
    	- __d_rehash, called by _d_rehash: hashes to the dentry's
    	  parent, and all callers of _d_rehash appear to have d_parent
    	  set to a "real" parent.
    	- __d_rehash, called by __d_move: rehashes the moved dentry to
    	  hash chain determined by target, and assigns target's d_parent
    	  to its d_parent, before dropping the dentry's d_lock.
    
    Therefore I believe it's safe for a holder of a dentry's d_lock to
    assume that it is hashed on sb_anon if and only if IS_ROOT(dentry) is
    true.
    
    I believe the incorrect assumption about DCACHE_DISCONNECTED was
    originally introduced by ceb5bdc2d246 "fs: dcache per-bucket dcache hash
    locking".
    
    Also add a comment while we're here.
    
    Cc: Nick Piggin <npiggin@kernel.dk>
    Acked-by: Christoph Hellwig <hch@infradead.org>
    Reviewed-by: NeilBrown <neilb@suse.de>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>