commit d45da77ced2a983edc2cd55d26e7693b1f3613dd
Author: Sasha Levin <alexander.levin@verizon.com>
Date:   Mon Aug 22 12:15:23 2016 -0400

    Linux 3.18.40
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8f03e30ef13219ea2520f44d2b01daad5c95f30f
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Wed May 11 16:51:51 2016 +0300

    perf/x86: Fix undefined shift on 32-bit kernels
    
    [ Upstream commit 6d6f2833bfbf296101f9f085e10488aef2601ba5 ]
    
    Jim reported:
    
            UBSAN: Undefined behaviour in arch/x86/events/intel/core.c:3708:12
            shift exponent 35 is too large for 32-bit type 'long unsigned int'
    
    The use of 'unsigned long' type obviously is not correct here, make it
    'unsigned long long' instead.
    
    Reported-by: Jim Cromie <jim.cromie@gmail.com>
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <stable@vger.kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Imre Palik <imrep@amazon.de>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: 2c33645d366d ("perf/x86: Honor the architectural performance monitoring version")
    Link: http://lkml.kernel.org/r/1462974711-10037-1-git-send-email-aryabinin@virtuozzo.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 3e287c23efba166b0b4c618a4f7e52016ff0e0ae
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Wed Jun 22 19:43:35 2016 +0100

    nfsd: check permissions when setting ACLs
    
    [ Upstream commit 999653786df6954a31044528ac3f7a5dadca08f4 ]
    
    Use set_posix_acl, which includes proper permission checks, instead of
    calling ->set_acl directly.  Without this anyone may be able to grant
    themselves permissions to a file by setting the ACL.
    
    Lock the inode to make the new checks atomic with respect to set_acl.
    (Also, nfsd was the only caller of set_acl not locking the inode, so I
    suspect this may fix other races.)
    
    This also simplifies the code, and ensures our ACLs are checked by
    posix_acl_valid.
    
    The permission checks and the inode locking were lost with commit
    4ac7249e, which changed nfsd to use the set_acl inode operation directly
    instead of going through xattr handlers.
    
    Reported-by: David Sinquin <david@sinquin.eu>
    [agreunba@redhat.com: use set_posix_acl]
    Fixes: 4ac7249e
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: stable@vger.kernel.org
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6abbd53f83fe94fb2562b3a45ef7770e4dfcde29
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Wed Jun 22 23:57:25 2016 +0200

    posix_acl: Add set_posix_acl
    
    [ Upstream commit 485e71e8fb6356c08c7fc6bcce4bf02c9a9a663f ]
    
    Factor out part of posix_acl_xattr_set into a common function that takes
    a posix_acl, which nfsd can also call.
    
    The prototype already exists in include/linux/posix_acl.h.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Cc: stable@vger.kernel.org
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4f143eb491cb0efa06c44d45db821b89a2cef48a
Author: Gavin Shan <gwshan@linux.vnet.ibm.com>
Date:   Thu May 26 09:56:07 2016 +1000

    powerpc/pseries: Fix PCI config address for DDW
    
    [ Upstream commit 8a934efe94347eee843aeea65bdec8077a79e259 ]
    
    In commit 8445a87f7092 "powerpc/iommu: Remove the dependency on EEH
    struct in DDW mechanism", the PE address was replaced with the PCI
    config address in order to remove dependency on EEH. According to PAPR
    spec, firmware (pHyp or QEMU) should accept "xxBBSSxx" format PCI config
    address, not "xxxxBBSS" provided by the patch. Note that "BB" is PCI bus
    number and "SS" is the combination of slot and function number.
    
    This fixes the PCI address passed to DDW RTAS calls.
    
    Fixes: 8445a87f7092 ("powerpc/iommu: Remove the dependency on EEH struct in DDW mechanism")
    Cc: stable@vger.kernel.org # v3.4+
    Reported-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Tested-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 79babf8a249dfd04a15b07c85f089ee2c0f449bb
Author: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Date:   Mon Apr 11 16:17:23 2016 -0300

    powerpc/iommu: Remove the dependency on EEH struct in DDW mechanism
    
    [ Upstream commit 8445a87f7092bc8336ea1305be9306f26b846d93 ]
    
    Commit 39baadbf36ce ("powerpc/eeh: Remove eeh information from pci_dn")
    changed the pci_dn struct by removing its EEH-related members.
    As part of this clean-up, DDW mechanism was modified to read the device
    configuration address from eeh_dev struct.
    
    As a consequence, now if we disable EEH mechanism on kernel command-line
    for example, the DDW mechanism will fail, generating a kernel oops by
    dereferencing a NULL pointer (which turns to be the eeh_dev pointer).
    
    This patch just changes the configuration address calculation on DDW
    functions to a manual calculation based on pci_dn members instead of
    using eeh_dev-based address.
    
    No functional changes were made. This was tested on pSeries, both
    in PHyp and qemu guest.
    
    Fixes: 39baadbf36ce ("powerpc/eeh: Remove eeh information from pci_dn")
    Cc: stable@vger.kernel.org # v3.4+
    Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8bc7adafc3a58801319873cbfa38f4fc8e0047b4
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Fri Jul 29 10:40:31 2016 +0200

    block: fix use-after-free in seq file
    
    [ Upstream commit 77da160530dd1dc94f6ae15a981f24e5f0021e84 ]
    
    I got a KASAN report of use-after-free:
    
        ==================================================================
        BUG: KASAN: use-after-free in klist_iter_exit+0x61/0x70 at addr ffff8800b6581508
        Read of size 8 by task trinity-c1/315
        =============================================================================
        BUG kmalloc-32 (Not tainted): kasan: bad access detected
        -----------------------------------------------------------------------------
    
        Disabling lock debugging due to kernel taint
        INFO: Allocated in disk_seqf_start+0x66/0x110 age=144 cpu=1 pid=315
                ___slab_alloc+0x4f1/0x520
                __slab_alloc.isra.58+0x56/0x80
                kmem_cache_alloc_trace+0x260/0x2a0
                disk_seqf_start+0x66/0x110
                traverse+0x176/0x860
                seq_read+0x7e3/0x11a0
                proc_reg_read+0xbc/0x180
                do_loop_readv_writev+0x134/0x210
                do_readv_writev+0x565/0x660
                vfs_readv+0x67/0xa0
                do_preadv+0x126/0x170
                SyS_preadv+0xc/0x10
                do_syscall_64+0x1a1/0x460
                return_from_SYSCALL_64+0x0/0x6a
        INFO: Freed in disk_seqf_stop+0x42/0x50 age=160 cpu=1 pid=315
                __slab_free+0x17a/0x2c0
                kfree+0x20a/0x220
                disk_seqf_stop+0x42/0x50
                traverse+0x3b5/0x860
                seq_read+0x7e3/0x11a0
                proc_reg_read+0xbc/0x180
                do_loop_readv_writev+0x134/0x210
                do_readv_writev+0x565/0x660
                vfs_readv+0x67/0xa0
                do_preadv+0x126/0x170
                SyS_preadv+0xc/0x10
                do_syscall_64+0x1a1/0x460
                return_from_SYSCALL_64+0x0/0x6a
    
        CPU: 1 PID: 315 Comm: trinity-c1 Tainted: G    B           4.7.0+ #62
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
         ffffea0002d96000 ffff880119b9f918 ffffffff81d6ce81 ffff88011a804480
         ffff8800b6581500 ffff880119b9f948 ffffffff8146c7bd ffff88011a804480
         ffffea0002d96000 ffff8800b6581500 fffffffffffffff4 ffff880119b9f970
        Call Trace:
         [<ffffffff81d6ce81>] dump_stack+0x65/0x84
         [<ffffffff8146c7bd>] print_trailer+0x10d/0x1a0
         [<ffffffff814704ff>] object_err+0x2f/0x40
         [<ffffffff814754d1>] kasan_report_error+0x221/0x520
         [<ffffffff8147590e>] __asan_report_load8_noabort+0x3e/0x40
         [<ffffffff83888161>] klist_iter_exit+0x61/0x70
         [<ffffffff82404389>] class_dev_iter_exit+0x9/0x10
         [<ffffffff81d2e8ea>] disk_seqf_stop+0x3a/0x50
         [<ffffffff8151f812>] seq_read+0x4b2/0x11a0
         [<ffffffff815f8fdc>] proc_reg_read+0xbc/0x180
         [<ffffffff814b24e4>] do_loop_readv_writev+0x134/0x210
         [<ffffffff814b4c45>] do_readv_writev+0x565/0x660
         [<ffffffff814b8a17>] vfs_readv+0x67/0xa0
         [<ffffffff814b8de6>] do_preadv+0x126/0x170
         [<ffffffff814b92ec>] SyS_preadv+0xc/0x10
    
    This problem can occur in the following situation:
    
    open()
     - pread()
        - .seq_start()
           - iter = kmalloc() // succeeds
           - seqf->private = iter
        - .seq_stop()
           - kfree(seqf->private)
     - pread()
        - .seq_start()
           - iter = kmalloc() // fails
        - .seq_stop()
           - class_dev_iter_exit(seqf->private) // boom! old pointer
    
    As the comment in disk_seqf_stop() says, stop is called even if start
    failed, so we need to reinitialise the private pointer to NULL when seq
    iteration stops.
    
    An alternative would be to set the private pointer to NULL when the
    kmalloc() in disk_seqf_start() fails.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit ddc1102b3b2747c4550bd0649a61cafdde9b903c
Author: James Hogan <james.hogan@imgtec.com>
Date:   Thu Aug 4 17:36:08 2016 +0100

    metag: Fix __cmpxchg_u32 asm constraint for CMP
    
    [ Upstream commit 6154c187b97ee7513046bb4eb317a89f738f13ef ]
    
    The LNKGET based atomic sequence in __cmpxchg_u32 has slightly incorrect
    constraints for the return value which under certain circumstances can
    allow an address unit register to be used as the first operand of a CMP
    instruction. This isn't a valid instruction however as the encodings
    only allow a data unit to be specified. This would result in an
    assembler error like the following:
    
      Error: failed to assemble instruction: "CMP A0.2,D0Ar6"
    
    Fix by changing the constraint from "=&da" (assigned, early clobbered,
    data or address unit register) to "=&d" (data unit register only).
    
    The constraint for the second operand, "bd" (an op2 register where op1
    is a data unit register and the instruction supports O2R) is already
    correct assuming the first operand is a data unit register.
    
    Other cases of CMP in inline asm have had their constraints checked, and
    appear to all be fine.
    
    Fixes: 6006c0d8ce94 ("metag: Atomics, locks and bitops")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: linux-metag@vger.kernel.org
    Cc: <stable@vger.kernel.org> # 3.9.x-
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 71f1b13f708b471334c7ad1ceb6231f2b8759c99
Author: Maruthi Srinivas Bayyavarapu <Maruthi.Bayyavarapu@amd.com>
Date:   Wed Aug 3 16:46:39 2016 +0530

    ALSA: hda: add AMD Bonaire AZ PCI ID with proper driver caps
    
    [ Upstream commit fd48331f9b71d2add941adaee3619f5b8527182d ]
    
    This commit fixes garbled audio on Bonaire HDMI
    
    Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7dd90826dfbad228e56025d1ce04745396da3299
Author: Fabian Frederick <fabf@skynet.be>
Date:   Tue Aug 2 14:03:07 2016 -0700

    sysv, ipc: fix security-layer leaking
    
    [ Upstream commit 9b24fef9f0410fb5364245d6cc2bd044cc064007 ]
    
    Commit 53dad6d3a8e5 ("ipc: fix race with LSMs") updated ipc_rcu_putref()
    to receive rcu freeing function but used generic ipc_rcu_free() instead
    of msg_rcu_free() which does security cleaning.
    
    Running LTP msgsnd06 with kmemleak gives the following:
    
      cat /sys/kernel/debug/kmemleak
    
      unreferenced object 0xffff88003c0a11f8 (size 8):
        comm "msgsnd06", pid 1645, jiffies 4294672526 (age 6.549s)
        hex dump (first 8 bytes):
          1b 00 00 00 01 00 00 00                          ........
        backtrace:
          kmemleak_alloc+0x23/0x40
          kmem_cache_alloc_trace+0xe1/0x180
          selinux_msg_queue_alloc_security+0x3f/0xd0
          security_msg_queue_alloc+0x2e/0x40
          newque+0x4e/0x150
          ipcget+0x159/0x1b0
          SyS_msgget+0x39/0x40
          entry_SYSCALL_64_fastpath+0x13/0x8f
    
    Manfred Spraul suggested to fix sem.c as well and Davidlohr Bueso to
    only use ipc_rcu_free in case of security allocation failure in newary()
    
    Fixes: 53dad6d3a8e ("ipc: fix race with LSMs")
    Link: http://lkml.kernel.org/r/1470083552-22966-1-git-send-email-fabf@skynet.be
    Signed-off-by: Fabian Frederick <fabf@skynet.be>
    Cc: Davidlohr Bueso <dbueso@suse.de>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: <stable@vger.kernel.org>    [3.12+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b4f191a70dd6ef063c5becb4c24864cbd6196ef3
Author: Jia He <hejianet@gmail.com>
Date:   Tue Aug 2 14:02:31 2016 -0700

    mm/hugetlb: avoid soft lockup in set_max_huge_pages()
    
    [ Upstream commit 649920c6ab93429b94bc7c1aa7c0e8395351be32 ]
    
    In powerpc servers with large memory(32TB), we watched several soft
    lockups for hugepage under stress tests.
    
    The call traces are as follows:
    1.
    get_page_from_freelist+0x2d8/0xd50
    __alloc_pages_nodemask+0x180/0xc20
    alloc_fresh_huge_page+0xb0/0x190
    set_max_huge_pages+0x164/0x3b0
    
    2.
    prep_new_huge_page+0x5c/0x100
    alloc_fresh_huge_page+0xc8/0x190
    set_max_huge_pages+0x164/0x3b0
    
    This patch fixes such soft lockups.  It is safe to call cond_resched()
    there because it is out of spin_lock/unlock section.
    
    Link: http://lkml.kernel.org/r/1469674442-14848-1-git-send-email-hejianet@gmail.com
    Signed-off-by: Jia He <hejianet@gmail.com>
    Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7154bbe826f886e16b23564c62ae08591b99c1e7
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Fri Jul 29 13:19:55 2016 -0400

    dm flakey: error READ bios during the down_interval
    
    [ Upstream commit 99f3c90d0d85708e7401a81ce3314e50bf7f2819 ]
    
    When the corrupt_bio_byte feature was introduced it caused READ bios to
    no longer be errored with -EIO during the down_interval.  This had to do
    with the complexity of needing to submit READs if the corrupt_bio_byte
    feature was used.
    
    Fix it so READ bios are properly errored with -EIO; doing so early in
    flakey_map() as long as there isn't a match for the corrupt_bio_byte
    feature.
    
    Fixes: a3998799fb4df ("dm flakey: add corrupt_bio_byte feature")
    Reported-by: Akira Hayakawa <ruby.wktk@gmail.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8a7e3694e2d6d06507e2dbdf792caa5973add295
Author: Laura Abbott <labbott@redhat.com>
Date:   Fri Jul 8 12:18:50 2016 -0700

    ftrace/recordmcount: Work around for addition of metag magic but not relocations
    
    [ Upstream commit b2e1c26f0b62531636509fbcb6dab65617ed8331 ]
    
    glibc recently did a sync up (94e73c95d9b5 "elf.h: Sync with the gabi
    webpage") that added a #define for EM_METAG but did not add relocations
    
    This triggers build errors:
    
    scripts/recordmcount.c: In function 'do_file':
    scripts/recordmcount.c:466:28: error: 'R_METAG_ADDR32' undeclared (first use in this function)
      case EM_METAG:  reltype = R_METAG_ADDR32;
                                ^~~~~~~~~~~~~~
    scripts/recordmcount.c:466:28: note: each undeclared identifier is reported only once for each function it appears in
    scripts/recordmcount.c:468:20: error: 'R_METAG_NONE' undeclared (first use in this function)
         rel_type_nop = R_METAG_NONE;
                        ^~~~~~~~~~~~
    
    Work around this change with some more #ifdefery for the relocations.
    
    Fedora Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1354034
    
    Link: http://lkml.kernel.org/r/1468005530-14757-1-git-send-email-labbott@redhat.com
    
    Cc: stable@vger.kernel.org # v3.9+
    Cc: James Hogan <james.hogan@imgtec.com>
    Fixes: 00512bdd4573 ("metag: ftrace support")
    Reported-by: Ross Burton <ross.burton@intel.com>
    Signed-off-by: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0335e86fe11b398837716e5616f44b5c0f8ba4ea
Author: Konstantin Neumoin <kneumoin@virtuozzo.com>
Date:   Mon Jul 11 15:28:59 2016 +0300

    balloon: check the number of available pages in leak balloon
    
    [ Upstream commit 37cf99e08c6fb4dcea0f9ad2b13b6daa8c76a711 ]
    
    The balloon has a special mechanism that is subscribed to the oom
    notification which leads to deflation for a fixed number of pages.
    The number is always fixed even when the balloon is fully deflated.
    But leak_balloon did not expect that the pages to deflate will be more
    than taken, and raise a "BUG" in balloon_page_dequeue when page list
    will be empty.
    
    So, the simplest solution would be to check that the number of releases
    pages is less or equal to the number taken pages.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Konstantin Neumoin <kneumoin@virtuozzo.com>
    Signed-off-by: Denis V. Lunev <den@openvz.org>
    CC: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 40ca045fb7b27303845538f7aa14b13eb33cebb4
Author: Sasha Levin <alexander.levin@verizon.com>
Date:   Sun Aug 14 19:56:14 2016 -0400

    x86/syscalls/64: Add compat_sys_keyctl for 32-bit userspace
    
    [ Upstream commit f7d665627e103e82d34306c7d3f6f46f387c0d8b ]
    
    x86_64 needs to use compat_sys_keyctl for 32-bit userspace rather than
    calling sys_keyctl(). The latter will work in a lot of cases, thereby
    hiding the issue.
    
    Reported-by: Stephan Mueller <smueller@chronox.de>
    Tested-by: Stephan Mueller <smueller@chronox.de>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: keyrings@vger.kernel.org
    Cc: linux-security-module@vger.kernel.org
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/146961615805.14395.5581949237156769439.stgit@warthog.procyon.org.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0ff4673f9a19ca80e982d03fb0983a57a41c883f
Author: Keith Packard <keithp@keithp.com>
Date:   Wed Jul 15 12:14:39 2015 -0700

    ALSA: hda/realtek: Enable HP amp and mute LED on HP Folio 9480m [v3]
    
    [ Upstream commit 98973f2f083a5ec580da8bbb685e6baa93613546 ]
    
    This laptop needs GPIO4 pulled high to enable the headphone amplifier,
    and has a mute LED on GPIO3. I modelled the patch on the existing
    GPIO4 code which pulls the line low for the same purpose; this time,
    the HP amp line is pulled high.
    
    v2: Disable the headphone amplifier when no headphone is connected.
        Don't disable power savings to preserve the LED state.
    
    v3: Remove headset-specific hooks and code; this is just a headphone.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b8463d761945b76bcd49cf9c9f3f4671ea59aa3f
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Thu Jul 28 18:56:13 2016 -0400

    drm/nouveau/fbcon: fix font width not divisible by 8
    
    [ Upstream commit 28668f43b8e421634e1623f72a879812288dd06b ]
    
    The patch f045f459d925 ("drm/nouveau/fbcon: fix out-of-bounds memory accesses")
    tries to fix some out of memory accesses. Unfortunatelly, the patch breaks the
    display when using fonts with width that is not divisiable by 8.
    
    The monochrome bitmap for each character is stored in memory by lines from top
    to bottom. Each line is padded to a full byte.
    
    For example, for 22x11 font, each line is padded to 16 bits, so each
    character is consuming 44 bytes total, that is 11 32-bit words. The patch
    f045f459d925 changed the logic to "dsize = ALIGN(image->width *
    image->height, 32) >> 5", that is just 8 words - this is incorrect and it
    causes display corruption.
    
    This patch adds the necesary padding of lines to 8 bytes.
    
    This patch should be backported to stable kernels where f045f459d925 was
    backported.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Fixes: f045f459d925 ("drm/nouveau/fbcon: fix out-of-bounds memory accesses")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit bd0e924c93d0e655e05beae91a72c9e1df3f235a
Author: Richard Weinberger <richard@nod.at>
Date:   Thu Jun 23 19:30:38 2016 +0200

    ubi: Make volume resize power cut aware
    
    [ Upstream commit 4946784bd3924b1374f05eebff2fd68660bae866 ]
    
    When the volume resize operation shrinks a volume,
    LEBs will be unmapped. Since unmapping will not erase these
    LEBs immediately we have to wait for that operation to finish.
    Otherwise in case of a power cut right after writing the new
    volume table the UBI attach process can find more LEBs than the
    volume table knows. This will render the UBI image unattachable.
    
    Fix this issue by waiting for erase to complete and write the new
    volume table afterward.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit cdf25333b42fb889f086ef65d0734d0dbdc49f4e
Author: Iosif Harutyunov <iharutyunov@SonicWALL.com>
Date:   Fri Jul 22 23:22:42 2016 +0000

    ubi: Fix race condition between ubi device creation and udev
    
    [ Upstream commit 714fb87e8bc05ff78255afc0dca981e8c5242785 ]
    
    Install the UBI device object before we arm sysfs.
    Otherwise udev tries to read sysfs attributes before UBI is ready and
    udev rules will not match.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Iosif Harutyunov <iharutyunov@sonicwall.com>
    [rw: massaged commit message]
    Signed-off-by: Richard Weinberger <richard@nod.at>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6d1b8d7ad19d801a3e98f739fc6692598ece38a9
Author: Wei Fang <fangwei1@huawei.com>
Date:   Mon Jul 25 21:17:04 2016 +0800

    fuse: fix wrong assignment of ->flags in fuse_send_init()
    
    [ Upstream commit 9446385f05c9af25fed53dbed3cc75763730be52 ]
    
    FUSE_HAS_IOCTL_DIR should be assigned to ->flags, it may be a typo.
    
    Signed-off-by: Wei Fang <fangwei1@huawei.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 69fe05c90ed5 ("fuse: add missing INIT flags")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a8f8b0f516d4de7bcbf2e551a254ed73f2452c6d
Author: Maxim Patlasov <mpatlasov@virtuozzo.com>
Date:   Tue Jul 19 18:12:26 2016 -0700

    fuse: fuse_flush must check mapping->flags for errors
    
    [ Upstream commit 9ebce595f63a407c5cec98f98f9da8459b73740a ]
    
    fuse_flush() calls write_inode_now() that triggers writeback, but actual
    writeback will happen later, on fuse_sync_writes(). If an error happens,
    fuse_writepage_end() will set error bit in mapping->flags. So, we have to
    check mapping->flags after fuse_sync_writes().
    
    Signed-off-by: Maxim Patlasov <mpatlasov@virtuozzo.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 4d99ff8f12eb ("fuse: Turn writeback cache on")
    Cc: <stable@vger.kernel.org> # v3.15+
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 689c2a8941d452a3054868afa03497b64853e29b
Author: Alexey Kuznetsov <kuznet@parallels.com>
Date:   Tue Jul 19 12:48:01 2016 -0700

    fuse: fsync() did not return IO errors
    
    [ Upstream commit ac7f052b9e1534c8248f814b6f0068ad8d4a06d2 ]
    
    Due to implementation of fuse writeback filemap_write_and_wait_range() does
    not catch errors. We have to do this directly after fuse_sync_writes()
    
    Signed-off-by: Alexey Kuznetsov <kuznet@virtuozzo.com>
    Signed-off-by: Maxim Patlasov <mpatlasov@virtuozzo.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 4d99ff8f12eb ("fuse: Turn writeback cache on")
    Cc: <stable@vger.kernel.org> # v3.15+
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 77c6ffdbce68688492a31702f67c7dbc4eeedd62
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Thu Jul 28 11:35:50 2016 -0700

    ARC: mm: don't loose PTE_SPECIAL in pte_modify()
    
    [ Upstream commit 3925a16ae980c79d1a8fd182d7f9487da1edd4dc ]
    
    LTP madvise05 was generating mm splat
    
    | [ARCLinux]# /sd/ltp/testcases/bin/madvise05
    | BUG: Bad page map in process madvise05  pte:80e08211 pmd:9f7d4000
    | page:9fdcfc90 count:1 mapcount:-1 mapping:  (null) index:0x0 flags: 0x404(referenced|reserved)
    | page dumped because: bad pte
    | addr:200b8000 vm_flags:00000070 anon_vma:  (null) mapping:  (null) index:1005c
    | file:  (null) fault:  (null) mmap:  (null) readpage:  (null)
    | CPU: 2 PID: 6707 Comm: madvise05
    
    And for newer kernels, the system was rendered unusable afterwards.
    
    The problem was mprotect->pte_modify() clearing PTE_SPECIAL (which is
    set to identify the special zero page wired to the pte).
    When pte was finally unmapped, special casing for zero page was not
    done, and instead it was treated as a "normal" page, tripping on the
    map counts etc.
    
    This fixes ARC STAR 9001053308
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2d6adadf00191b2ba195ba6e8446fc35bc66a338
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Jul 27 15:28:56 2016 -0400

    drm/radeon: fix firmware info version checks
    
    [ Upstream commit 3edc38a0facef45ee22af8afdce3737f421f36ab ]
    
    Some of the checks didn't handle frev 2 tables properly.
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit be17cd2e834b8ba4f38490d34a092f4e48dc96d4
Author: David Howells <dhowells@redhat.com>
Date:   Wed Jul 27 11:43:37 2016 +0100

    KEYS: 64-bit MIPS needs to use compat_sys_keyctl for 32-bit userspace
    
    [ Upstream commit 20f06ed9f61a185c6dabd662c310bed6189470df ]
    
    MIPS64 needs to use compat_sys_keyctl for 32-bit userspace rather than
    calling sys_keyctl.  The latter will work in a lot of cases, thereby hiding
    the issue.
    
    Reported-by: Stephan Mueller <smueller@chronox.de>
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: stable@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-security-module@vger.kernel.org
    Cc: keyrings@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/13832/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8c0c7bb9248b8ba2ebce61fb52bc88c47ae0bc58
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Wed Jun 22 15:52:55 2016 +1000

    KVM: PPC: Book3S HV: Save/restore TM state in H_CEDE
    
    [ Upstream commit 93d17397e4e2182fdaad503e2f9da46202c0f1c3 ]
    
    It turns out that if the guest does a H_CEDE while the CPU is in
    a transactional state, and the H_CEDE does a nap, and the nap
    loses the architected state of the CPU (which is is allowed to do),
    then we lose the checkpointed state of the virtual CPU.  In addition,
    the transactional-memory state recorded in the MSR gets reset back
    to non-transactional, and when we try to return to the guest, we take
    a TM bad thing type of program interrupt because we are trying to
    transition from non-transactional to transactional with a hrfid
    instruction, which is not permitted.
    
    The result of the program interrupt occurring at that point is that
    the host CPU will hang in an infinite loop with interrupts disabled.
    Thus this is a denial of service vulnerability in the host which can
    be triggered by any guest (and depending on the guest kernel, it can
    potentially triggered by unprivileged userspace in the guest).
    
    This vulnerability has been assigned the ID CVE-2016-5412.
    
    To fix this, we save the TM state before napping and restore it
    on exit from the nap, when handling a H_CEDE in real mode.  The
    case where H_CEDE exits to host virtual mode is already OK (as are
    other hcalls which exit to host virtual mode) because the exit
    path saves the TM state.
    
    Cc: stable@vger.kernel.org # v3.15+
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 15b4c06d13983dcfcbf34f3c2c7de269c8258656
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Wed Jun 22 14:21:59 2016 +1000

    KVM: PPC: Book3S HV: Pull out TM state save/restore into separate procedures
    
    [ Upstream commit f024ee098476a3e620232e4a78cfac505f121245 ]
    
    This moves the transactional memory state save and restore sequences
    out of the guest entry/exit paths into separate procedures.  This is
    so that these sequences can be used in going into and out of nap
    in a subsequent patch.
    
    The only code changes here are (a) saving and restore LR on the
    stack, since these new procedures get called with a bl instruction,
    (b) explicitly saving r1 into the PACA instead of assuming that
    HSTATE_HOST_R1(r13) is already set, and (c) removing an unnecessary
    and redundant setting of MSR[TM] that should have been removed by
    commit 9d4d0bdd9e0a ("KVM: PPC: Book3S HV: Add transactional memory
    support", 2013-09-24) but wasn't.
    
    Cc: stable@vger.kernel.org # v3.15+
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1eaac1744e078ea0218f9840e0a259f97fca7ea6
Author: Pavel Shilovsky <pshilovsky@samba.org>
Date:   Sun Jul 24 10:37:38 2016 +0300

    CIFS: Fix a possible invalid memory access in smb2_query_symlink()
    
    [ Upstream commit 7893242e2465aea6f2cbc2639da8fa5ce96e8cc2 ]
    
    During following a symbolic link we received err_buf from SMB2_open().
    While the validity of SMB2 error response is checked previously
    in smb2_check_message() a symbolic link payload is not checked at all.
    Fix it by adding such checks.
    
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilovsky@samba.org>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a10e07c73180c1d02b8899625e401b107a7c2cc5
Author: Aurelien Aptel <aaptel@suse.com>
Date:   Wed May 25 19:59:09 2016 +0200

    fs/cifs: make share unaccessible at root level mountable
    
    [ Upstream commit a6b5058fafdf508904bbf16c29b24042cef3c496 ]
    
    if, when mounting //HOST/share/sub/dir/foo we can query /sub/dir/foo but
    not any of the path components above:
    
    - store the /sub/dir/foo prefix in the cifs super_block info
    - in the superblock, set root dentry to the subpath dentry (instead of
      the share root)
    - set a flag in the superblock to remember it
    - use prefixpath when building path from a dentry
    
    fixes bso#8950
    
    Signed-off-by: Aurelien Aptel <aaptel@suse.com>
    CC: Stable <stable@vger.kernel.org>
    Reviewed-by: Pavel Shilovsky <pshilovsky@samba.org>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2bad2554bf2cd290faed8650d08da0fcabfcb7b5
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Mon Jul 25 11:36:54 2016 -0700

    Input: i8042 - break load dependency between atkbd/psmouse and i8042
    
    [ Upstream commit 4097461897df91041382ff6fcd2bfa7ee6b2448c ]
    
    As explained in 1407814240-4275-1-git-send-email-decui@microsoft.com we
    have a hard load dependency between i8042 and atkbd which prevents
    keyboard from working on Gen2 Hyper-V VMs.
    
    > hyperv_keyboard invokes serio_interrupt(), which needs a valid serio
    > driver like atkbd.c.  atkbd.c depends on libps2.c because it invokes
    > ps2_command().  libps2.c depends on i8042.c because it invokes
    > i8042_check_port_owner().  As a result, hyperv_keyboard actually
    > depends on i8042.c.
    >
    > For a Generation 2 Hyper-V VM (meaning no i8042 device emulated), if a
    > Linux VM (like Arch Linux) happens to configure CONFIG_SERIO_I8042=m
    > rather than =y, atkbd.ko can't load because i8042.ko can't load(due to
    > no i8042 device emulated) and finally hyperv_keyboard can't work and
    > the user can't input: https://bugs.archlinux.org/task/39820
    > (Ubuntu/RHEL/SUSE aren't affected since they use CONFIG_SERIO_I8042=y)
    
    To break the dependency we move away from using i8042_check_port_owner()
    and instead allow serio port owner specify a mutex that clients should use
    to serialize PS/2 command stream.
    
    Reported-by: Mark Laws <mdl@60hz.org>
    Tested-by: Mark Laws <mdl@60hz.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5a7dd70c6bd89f9b17065893aa931a5fc8dbe32c
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu Apr 28 09:24:05 2016 +0930

    Documentation/module-signing.txt: Note need for version info if reusing a key
    
    [ Upstream commit b8612e517c3c9809e1200b72c474dbfd969e5a83 ]
    
    Signing a module should only make it trusted by the specific kernel it
    was built for, not anything else.  If a module signing key is used for
    multiple ABI-incompatible kernels, the modules need to include enough
    version information to distinguish them.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Cc: stable@vger.kernel.org
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1d307756e9b9b25c1cc0f54cb061794393b0aea6
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu Apr 28 09:24:01 2016 +0930

    module: Invalidate signatures on force-loaded modules
    
    [ Upstream commit bca014caaa6130e57f69b5bf527967aa8ee70fdd ]
    
    Signing a module should only make it trusted by the specific kernel it
    was built for, not anything else.  Loading a signed module meant for a
    kernel with a different ABI could have interesting effects.
    Therefore, treat all signatures as invalid when a module is
    force-loaded.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Cc: stable@vger.kernel.org
    Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 29d011ab2d19c604dc31ef4dc3c3d27d9677aacc
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Sat Jul 23 07:43:50 2016 +0200

    net/irda: fix NULL pointer dereference on memory allocation failure
    
    [ Upstream commit d3e6952cfb7ba5f4bfa29d4803ba91f96ce1204d ]
    
    I ran into this:
    
        kasan: CONFIG_KASAN_INLINE enabled
        kasan: GPF could be caused by NULL-ptr deref or user memory access
        general protection fault: 0000 [#1] PREEMPT SMP KASAN
        CPU: 2 PID: 2012 Comm: trinity-c3 Not tainted 4.7.0-rc7+ #19
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
        task: ffff8800b745f2c0 ti: ffff880111740000 task.ti: ffff880111740000
        RIP: 0010:[<ffffffff82bbf066>]  [<ffffffff82bbf066>] irttp_connect_request+0x36/0x710
        RSP: 0018:ffff880111747bb8  EFLAGS: 00010286
        RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000069dd8358
        RDX: 0000000000000009 RSI: 0000000000000027 RDI: 0000000000000048
        RBP: ffff880111747c00 R08: 0000000000000000 R09: 0000000000000000
        R10: 0000000069dd8358 R11: 1ffffffff0759723 R12: 0000000000000000
        R13: ffff88011a7e4780 R14: 0000000000000027 R15: 0000000000000000
        FS:  00007fc738404700(0000) GS:ffff88011af00000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 00007fc737fdfb10 CR3: 0000000118087000 CR4: 00000000000006e0
        Stack:
         0000000000000200 ffff880111747bd8 ffffffff810ee611 ffff880119f1f220
         ffff880119f1f4f8 ffff880119f1f4f0 ffff88011a7e4780 ffff880119f1f232
         ffff880119f1f220 ffff880111747d58 ffffffff82bca542 0000000000000000
        Call Trace:
         [<ffffffff82bca542>] irda_connect+0x562/0x1190
         [<ffffffff825ae582>] SYSC_connect+0x202/0x2a0
         [<ffffffff825b4489>] SyS_connect+0x9/0x10
         [<ffffffff8100334c>] do_syscall_64+0x19c/0x410
         [<ffffffff83295ca5>] entry_SYSCALL64_slow_path+0x25/0x25
        Code: 41 89 ca 48 89 e5 41 57 41 56 41 55 41 54 41 89 d7 53 48 89 fb 48 83 c7 48 48 89 fa 41 89 f6 48 c1 ea 03 48 83 ec 20 4c 8b 65 10 <0f> b6 04 02 84 c0 74 08 84 c0 0f 8e 4c 04 00 00 80 7b 48 00 74
        RIP  [<ffffffff82bbf066>] irttp_connect_request+0x36/0x710
         RSP <ffff880111747bb8>
        ---[ end trace 4cda2588bc055b30 ]---
    
    The problem is that irda_open_tsap() can fail and leave self->tsap = NULL,
    and then irttp_connect_request() almost immediately dereferences it.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5c0a3ca7c0c56c3bb075154d7921c46c291f4180
Author: Wei Fang <fangwei1@huawei.com>
Date:   Wed Jul 6 11:32:20 2016 +0800

    fs/dcache.c: avoid soft-lockup in dput()
    
    [ Upstream commit 47be61845c775643f1aa4d2a54343549f943c94c ]
    
    We triggered soft-lockup under stress test which
    open/access/write/close one file concurrently on more than
    five different CPUs:
    
    WARN: soft lockup - CPU#0 stuck for 11s! [who:30631]
    ...
    [<ffffffc0003986f8>] dput+0x100/0x298
    [<ffffffc00038c2dc>] terminate_walk+0x4c/0x60
    [<ffffffc00038f56c>] path_lookupat+0x5cc/0x7a8
    [<ffffffc00038f780>] filename_lookup+0x38/0xf0
    [<ffffffc000391180>] user_path_at_empty+0x78/0xd0
    [<ffffffc0003911f4>] user_path_at+0x1c/0x28
    [<ffffffc00037d4fc>] SyS_faccessat+0xb4/0x230
    
    ->d_lock trylock may failed many times because of concurrently
    operations, and dput() may execute a long time.
    
    Fix this by replacing cpu_relax() with cond_resched().
    dput() used to be sleepable, so make it sleepable again
    should be safe.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Wei Fang <fangwei1@huawei.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit ead2cea23e7a9915c8023fd7cb9ba862da7ca86a
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Jan 9 15:19:03 2015 -0800

    dcache: let the dentry count go down to zero without taking d_lock
    
    [ Upstream commit 360f54796ed65939093ae373b92ebd5ef3341776 ]
    
    We can be more aggressive about this, if we are clever and careful. This is subtle.
    
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit cf4f30b2501fc90f23a935422af07bdddc155678
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Mon Jul 18 10:41:57 2016 -0400

    nfs: don't create zero-length requests
    
    [ Upstream commit 149a4fddd0a72d526abbeac0c8deaab03559836a ]
    
    NFS doesn't expect requests with wb_bytes set to zero and may make
    unexpected decisions about how to handle that request at the page IO layer.
    Skip request creation if we won't have any wb_bytes in the request.
    
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    Reviewed-by: Weston Andros Adamson <dros@primarydata.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f9fef43a3266d385fabe8f63e6eabf54e3ea6bcc
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Jul 6 12:50:12 2016 +0300

    gpio: intel-mid: Remove potentially harmful code
    
    [ Upstream commit 3dbd3212f81b2b410a34a922055e2da792864829 ]
    
    The commit d56d6b3d7d69 ("gpio: langwell: add Intel Merrifield support")
    doesn't look at all as a proper support for Intel Merrifield and I dare to say
    that it distorts the behaviour of the hardware.
    
    The register map is different on Intel Merrifield, i.e. only 6 out of 8
    register have the same purpose but none of them has same location in the
    address space. The current case potentially harmful to existing hardware since
    it's poking registers on wrong offsets and may set some pin to be GPIO output
    when connected hardware doesn't expect such.
    
    Besides the above GPIO and pinctrl on Intel Merrifield have been located in
    different IP blocks. The functionality has been extended as well, i.e. added
    support of level interrupts, special registers for wake capable sources and
    thus, in my opinion, requires a completele separate driver.
    
    If someone wondering the existing gpio-intel-mid.c would be converted to actual
    pinctrl (which by the fact it is now), though I wouldn't be a volunteer to do
    that.
    
    Fixes: d56d6b3d7d69 ("gpio: langwell: add Intel Merrifield support")
    Cc: stable@vger.kernel.org # v3.13+
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7b37bc27c5c15495e601569bbe22e90744b13467
Author: Feng Li <lifeng1519@gmail.com>
Date:   Tue Jul 12 06:15:44 2016 +0800

    iscsi-target: Fix panic when adding second TCP connection to iSCSI session
    
    [ Upstream commit 8abc718de6e9e52d8a6bfdb735060554aeae25e4 ]
    
    In MC/S scenario, the conn->sess has been set NULL in
    iscsi_login_non_zero_tsih_s1 when the second connection comes here,
    then kernel panic.
    
    The conn->sess will be assigned in iscsi_login_non_zero_tsih_s2. So
    we should check whether it's NULL before calling.
    
    Signed-off-by: Feng Li <lifeng1519@gmail.com>
    Tested-by: Sumit Rai <sumit.rai@calsoftinc.com>
    Cc: stable@vger.kernel.org # 3.14+
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 3f4976f0e610b010e9e69ff294212ce6b7fc7ca5
Author: Paul Moore <paul@paul-moore.com>
Date:   Tue Jul 19 17:42:57 2016 -0400

    audit: fix a double fetch in audit_log_single_execve_arg()
    
    [ Upstream commit 43761473c254b45883a64441dd0bc85a42f3645c ]
    
    There is a double fetch problem in audit_log_single_execve_arg()
    where we first check the execve(2) argumnets for any "bad" characters
    which would require hex encoding and then re-fetch the arguments for
    logging in the audit record[1].  Of course this leaves a window of
    opportunity for an unsavory application to munge with the data.
    
    This patch reworks things by only fetching the argument data once[2]
    into a buffer where it is scanned and logged into the audit
    records(s).  In addition to fixing the double fetch, this patch
    improves on the original code in a few other ways: better handling
    of large arguments which require encoding, stricter record length
    checking, and some performance improvements (completely unverified,
    but we got rid of some strlen() calls, that's got to be a good
    thing).
    
    As part of the development of this patch, I've also created a basic
    regression test for the audit-testsuite, the test can be tracked on
    GitHub at the following link:
    
     * https://github.com/linux-audit/audit-testsuite/issues/25
    
    [1] If you pay careful attention, there is actually a triple fetch
    problem due to a strnlen_user() call at the top of the function.
    
    [2] This is a tiny white lie, we do make a call to strnlen_user()
    prior to fetching the argument data.  I don't like it, but due to the
    way the audit record is structured we really have no choice unless we
    copy the entire argument at once (which would require a rather
    wasteful allocation).  The good news is that with this patch the
    kernel no longer relies on this strnlen_user() value for anything
    beyond recording it in the log, we also update it with a trustworthy
    value whenever possible.
    
    Reported-by: Pengfei Wang <wpengfeinudt@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a59a2f6bd81b18232b0f51bde12629f182c4de9d
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Jul 8 09:33:38 2015 -0700

    Fix broken audit tests for exec arg len
    
    [ Upstream commit 45820c294fe1b1a9df495d57f40585ef2d069a39 ]
    
    The "fix" in commit 0b08c5e5944 ("audit: Fix check of return value of
    strnlen_user()") didn't fix anything, it broke things.  As reported by
    Steven Rostedt:
    
     "Yes, strnlen_user() returns 0 on fault, but if you look at what len is
      set to, than you would notice that on fault len would be -1"
    
    because we just subtracted one from the return value.  So testing
    against 0 doesn't test for a fault condition, it tests against a
    perfectly valid empty string.
    
    Also fix up the usual braindamage wrt using WARN_ON() inside a
    conditional - make it part of the conditional and remove the explicit
    unlikely() (which is already part of the WARN_ON*() logic, exactly so
    that you don't have to write unreadable code.
    
    Reported-and-tested-by: Steven Rostedt <rostedt@goodmis.org>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Paul Moore <pmoore@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c786cc5ea29cca704eed6af508d32c9e0d498b77
Author: Jan Kara <jack@suse.cz>
Date:   Tue Jun 2 17:08:29 2015 +0200

    audit: Fix check of return value of strnlen_user()
    
    [ Upstream commit 0b08c5e59441d08ab4b5e72afefd5cd98a4d83df ]
    
    strnlen_user() returns 0 when it hits fault, not -1. Fix the test in
    audit_log_single_execve_arg(). Luckily this shouldn't ever happen unless
    there's a kernel bug so it's mostly a cosmetic fix.
    
    CC: Paul Moore <pmoore@redhat.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Paul Moore <pmoore@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit eeeec2883cd91c6ad44c41c80ac70f028e97997b
Author: Rabin Vincent <rabinv@axis.com>
Date:   Tue Jul 19 09:26:21 2016 +0200

    cifs: fix crash due to race in hmac(md5) handling
    
    [ Upstream commit bd975d1eead2558b76e1079e861eacf1f678b73b ]
    
    The secmech hmac(md5) structures are present in the TCP_Server_Info
    struct and can be shared among multiple CIFS sessions.  However, the
    server mutex is not currently held when these structures are allocated
    and used, which can lead to a kernel crashes, as in the scenario below:
    
    mount.cifs(8) #1                                mount.cifs(8) #2
    
    Is secmech.sdeschmaccmd5 allocated?
    // false
    
                                                    Is secmech.sdeschmaccmd5 allocated?
                                                    // false
    
    secmech.hmacmd = crypto_alloc_shash..
    secmech.sdeschmaccmd5 = kzalloc..
    sdeschmaccmd5->shash.tfm = &secmec.hmacmd;
    
                                                    secmech.sdeschmaccmd5 = kzalloc
                                                    // sdeschmaccmd5->shash.tfm
                                                    // not yet assigned
    
    crypto_shash_update()
     deref NULL sdeschmaccmd5->shash.tfm
    
     Unable to handle kernel paging request at virtual address 00000030
     epc   : 8027ba34 crypto_shash_update+0x38/0x158
     ra    : 8020f2e8 setup_ntlmv2_rsp+0x4bc/0xa84
     Call Trace:
      crypto_shash_update+0x38/0x158
      setup_ntlmv2_rsp+0x4bc/0xa84
      build_ntlmssp_auth_blob+0xbc/0x34c
      sess_auth_rawntlmssp_authenticate+0xac/0x248
      CIFS_SessSetup+0xf0/0x178
      cifs_setup_session+0x4c/0x84
      cifs_get_smb_ses+0x2c8/0x314
      cifs_mount+0x38c/0x76c
      cifs_do_mount+0x98/0x440
      mount_fs+0x20/0xc0
      vfs_kern_mount+0x58/0x138
      do_mount+0x1e8/0xccc
      SyS_mount+0x88/0xd4
      syscall_common+0x30/0x54
    
    Fix this by locking the srv_mutex around the code which uses these
    hmac(md5) structures.  All the other secmech algos already have similar
    locking.
    
    Fixes: 95dc8dd14e2e84cc ("Limit allocation of crypto mechanisms to dialect which requires")
    Signed-off-by: Rabin Vincent <rabinv@axis.com>
    Acked-by: Sachin Prabhu <sprabhu@redhat.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit cb0a0062e3128d81b1d19b10f86b51f63e635e73
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Thu Jun 2 14:56:45 2016 -0700

    target: Fix race between iscsi-target connection shutdown + ABORT_TASK
    
    [ Upstream commit 064cdd2d91c2805d788876082f31cc63506f22c3 ]
    
    This patch fixes a race in iscsit_release_commands_from_conn() ->
    iscsit_free_cmd() -> transport_generic_free_cmd() + wait_for_tasks=1,
    where CMD_T_FABRIC_STOP could end up being set after the final
    kref_put() is called from core_tmr_abort_task() context.
    
    This results in transport_generic_free_cmd() blocking indefinately
    on se_cmd->cmd_wait_comp, because the target_release_cmd_kref()
    check for CMD_T_FABRIC_STOP returns false.
    
    To address this bug, make iscsit_release_commands_from_conn()
    do list_splice and set CMD_T_FABRIC_STOP early while holding
    iscsi_conn->cmd_lock.  Also make iscsit_aborted_task() only
    remove iscsi_cmd_t if CMD_T_FABRIC_STOP has not already been
    set.
    
    Finally in target_release_cmd_kref(), only honor fabric_stop
    if CMD_T_ABORTED has been set.
    
    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Quinn Tran <quinn.tran@qlogic.com>
    Cc: Himanshu Madhani <himanshu.madhani@qlogic.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: stable@vger.kernel.org # 3.14+
    Tested-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b4a8ca6b17a7994dedb0d9eb07e9bf85dacd6f7e
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Wed May 25 12:25:04 2016 -0700

    target: Fix missing complete during ABORT_TASK + CMD_T_FABRIC_STOP
    
    [ Upstream commit 5e2c956b8aa24d4f33ff7afef92d409eed164746 ]
    
    During transport_generic_free_cmd() with a concurrent TMR
    ABORT_TASK and shutdown CMD_T_FABRIC_STOP bit set, the
    caller will be blocked on se_cmd->cmd_wait_stop completion
    until the final kref_put() -> target_release_cmd_kref()
    has been invoked to call complete().
    
    However, when ABORT_TASK is completed with FUNCTION_COMPLETE
    in core_tmr_abort_task(), the aborted se_cmd will have already
    been removed from se_sess->sess_cmd_list via list_del_init().
    
    This results in target_release_cmd_kref() hitting the
    legacy list_empty() == true check, invoking ->release_cmd()
    but skipping complete() to wakeup se_cmd->cmd_wait_stop
    blocked earlier in transport_generic_free_cmd() code.
    
    To address this bug, it's safe to go ahead and drop the
    original list_empty() check so that fabric_stop invokes
    the complete() as expected, since list_del_init() can
    safely be used on a empty list.
    
    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Quinn Tran <quinn.tran@qlogic.com>
    Cc: Himanshu Madhani <himanshu.madhani@qlogic.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: stable@vger.kernel.org # 3.14+
    Tested-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit bdcbb05998d007026c48b0b5cb77733bf6e20c3d
Author: Hector Palacios <hector.palacios@digi.com>
Date:   Mon Jul 18 10:39:18 2016 +0200

    mtd: nand: fix bug writing 1 byte less than page size
    
    [ Upstream commit 144f4c98399e2c0ca60eb414c15a2c68125c18b8 ]
    
    nand_do_write_ops() determines if it is writing a partial page with the
    formula:
            part_pagewr = (column || writelen < (mtd->writesize - 1))
    
    When 'writelen' is exactly 1 byte less than the NAND page size the formula
    equates to zero, so the code doesn't process it as a partial write,
    although it should.
    As a consequence the function remains in the while(1) loop with 'writelen'
    becoming 0xffffffff and iterating endlessly.
    
    The bug may not be easy to reproduce in Linux since user space tools
    usually force the padding or round-up the write size to a page-size
    multiple.
    This was discovered in U-Boot where the issue can be reproduced by
    writing any size that is 1 byte less than a page-size multiple.
    For example, on a NAND with 2K page (0x800):
            => nand erase.part <partition>
            => nand write $loadaddr <partition> 7ff
    
    [Editor's note: the bug was added in commit 29072b96078f, but moved
    around in commit 66507c7bc8895 ("mtd: nand: Add support to use nand_base
    poi databuf as bounce buffer")]
    
    Fixes: 29072b96078f ("[MTD] NAND: add subpage write support")
    Signed-off-by: Hector Palacios <hector.palacios@digi.com>
    Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8317c7f73909d4afa9e610d5dda5549b11fb3e16
Author: Will Deacon <will.deacon@arm.com>
Date:   Tue Jul 19 15:07:37 2016 +0100

    arm64: debug: unmask PSTATE.D earlier
    
    [ Upstream commit 2ce39ad15182604beb6c8fa8bed5e46b59fd1082 ]
    
    Clearing PSTATE.D is one of the requirements for generating a debug
    exception. The arm64 booting protocol requires that PSTATE.D is set,
    since many of the debug registers (for example, the hw_breakpoint
    registers) are UNKNOWN out of reset and could potentially generate
    spurious, fatal debug exceptions in early boot code if PSTATE.D was
    clear. Once the debug registers have been safely initialised, PSTATE.D
    is cleared, however this is currently broken for two reasons:
    
    (1) The boot CPU clears PSTATE.D in a postcore_initcall and secondary
        CPUs clear PSTATE.D in secondary_start_kernel. Since the initcall
        runs after SMP (and the scheduler) have been initialised, there is
        no guarantee that it is actually running on the boot CPU. In this
        case, the boot CPU is left with PSTATE.D set and is not capable of
        generating debug exceptions.
    
    (2) In a preemptible kernel, we may explicitly schedule on the IRQ
        return path to EL1. If an IRQ occurs with PSTATE.D set in the idle
        thread, then we may schedule the kthread_init thread, run the
        postcore_initcall to clear PSTATE.D and then context switch back
        to the idle thread before returning from the IRQ. The exception
        return path will then restore PSTATE.D from the stack, and set it
        again.
    
    This patch fixes the problem by moving the clearing of PSTATE.D earlier
    to proc.S. This has the desirable effect of clearing it in one place for
    all CPUs, long before we have to worry about the scheduler or any
    exception handling. We ensure that the previous reset of MDSCR_EL1 has
    completed before unmasking the exception, so that any spurious
    exceptions resulting from UNKNOWN debug registers are not generated.
    
    Without this patch applied, the kprobes selftests have been seen to fail
    under KVM, where we end up attempting to step the OOL instruction buffer
    with PSTATE.D set and therefore fail to complete the step.
    
    Cc: <stable@vger.kernel.org>
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Reported-by: Catalin Marinas <catalin.marinas@arm.com>
    Tested-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Tested-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 57eed939b9b93fab2533a27659c723d6e691e684
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Tue Jul 12 13:17:57 2016 +0800

    crypto: scatterwalk - Fix test in scatterwalk_done
    
    [ Upstream commit 5f070e81bee35f1b7bd1477bb223a873ff657803 ]
    
    When there is more data to be processed, the current test in
    scatterwalk_done may prevent us from calling pagedone even when
    we should.
    
    In particular, if we're on an SG entry spanning multiple pages
    where the last page is not a full page, we will incorrectly skip
    calling pagedone on the second last page.
    
    This patch fixes this by adding a separate test for whether we've
    reached the end of a page.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6da472870a3d94d107a4e5af4164c422b3afac19
Author: Amadeusz Sławiński <amadeusz.slawinski@tieto.com>
Date:   Thu Jul 14 10:50:23 2016 +0200

    Bluetooth: Fix l2cap_sock_setsockopt() with optname BT_RCVMTU
    
    [ Upstream commit 23bc6ab0a0912146fd674a0becc758c3162baabc ]
    
    When we retrieve imtu value from userspace we should use 16 bit pointer
    cast instead of 32 as it's defined that way in headers. Fixes setsockopt
    calls on big-endian platforms.
    
    Signed-off-by: Amadeusz Sławiński <amadeusz.slawinski@tieto.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b94d5a7f7813392d534256c023c83717721ef58d
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Mon Jun 6 12:38:17 2016 +0200

    USB: serial: option: add support for Telit LE910 PID 0x1206
    
    [ Upstream commit 3c0415fa08548e3bc63ef741762664497ab187ed ]
    
    This patch adds support for 0x1206 PID of Telit LE910.
    
    Since the interfaces positions are the same than the ones for
    0x1043 PID of Telit LE922, telit_le922_blacklist_usbcfg3 is used.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b21850812f89803b1761690f4ea7486b2481cfca
Author: Michael Neuling <mikey@neuling.org>
Date:   Wed Jul 6 14:58:06 2016 +1000

    powerpc/tm: Fix stack pointer corruption in __tm_recheckpoint()
    
    [ Upstream commit 6bcb80143e792becfd2b9cc6a339ce523e4e2219 ]
    
    At the start of __tm_recheckpoint() we save the kernel stack pointer
    (r1) in SPRG SCRATCH0 (SPRG2) so that we can restore it after the
    trecheckpoint.
    
    Unfortunately, the same SPRG is used in the SLB miss handler.  If an
    SLB miss is taken between the save and restore of r1 to the SPRG, the
    SPRG is changed and hence r1 is also corrupted.  We can end up with
    the following crash when we start using r1 again after the restore
    from the SPRG:
    
      Oops: Bad kernel stack pointer, sig: 6 [#1]
      SMP NR_CPUS=2048 NUMA pSeries
      CPU: 658 PID: 143777 Comm: htm_demo Tainted: G            EL   X 4.4.13-0-default #1
      task: c0000b56993a7810 ti: c00000000cfec000 task.ti: c0000b56993bc000
      NIP: c00000000004f188 LR: 00000000100040b8 CTR: 0000000010002570
      REGS: c00000000cfefd40 TRAP: 0300   Tainted: G            EL   X  (4.4.13-0-default)
      MSR: 8000000300001033 <SF,ME,IR,DR,RI,LE>  CR: 02000424  XER: 20000000
      CFAR: c000000000008468 DAR: 00003ffd84e66880 DSISR: 40000000 SOFTE: 0
      PACATMSCRATCH: 00003ffbc865e680
      GPR00: fffffffcfabc4268 00003ffd84e667a0 00000000100d8c38 000000030544bb80
      GPR04: 0000000000000002 00000000100cf200 0000000000000449 00000000100cf100
      GPR08: 000000000000c350 0000000000002569 0000000000002569 00000000100d6c30
      GPR12: 00000000100d6c28 c00000000e6a6b00 00003ffd84660000 0000000000000000
      GPR16: 0000000000000003 0000000000000449 0000000010002570 0000010009684f20
      GPR20: 0000000000800000 00003ffd84e5f110 00003ffd84e5f7a0 00000000100d0f40
      GPR24: 0000000000000000 0000000000000000 0000000000000000 00003ffff0673f50
      GPR28: 00003ffd84e5e960 00000000003d0f00 00003ffd84e667a0 00003ffd84e5e680
      NIP [c00000000004f188] restore_gprs+0x110/0x17c
      LR [00000000100040b8] 0x100040b8
      Call Trace:
      Instruction dump:
      f8a1fff0 e8e700a8 38a00000 7ca10164 e8a1fff8 e821fff0 7c0007dd 7c421378
      7db142a6 7c3242a6 38800002 7c810164 <e9c100e0> e9e100e8 ea0100f0 ea2100f8
    
    We hit this on large memory machines (> 2TB) but it can also be hit on
    smaller machines when 1TB segments are disabled.
    
    To hit this, you also need to be virtualised to ensure SLBs are
    periodically removed by the hypervisor.
    
    This patches moves the saving of r1 to the SPRG to the region where we
    are guaranteed not to take any further SLB misses.
    
    Fixes: 98ae22e15b43 ("powerpc: Add helper functions for transactional memory context switching")
    Cc: stable@vger.kernel.org # v3.9+
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Acked-by: Cyril Bur <cyrilbur@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9f4c899e01b9179834c1ff7815fce61922c3fca4
Author: Michael Neuling <mikey@neuling.org>
Date:   Tue Jun 28 13:01:04 2016 +1000

    powerpc/tm: Avoid SLB faults in treclaim/trecheckpoint when RI=0
    
    [ Upstream commit 190ce8693c23eae09ba5f303a83bf2fbeb6478b1 ]
    
    Currently we have 2 segments that are bolted for the kernel linear
    mapping (ie 0xc000... addresses). This is 0 to 1TB and also the kernel
    stacks. Anything accessed outside of these regions may need to be
    faulted in. (In practice machines with TM always have 1T segments)
    
    If a machine has < 2TB of memory we never fault on the kernel linear
    mapping as these two segments cover all physical memory. If a machine
    has > 2TB of memory, there may be structures outside of these two
    segments that need to be faulted in. This faulting can occur when
    running as a guest as the hypervisor may remove any SLB that's not
    bolted.
    
    When we treclaim and trecheckpoint we have a window where we need to
    run with the userspace GPRs. This means that we no longer have a valid
    stack pointer in r1. For this window we therefore clear MSR RI to
    indicate that any exceptions taken at this point won't be able to be
    handled. This means that we can't take segment misses in this RI=0
    window.
    
    In this RI=0 region, we currently access the thread_struct for the
    process being context switched to or from. This thread_struct access
    may cause a segment fault since it's not guaranteed to be covered by
    the two bolted segment entries described above.
    
    We've seen this with a crash when running as a guest with > 2TB of
    memory on PowerVM:
    
      Unrecoverable exception 4100 at c00000000004f138
      Oops: Unrecoverable exception, sig: 6 [#1]
      SMP NR_CPUS=2048 NUMA pSeries
      CPU: 1280 PID: 7755 Comm: kworker/1280:1 Tainted: G                 X 4.4.13-46-default #1
      task: c000189001df4210 ti: c000189001d5c000 task.ti: c000189001d5c000
      NIP: c00000000004f138 LR: 0000000010003a24 CTR: 0000000010001b20
      REGS: c000189001d5f730 TRAP: 4100   Tainted: G                 X  (4.4.13-46-default)
      MSR: 8000000100001031 <SF,ME,IR,DR,LE>  CR: 24000048  XER: 00000000
      CFAR: c00000000004ed18 SOFTE: 0
      GPR00: ffffffffc58d7b60 c000189001d5f9b0 00000000100d7d00 000000003a738288
      GPR04: 0000000000002781 0000000000000006 0000000000000000 c0000d1f4d889620
      GPR08: 000000000000c350 00000000000008ab 00000000000008ab 00000000100d7af0
      GPR12: 00000000100d7ae8 00003ffe787e67a0 0000000000000000 0000000000000211
      GPR16: 0000000010001b20 0000000000000000 0000000000800000 00003ffe787df110
      GPR20: 0000000000000001 00000000100d1e10 0000000000000000 00003ffe787df050
      GPR24: 0000000000000003 0000000000010000 0000000000000000 00003fffe79e2e30
      GPR28: 00003fffe79e2e68 00000000003d0f00 00003ffe787e67a0 00003ffe787de680
      NIP [c00000000004f138] restore_gprs+0xd0/0x16c
      LR [0000000010003a24] 0x10003a24
      Call Trace:
      [c000189001d5f9b0] [c000189001d5f9f0] 0xc000189001d5f9f0 (unreliable)
      [c000189001d5fb90] [c00000000001583c] tm_recheckpoint+0x6c/0xa0
      [c000189001d5fbd0] [c000000000015c40] __switch_to+0x2c0/0x350
      [c000189001d5fc30] [c0000000007e647c] __schedule+0x32c/0x9c0
      [c000189001d5fcb0] [c0000000007e6b58] schedule+0x48/0xc0
      [c000189001d5fce0] [c0000000000deabc] worker_thread+0x22c/0x5b0
      [c000189001d5fd80] [c0000000000e7000] kthread+0x110/0x130
      [c000189001d5fe30] [c000000000009538] ret_from_kernel_thread+0x5c/0xa4
      Instruction dump:
      7cb103a6 7cc0e3a6 7ca222a6 78a58402 38c00800 7cc62838 08860000 7cc000a6
      38a00006 78c60022 7cc62838 0b060000 <e8c701a0> 7ccff120 e8270078 e8a70098
      ---[ end trace 602126d0a1dedd54 ]---
    
    This fixes this by copying the required data from the thread_struct to
    the stack before we clear MSR RI. Then once we clear RI, we only access
    the stack, guaranteeing there's no segment miss.
    
    We also tighten the region over which we set RI=0 on the treclaim()
    path. This may have a slight performance impact since we're adding an
    mtmsr instruction.
    
    Fixes: 090b9284d725 ("powerpc/tm: Clear MSR RI in non-recoverable TM code")
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Reviewed-by: Cyril Bur <cyrilbur@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 69759a98f3e21c899f8b80ce93ec0914f8911b5d
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Thu Jul 14 23:21:35 2016 -0400

    ext4: short-cut orphan cleanup on error
    
    [ Upstream commit c65d5c6c81a1f27dec5f627f67840726fcd146de ]
    
    If we encounter a filesystem error during orphan cleanup, we should stop.
    Otherwise, we may end up in an infinite loop where the same inode is
    processed again and again.
    
        EXT4-fs (loop0): warning: checktime reached, running e2fsck is recommended
        EXT4-fs error (device loop0): ext4_mb_generate_buddy:758: group 2, block bitmap and bg descriptor inconsistent: 6117 vs 0 free clusters
        Aborting journal on device loop0-8.
        EXT4-fs (loop0): Remounting filesystem read-only
        EXT4-fs error (device loop0) in ext4_free_blocks:4895: Journal has aborted
        EXT4-fs error (device loop0) in ext4_do_update_inode:4893: Journal has aborted
        EXT4-fs error (device loop0) in ext4_do_update_inode:4893: Journal has aborted
        EXT4-fs error (device loop0) in ext4_ext_remove_space:3068: IO failure
        EXT4-fs error (device loop0) in ext4_ext_truncate:4667: Journal has aborted
        EXT4-fs error (device loop0) in ext4_orphan_del:2927: Journal has aborted
        EXT4-fs error (device loop0) in ext4_do_update_inode:4893: Journal has aborted
        EXT4-fs (loop0): Inode 16 (00000000618192a0): orphan list check failed!
        [...]
        EXT4-fs (loop0): Inode 16 (0000000061819748): orphan list check failed!
        [...]
        EXT4-fs (loop0): Inode 16 (0000000061819bf0): orphan list check failed!
        [...]
    
    See-also: c9eb13a9105 ("ext4: fix hang when processing corrupted orphaned inode list")
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit dc31456f18be3ad3e7997abcfe72bd3fb53d35ce
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Jul 8 17:27:04 2016 -0400

    drm/radeon: support backlight control for UNIPHY3
    
    [ Upstream commit d3200be6c423afa1c34f7e39e9f6d04dd5b0af9d ]
    
    Same interface as other UNIPHY blocks
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2aa2e066287e796f1ead8476a0b1306b10777f8f
Author: Jim Mattson <jmattson@google.com>
Date:   Fri Jul 8 15:36:06 2016 -0700

    KVM: nVMX: Fix memory corruption when using VMCS shadowing
    
    [ Upstream commit 2f1fe81123f59271bddda673b60116bde9660385 ]
    
    When freeing the nested resources of a vcpu, there is an assumption that
    the vcpu's vmcs01 is the current VMCS on the CPU that executes
    nested_release_vmcs12(). If this assumption is violated, the vcpu's
    vmcs01 may be made active on multiple CPUs at the same time, in
    violation of Intel's specification. Moreover, since the vcpu's vmcs01 is
    not VMCLEARed on every CPU on which it is active, it can linger in a
    CPU's VMCS cache after it has been freed and potentially
    repurposed. Subsequent eviction from the CPU's VMCS cache on a capacity
    miss can result in memory corruption.
    
    It is not sufficient for vmx_free_vcpu() to call vmx_load_vmcs01(). If
    the vcpu in question was last loaded on a different CPU, it must be
    migrated to the current CPU before calling vmx_load_vmcs01().
    
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6ef4fa7aa0b734e59c57ae5e7ba6446b3dcff4cd
Author: Joseph Salisbury <joseph.salisbury@canonical.com>
Date:   Wed Jul 6 21:18:51 2016 -0400

    usb: quirks: Add no-lpm quirk for Elan
    
    [ Upstream commit 25b1f9acc452209ae0fcc8c1332be852b5c52f53 ]
    
    BugLink: http://bugs.launchpad.net/bugs/1498667
    
    As reported in BugLink, this device has an issue with Linux Power
    Management so adding a quirk.  This quirk was reccomended by Alan Stern:
    
    http://lkml.iu.edu/hypermail/linux/kernel/1606.2/05590.html
    
    Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 84aec61c9b852c07b22756264f67c8f771ce7416
Author: Adrien Vergé <adrienverge@gmail.com>
Date:   Tue Nov 24 16:02:04 2015 +0100

    USB: quirks: Fix another ELAN touchscreen
    
    [ Upstream commit df36c5bede207f734e4750beb2b14fb892050280 ]
    
    Like other buggy models that had their fixes [1], the touchscreen with
    id 04f3:21b8 from ELAN Microelectronics needs the device-qualifier
    quirk. Otherwise, it fails to respond, blocks the boot for a random
    amount of time and pollutes dmesg with:
    
    [ 2887.373196] usb 1-5: new full-speed USB device number 41 using xhci_hcd
    [ 2889.502000] usb 1-5: unable to read config index 0 descriptor/start: -71
    [ 2889.502005] usb 1-5: can't read configurations, error -71
    [ 2889.654571] usb 1-5: new full-speed USB device number 42 using xhci_hcd
    [ 2891.783438] usb 1-5: unable to read config index 0 descriptor/start: -71
    [ 2891.783443] usb 1-5: can't read configurations, error -71
    
    [1]: See commits c68929f, 876af5d, d749947, a32c99e and dc703ec.
    
    Tested-by: Adrien Vergé <adrienverge@gmail.com>
    Signed-off-by: Adrien Vergé <adrienverge@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5e33de127d9789a376b93ed8dc70f3b11ea3b9e5
Author: Sasha Levin <alexander.levin@verizon.com>
Date:   Sun Aug 14 18:23:56 2016 -0400

    s390/mm: fix gmap tlb flush issues
    
    [ Upstream commit f045402984404ddc11016358411e445192919047 ]
    
    __tlb_flush_asce() should never be used if multiple asce belong to a mm.
    
    As this function changes mm logic determining if local or global tlb
    flushes will be neded, we might end up flushing only the gmap asce on all
    CPUs and a follow up mm asce flushes will only flush on the local CPU,
    although that asce ran on multiple CPUs.
    
    The missing tlb flushes will provoke strange faults in user space and even
    low address protections in user space, crashing the kernel.
    
    Fixes: 1b948d6caec4 ("s390/mm,tlb: optimize TLB flushing for zEC12")
    Cc: stable@vger.kernel.org # 3.15+
    Reported-by: Sascha Silbe <silbe@linux.vnet.ibm.com>
    Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b2637b76a98d0632b3008d2e789b683e0b699492
Author: Sachin Prabhu <sprabhu@redhat.com>
Date:   Thu Jul 7 21:28:27 2016 +0100

    cifs: Check for existing directory when opening file with O_CREAT
    
    [ Upstream commit 8d9535b6efd86e6c07da59f97e68f44efb7fe080 ]
    
    When opening a file with O_CREAT flag, check to see if the file opened
    is an existing directory.
    
    This prevents the directory from being opened which subsequently causes
    a crash when the close function for directories cifs_closedir() is called
    which frees up the file->private_data memory while the file is still
    listed on the open file list for the tcon.
    
    Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    CC: Stable <stable@vger.kernel.org>
    Reported-by: Xiaoli Feng <xifeng@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d5dec6681977a836a0e9a8972122a596931bf97c
Author: Matthew Leach <matthew@mattleach.net>
Date:   Fri Jul 8 09:04:27 2016 -0300

    [media] media: usbtv: prevent access to free'd resources
    
    [ Upstream commit 2a00932f082aff93c3a55426e0c7af6d0ec03997 ]
    
    When disconnecting the usbtv device, the sound card is unregistered
    from ALSA and the snd member of the usbtv struct is set to NULL.  If
    the usbtv snd_trigger work is running, this can cause a race condition
    where the kernel will attempt to access free'd resources, shown in
    [1].
    
    This patch fixes the disconnection code by cancelling any snd_trigger
    work before unregistering the sound card from ALSA and checking that
    the snd member still exists in the work function.
    
    [1]:
     usb 3-1.2: USB disconnect, device number 6
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
     IP: [<ffffffff81093850>] process_one_work+0x30/0x480
     PGD 405bbf067 PUD 405bbe067 PMD 0
     Call Trace:
      [<ffffffff81093ce8>] worker_thread+0x48/0x4e0
      [<ffffffff81093ca0>] ? process_one_work+0x480/0x480
      [<ffffffff81093ca0>] ? process_one_work+0x480/0x480
      [<ffffffff81099998>] kthread+0xd8/0xf0
      [<ffffffff815c73c2>] ret_from_fork+0x22/0x40
      [<ffffffff810998c0>] ? kthread_worker_fn+0x170/0x170
     ---[ end trace 0f3dac5c1a38e610 ]---
    
    Signed-off-by: Matthew Leach <matthew@mattleach.net>
    Tested-by: Peter Sutton <foxxy@foxdogstudios.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit def5e119f2b2b020d70e92df74b97dafc824427c
Author: Dmitry Tunin <hanipouspilot@gmail.com>
Date:   Tue Jul 12 01:35:18 2016 +0300

    Bluetooth: Add support of 13d3:3490 AR3012 device
    
    [ Upstream commit 12d868964f7352e8b18e755488f7265a93431de1 ]
    
    T: Bus=01 Lev=01 Prnt=01 Port=07 Cnt=05 Dev#= 5 Spd=12 MxCh= 0
    D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=13d3 ProdID=3490 Rev=00.01
    C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    BugLink: https://bugs.launchpad.net/bugs/1600623
    
    Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 77756a7116636458331d43ae7934098c7a74d82c
Author: Lauro Costa <lauro@polilinux.com.br>
Date:   Mon May 9 17:36:11 2016 -0300

    Bluetooth: Add USB ID 13D3:3487 to ath3k
    
    [ Upstream commit 72f9f8b58bc743e6b6abdc68f60db98486c3ffcf ]
    
    Add hw id to ath3k usb device list and btusb blacklist
    
    T:  Bus=01 Lev=01 Prnt=01 Port=08 Cnt=02 Dev#=  4 Spd=12  MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=13d3 ProdID=3487 Rev=00.02
    C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    Requires these firmwares:
    ar3k/AthrBT_0x11020100.dfu and ar3k/ramps_0x11020100_40.dfu
    Firmwares are available in linux-firmware.
    
    Device found in a laptop ASUS model N552VW. It's an Atheros AR9462 chip.
    
    Signed-off-by: Lauro Costa <lauro@polilinux.com.br>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9bf4930d0540fa4783f06ea321686e9400582438
Author: Jonathan McDowell <noodles@earth.li>
Date:   Sat May 14 14:01:26 2016 -0300

    [media] Fix RC5 decoding with Fintek CIR chipset
    
    [ Upstream commit bbdb34c90aeb8b2253eae88029788ebe1d7f2fd4 ]
    
    Fix RC5 decoding with Fintek CIR chipset
    
    Commit e87b540be2dd02552fb9244d50ae8b4e4619a34b tightened up the RC5
    decoding by adding a check for trailing silence to ensure a valid RC5
    command had been received. Unfortunately the trailer length checked was
    10 units and the Fintek CIR device does not want to provide details of a
    space longer than 6350us. This meant that RC5 remotes working on a
    Fintek setup on 3.16 failed on 3.17 and later. Fix this by shortening
    the trailer check to 6 units (allowing for a previous space in the
    received remote command).
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=117221
    
    Signed-off-by: Jonathan McDowell <noodles@earth.li>
    Cc: stable@vger.kernel.org
    Signed-off-by: David Härdeman <david@hardeman.nu>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5d3e4a33748513a81c22c730865fef30810c5229
Author: Soeren Moch <smoch@web.de>
Date:   Wed May 11 13:49:11 2016 -0300

    [media] media: dvb_ringbuffer: Add memory barriers
    
    [ Upstream commit ca6e6126db5494f18c6c6615060d4d803b528bff ]
    
    Implement memory barriers according to Documentation/circular-buffers.txt:
    - use smp_store_release() to update ringbuffer read/write pointers
    - use smp_load_acquire() to load write pointer on reader side
    - use ACCESS_ONCE() to load read pointer on writer side
    
    This fixes data stream corruptions observed e.g. on an ARM Cortex-A9
    quad core system with different types (PCI, USB) of DVB tuners.
    
    Signed-off-by: Soeren Moch <smoch@web.de>
    Cc: stable@vger.kernel.org # 3.14+
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4b35be4325be4cb46628fcc6d25070ba75d6bf97
Author: Lyude <cpaul@redhat.com>
Date:   Fri Jun 24 17:54:31 2016 -0400

    drm/radeon: Poll for both connect/disconnect on analog connectors
    
    [ Upstream commit 14ff8d48f2235295dfb3117693008e367b49cdb5 ]
    
    DRM_CONNECTOR_POLL_CONNECT only enables polling for connections, not
    disconnections. Because of this, we end up losing hotplug polling for
    analog connectors once they get connected.
    
    Easy way to reproduce:
     - Grab a machine with a radeon GPU and a VGA port
     - Plug a monitor into the VGA port, wait for it to update the connector
       from disconnected to connected
     - Disconnect the monitor on VGA, a hotplug event is never sent for the
       removal of the connector.
    
    Originally, only using DRM_CONNECTOR_POLL_CONNECT might have been a good
    idea since doing VGA polling can sometimes result in having to mess with
    the DAC voltages to figure out whether or not there's actually something
    there since VGA doesn't have HPD. Doing this would have the potential of
    showing visible artifacts on the screen every time we ran a poll while a
    VGA display was connected. Luckily, radeon_vga_detect() only resorts to
    this sort of polling if the poll is forced, and DRM's polling helper
    doesn't force it's polls.
    
    Additionally, this removes some assignments to connector->polled that
    weren't actually doing anything.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Lyude <cpaul@redhat.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5a88bc526e6d39398515ea56f2f22468567f1f2b
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Jun 1 12:58:36 2016 -0400

    drm/radeon: add a delay after ATPX dGPU power off
    
    [ Upstream commit d814b24fb74cb9797d70cb8053961447c5879a5c ]
    
    ATPX dGPU power control requires a 200ms delay between
    power off and on.  This should fix dGPU failures on
    resume from power off.
    
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Acked-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5467159ce7daea9c2f7548b1a7835ee6cecbfb68
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Tue Jul 5 20:01:52 2016 -0400

    ext4: validate s_reserved_gdt_blocks on mount
    
    [ Upstream commit e1d8c1feecf672379c50ab045fd94548468bc987 ]
    
    [ Upstream commit 5b9554dc5bf008ae7f68a52e3d7e76c0920938a2 ]
    
    If s_reserved_gdt_blocks is extremely large, it's possible for
    ext4_init_block_bitmap(), which is called when ext4 sets up an
    uninitialized block bitmap, to corrupt random kernel memory.  Add the
    same checks which e2fsck has --- it must never be larger than
    blocksize / sizeof(__u32) --- and then add a backup check in
    ext4_init_block_bitmap() in case the superblock gets modified after
    the file system is mounted.
    
    Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 926d244dfa891826a40d6af950209c3b90868149
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Jun 4 12:58:39 2016 +0200

    ARM: dts: sunxi: Add a startup delay for fixed regulator enabled phys
    
    [ Upstream commit fc51b632c7b047c25807023b76f3877aed19c770 ]
    
    It seems that recent kernels have a shorter timeout when scanning for
    ethernet phys causing us to hit a timeout on boards where the phy's
    regulator gets enabled just before scanning, which leads to non working
    ethernet.
    
    A 10ms startup delay seems to be enough to fix it, this commit adds a
    20ms startup delay just to be safe.
    
    This has been tested on a sun4i-a10-a1000 and sun5i-a10s-wobo-i5 board,
    both of which have non-working ethernet on recent kernels without this
    fix.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 94dd8b9a6e6e4aef9953480b61e9861fa7a838e9
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Mon Jul 4 11:03:00 2016 -0400

    ext4: don't call ext4_should_journal_data() on the journal inode
    
    [ Upstream commit 6a7fd522a7c94cdef0a3b08acf8e6702056e635c ]
    
    If ext4_fill_super() fails early, it's possible for ext4_evict_inode()
    to call ext4_should_journal_data() before superblock options and flags
    are fully set up.  In that case, the iput() on the journal inode can
    end up causing a BUG().
    
    Work around this problem by reordering the tests so we only call
    ext4_should_journal_data() after we know it's not the journal inode.
    
    Fixes: 2d859db3e4 ("ext4: fix data corruption in inodes with journalled data")
    Fixes: 2b405bfa84 ("ext4: fix data=journal fast mount/umount hang")
    Cc: Jan Kara <jack@suse.cz>
    Cc: stable@vger.kernel.org
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit aba6b2d882d2bad5e3996b739fa5ae7f62bf8bf6
Author: Jan Kara <jack@suse.cz>
Date:   Mon Jul 4 10:14:01 2016 -0400

    ext4: fix deadlock during page writeback
    
    [ Upstream commit 646caa9c8e196880b41cd3e3d33a2ebc752bdb85 ]
    
    Commit 06bd3c36a733 (ext4: fix data exposure after a crash) uncovered a
    deadlock in ext4_writepages() which was previously much harder to hit.
    After this commit xfstest generic/130 reproduces the deadlock on small
    filesystems.
    
    The problem happens when ext4_do_update_inode() sets LARGE_FILE feature
    and marks current inode handle as synchronous. That subsequently results
    in ext4_journal_stop() called from ext4_writepages() to block waiting for
    transaction commit while still holding page locks, reference to io_end,
    and some prepared bio in mpd structure each of which can possibly block
    transaction commit from completing and thus results in deadlock.
    
    Fix the problem by releasing page locks, io_end reference, and
    submitting prepared bio before calling ext4_journal_stop().
    
    [ Changed to defer the call to ext4_journal_stop() only if the handle
      is synchronous.  --tytso ]
    
    Reported-and-tested-by: Eryu Guan <eguan@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    CC: stable@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit cbe04d2b764db657ef41d5c8fa085d11054ef215
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Thu Jun 30 11:53:46 2016 -0400

    ext4: check for extents that wrap around
    
    [ Upstream commit f70749ca42943faa4d4dcce46dfdcaadb1d0c4b6 ]
    
    An extent with lblock = 4294967295 and len = 1 will pass the
    ext4_valid_extent() test:
    
            ext4_lblk_t last = lblock + len - 1;
    
            if (len == 0 || lblock > last)
                    return 0;
    
    since last = 4294967295 + 1 - 1 = 4294967295. This would later trigger
    the BUG_ON(es->es_lblk + es->es_len < es->es_lblk) in ext4_es_end().
    
    We can simplify it by removing the - 1 altogether and changing the test
    to use lblock + len <= lblock, since now if len = 0, then lblock + 0 ==
    lblock and it fails, and if len > 0 then lblock + len > lblock in order
    to pass (i.e. it doesn't overflow).
    
    Fixes: 5946d0893 ("ext4: check for overlapping extents in ext4_valid_extent_entries()")
    Fixes: 2f974865f ("ext4: check for zero length extent explicitly")
    Cc: Eryu Guan <guaneryu@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Phil Turnbull <phil.turnbull@oracle.com>
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7d989fc40ba1bdf991dc39c4166ca104cb4be42d
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Jun 8 16:32:50 2016 +0900

    usb: renesas_usbhs: protect the CFIFOSEL setting in usbhsg_ep_enable()
    
    [ Upstream commit 15e4292a2d21e9997fdb2b8c014cc461b3f268f0 ]
    
    This patch fixes an issue that the CFIFOSEL register value is possible
    to be changed by usbhsg_ep_enable() wrongly. And then, a data transfer
    using CFIFO may not work correctly.
    
    For example:
     # modprobe g_multi file=usb-storage.bin
     # ifconfig usb0 192.168.1.1 up
     (During the USB host is sending file to the mass storage)
     # ifconfig usb0 down
    
    In this case, since the u_ether.c may call usb_ep_enable() in
    eth_stop(), if the renesas_usbhs driver is also using CFIFO for
    mass storage, the mass storage may not work correctly.
    
    So, this patch adds usbhs_lock() and usbhs_unlock() calling in
    usbhsg_ep_enable() to protect CFIFOSEL register. This is because:
     - CFIFOSEL.CURPIPE = 0 is also needed for the pipe configuration
     - The CFIFOSEL (fifo->sel) is already protected by usbhs_lock()
    
    Fixes: 97664a207bc2 ("usb: renesas_usbhs: shrink spin lock area")
    Cc: <stable@vger.kernel.org> # v3.1+
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit df09c5633071d21d3f9563d6ff3e6c9ff8696732
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Jun 8 16:32:49 2016 +0900

    usb: renesas_usbhs: fix NULL pointer dereference in xfer_work()
    
    [ Upstream commit 4fdef698383db07d829da567e0e405fc41ff3a89 ]
    
    This patch fixes an issue that the xfer_work() is possible to cause
    NULL pointer dereference if the usb cable is disconnected while data
    transfer is running.
    
    In such case, a gadget driver may call usb_ep_disable()) before
    xfer_work() is actually called. In this case, the usbhs_pkt_pop()
    will call usbhsf_fifo_unselect(), and then usbhs_pipe_to_fifo()
    in xfer_work() will return NULL.
    
    Fixes: e73a989 ("usb: renesas_usbhs: add DMAEngine support")
    Cc: <stable@vger.kernel.org> # v3.1+
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 68960057e584cc367a6ae7e4737bbc240651aaec
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Thu Mar 12 15:35:19 2015 +0900

    usb: renesas_usbhs: fix the sequence in xfer_work()
    
    [ Upstream commit 9b53d9af7aac09cf249d72bfbf15f08e47c4f7fe ]
    
    This patch fixes the setup sequence in xfer_work(). Otherwise,
    sometimes a usb transaction will get stuck.
    
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 31338a15b1e38478183dd19f55d5991747268692
Author: Alex Hung <alex.hung@canonical.com>
Date:   Mon Jun 13 19:44:00 2016 +0800

    hp-wmi: Fix wifi cannot be hard-unblocked
    
    [ Upstream commit fc8a601e1175ae351f662506030f9939cb7fdbfe ]
    
    Several users reported wifi cannot be unblocked as discussed in [1].
    This patch removes the use of the 2009 flag by BIOS but uses the actual
    WMI function calls - it will be skipped if WMI reports unsupported.
    
    [1] https://bugzilla.kernel.org/show_bug.cgi?id=69131
    
    Signed-off-by: Alex Hung <alex.hung@canonical.com>
    Tested-by: Evgenii Shatokhin <eugene.shatokhin@yandex.ru>
    Cc: stable@vger.kernel.org
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d918a2e1b06e38855c8ecb15c00f39d6528353e2
Author: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Date:   Thu Jun 16 08:27:35 2016 +0200

    serial: samsung: Fix ERR pointer dereference on deferred probe
    
    [ Upstream commit e51e4d8a185de90424b03f30181b35f29c46a25a ]
    
    When the clk_get() of "uart" clock returns EPROBE_DEFER, the next re-probe
    finishes with success but uses invalid (ERR_PTR) values.  This leads to
    dereferencing of ERR_PTR stored under ourport->clk:
    
            12c30000.serial: Controller clock not found
            (...)
            12c30000.serial: ttySAC3 at MMIO 0x12c30000 (irq = 61, base_baud = 0) is a S3C6400/10
            Unable to handle kernel paging request at virtual address fffffdfb
    
            (clk_prepare) from [<c039f7d0>] (s3c24xx_serial_pm+0x20/0x128)
            (s3c24xx_serial_pm) from [<c0395414>] (uart_change_pm+0x38/0x40)
            (uart_change_pm) from [<c039689c>] (uart_add_one_port+0x31c/0x44c)
            (uart_add_one_port) from [<c03a035c>] (s3c24xx_serial_probe+0x2a8/0x418)
            (s3c24xx_serial_probe) from [<c03ee110>] (platform_drv_probe+0x50/0xb0)
            (platform_drv_probe) from [<c03ecb44>] (driver_probe_device+0x1f4/0x2b0)
            (driver_probe_device) from [<c03eb0c0>] (bus_for_each_drv+0x44/0x8c)
            (bus_for_each_drv) from [<c03ec8c8>] (__device_attach+0x9c/0x100)
            (__device_attach) from [<c03ebf54>] (bus_probe_device+0x84/0x8c)
            (bus_probe_device) from [<c03ec388>] (deferred_probe_work_func+0x60/0x8c)
            (deferred_probe_work_func) from [<c012fee4>] (process_one_work+0x120/0x328)
            (process_one_work) from [<c0130150>] (worker_thread+0x2c/0x4ac)
            (worker_thread) from [<c0135320>] (kthread+0xd8/0xf4)
            (kthread) from [<c0107978>] (ret_from_fork+0x14/0x3c)
    
    The first unsuccessful clk_get() causes s3c24xx_serial_init_port() to
    exit with failure but the s3c24xx_uart_port is left half-configured
    (e.g. port->mapbase is set, clk contains ERR_PTR).  On next re-probe,
    the function s3c24xx_serial_init_port() will exit early with success
    because of configured port->mapbase and driver will use old values,
    including the ERR_PTR as clock.
    
    Fix this by cleaning the port->mapbase on error path so each re-probe
    will initialize all of the port settings.
    
    Fixes: 60e93575476f ("serial: samsung: enable clock before clearing pending interrupts during init")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Tested-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Tested-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b4d9416d6388fb450b397484e0ab85a154471723
Author: Frank Rowand <frank.rowand@am.sony.com>
Date:   Thu Jun 16 10:51:46 2016 -0700

    of: fix memory leak related to safe_name()
    
    [ Upstream commit d9fc880723321dbf16b2981e3f3e916b73942210 ]
    
    Fix a memory leak resulting from memory allocation in safe_name().
    This patch fixes all call sites of safe_name().
    
    Mathieu Malaterre reported the memory leak on boot:
    
    On my PowerMac device-tree would generate a duplicate name:
    
    [    0.023043] device-tree: Duplicate name in PowerPC,G4@0, renamed to "l2-cache#1"
    
    in this case a newly allocated name is generated by `safe_name`. However
    in this case it is never deallocated.
    
    The bug was found using kmemleak reported as:
    
    unreferenced object 0xdf532e60 (size 32):
      comm "swapper", pid 1, jiffies 4294892300 (age 1993.532s)
      hex dump (first 32 bytes):
        6c 32 2d 63 61 63 68 65 23 31 00 dd e4 dd 1e c2  l2-cache#1......
        ec d4 ba ce 04 ec cc de 8e 85 e9 ca c4 ec cc 9e  ................
      backtrace:
        [<c02d3350>] kvasprintf+0x64/0xc8
        [<c02d3400>] kasprintf+0x4c/0x5c
        [<c0453814>] safe_name.isra.1+0x80/0xc4
        [<c04545d8>] __of_attach_node_sysfs+0x6c/0x11c
        [<c075f21c>] of_core_init+0x8c/0xf8
        [<c0729594>] kernel_init_freeable+0xd4/0x208
        [<c00047e8>] kernel_init+0x24/0x11c
        [<c00158ec>] ret_from_kernel_thread+0x5c/0x64
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=120331
    
    Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
    Reported-by: mathieu.malaterre@gmail.com
    Tested-by: Mathieu Malaterre <mathieu.malaterre@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8acc67b372ac0c3607ccd3a898ca8fd75455a8fa
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Wed Jun 15 22:27:05 2016 +0800

    crypto: gcm - Filter out async ghash if necessary
    
    [ Upstream commit b30bdfa86431afbafe15284a3ad5ac19b49b88e3 ]
    
    As it is if you ask for a sync gcm you may actually end up with
    an async one because it does not filter out async implementations
    of ghash.
    
    This patch fixes this by adding the necessary filter when looking
    for ghash.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c48db62d0cbae1e2a5b2f572130064c11ffec777
Author: Konrad Leszczynski <konrad.leszczynski@intel.com>
Date:   Mon Feb 8 16:13:12 2016 +0100

    usb: dwc3: fix for the isoc transfer EP_BUSY flag
    
    [ Upstream commit 9cad39fe4e4a4fe95d8ea5a7b0692b0a6e89e38b ]
    
    commit f3af36511e60 ("usb: dwc3: gadget: always
    enable IOC on bulk/interrupt transfers") ended up
    regressing Isochronous endpoints by clearing
    DWC3_EP_BUSY flag too early, which resulted in
    choppy audio playback over USB.
    
    Fix that by partially reverting original commit and
    making sure that we check for isochronous endpoints.
    
    Fixes: f3af36511e60 ("usb: dwc3: gadget: always enable IOC
                    on bulk/interrupt transfers")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Konrad Leszczynski <konrad.leszczynski@intel.com>
    Signed-off-by: Rafal Redzimski <rafal.f.redzimski@intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a5c2d04b6750191b5a4596e435d9d0c217e1f822
Author: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Date:   Tue Jun 14 14:48:50 2016 -0300

    Update my main e-mails at the Kernel tree
    
    [ Upstream commit dc19ed1571dd3882b35e12fdaf50acbcc9b69714 ]
    
    For the third time in three years, I'm changing my e-mail at
    Samsung. That's bad, as it may stop communications with me for
    a while. So, this time, I'll also the mchehab@kernel.org e-mail,
    as it remains stable since ever.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9077788194eda170368cd97862ce9571b972c4cd
Author: Vignesh R <vigneshr@ti.com>
Date:   Thu Jun 9 11:02:04 2016 +0530

    gpio: pca953x: Fix NBANK calculation for PCA9536
    
    [ Upstream commit a246b8198f776a16d1d3a3bbfc2d437bad766b29 ]
    
    NBANK() macro assumes that ngpios is a multiple of 8(BANK_SZ) and
    hence results in 0 banks for PCA9536 which has just 4 gpios. This is
    wrong as PCA9356 has 1 bank with 4 gpios. This results in uninitialized
    PCA953X_INVERT register. Fix this by using DIV_ROUND_UP macro in
    NBANK().
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Vignesh R <vigneshr@ti.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a83f985a3ac1927c21484bfc10fbda417e489777
Author: Chris Blake <chrisrblake93@gmail.com>
Date:   Mon May 30 07:26:37 2016 -0500

    PCI: Mark Atheros AR9485 and QCA9882 to avoid bus reset
    
    [ Upstream commit 9ac0108c2bac3f1d0255f64fb89fc27e71131b24 ]
    
    Similar to the AR93xx series, the AR94xx and the Qualcomm QCA988x also have
    the same quirk for the Bus Reset.
    
    Fixes: c3e59ee4e766 ("PCI: Mark Atheros AR93xx to avoid bus reset")
    Signed-off-by: Chris Blake <chrisrblake93@gmail.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org  # v3.14+
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4ed53b9daf20722ec080838af0af0ba05acfe3af
Author: Paul Moore <paul@paul-moore.com>
Date:   Mon Jun 6 15:17:20 2016 -0400

    netlabel: add address family checks to netlbl_{sock,req}_delattr()
    
    [ Upstream commit 0e0e36774081534783aa8eeb9f6fbddf98d3c061 ]
    
    It seems risky to always rely on the caller to ensure the socket's
    address family is correct before passing it to the NetLabel kAPI,
    especially since we see at least one LSM which didn't. Add address
    family checks to the *_delattr() functions to help prevent future
    problems.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: Maninder Singh <maninder1.s@samsung.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e2591cbcf49e13ef2be20e38064c60730fc5b3aa
Author: Javier Martinez Canillas <javier@osg.samsung.com>
Date:   Tue May 3 16:27:17 2016 -0400

    s5p-mfc: Add release callback for memory region devs
    
    [ Upstream commit 6311f1261f59ce5e51fbe5cc3b5e7737197316ac ]
    
    When s5p_mfc_remove() calls put_device() for the reserved memory region
    devs, the driver core warns that the dev doesn't have a release callback:
    
    WARNING: CPU: 0 PID: 591 at drivers/base/core.c:251 device_release+0x8c/0x90
    Device 's5p-mfc-l' does not have a release() function, it is broken and must be fixed.
    
    Also, the declared DMA memory using dma_declare_coherent_memory() isn't
    relased so add a dev .release that calls dma_release_declared_memory().
    
    Cc: <stable@vger.kernel.org>
    Fixes: 6e83e6e25eb4 ("[media] s5p-mfc: Fix kernel warning on memory init")
    Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7cc9ce02e9f06082152f619a33e3bdbf76e35a24
Author: Javier Martinez Canillas <javier@osg.samsung.com>
Date:   Tue May 3 16:27:16 2016 -0400

    s5p-mfc: Set device name for reserved memory region devs
    
    [ Upstream commit 29debab0a94035a390801d1f177d171d014b7765 ]
    
    The devices don't have a name set, so makes dev_name() returns NULL which
    makes harder to identify the devices that are causing issues, for example:
    
    WARNING: CPU: 2 PID: 616 at drivers/base/core.c:251 device_release+0x8c/0x90
    Device '(null)' does not have a release() function, it is broken and must be fixed.
    
    And after setting the device name:
    
    WARNING: CPU: 0 PID: 591 at drivers/base/core.c:251 device_release+0x8c/0x90
    Device 's5p-mfc-l' does not have a release() function, it is broken and must be fixed.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 6e83e6e25eb4 ("[media] s5p-mfc: Fix kernel warning on memory init")
    Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8f8b0fea2500ce685a8cf393d4a5867ec3d07350
Author: Roderick Colenbrander <roderick.colenbrander@sony.com>
Date:   Wed May 18 13:11:09 2016 -0700

    HID: uhid: fix timeout when probe races with IO
    
    [ Upstream commit 67f8ecc550b5bda03335f845dc869b8501d25fd0 ]
    
    Many devices use userspace bluetooth stacks like BlueZ or Bluedroid in combination
    with uhid. If any of these stacks is used with a HID device for which the driver
    performs a HID request as part .probe (or technically another HID operation),
    this results in a deadlock situation. The deadlock results in a 5 second timeout
    for I/O operations in HID drivers, so isn't fatal, but none of the I/O operations
    have a chance of succeeding.
    
    The root cause for the problem is that uhid only allows for one request to be
    processed at a time per uhid instance and locks out other operations. This means
    that if a user space is creating a new HID device through 'UHID_CREATE', which
    ultimately triggers '.probe' through the HID layer. Then any HID request e.g. a
    read for calibration data would trigger a HID operation on uhid again, but it
    won't go out to userspace, because it is still stuck in UHID_CREATE.
    In addition bluetooth stacks are typically single threaded, so they wouldn't be
    able to handle any requests while waiting on uhid.
    
    Lucikly the UHID spec is somewhat flexible and allows for fixing the issue,
    without breaking user space. The idea which the patch implements as discussed
    with David Herrmann is to decouple adding of a hid device (which triggers .probe)
    from UHID_CREATE. The work will kick off roughly once UHID_CREATE completed (or
    else will wait a tiny bit of time in .probe for a lock). A HID driver has to call
    HID to call 'hid_hw_start()' as part of .probe once it is ready for I/O, which
    triggers UHID_START to user space. Any HID operations should function now within
    .probe and won't deadlock because userspace is stuck on UHID_CREATE.
    
    We verified this patch on Bluedroid with Android 6.0 and on desktop Linux with
    BlueZ stacks. Prior to the patch they had the deadlock issue.
    
    [jkosina@suse.cz: reword subject]
    Signed-off-by: Roderick Colenbrander <roderick.colenbrander@sony.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 43ba164928bb5e77093d74f48e339a8ad09610c5
Author: Sasha Levin <alexander.levin@verizon.com>
Date:   Mon Aug 22 12:22:29 2016 -0400

    Revert "drm/i915/ilk: Don't disable SSC source if it's in use"
    
    This reverts commit bcb6659242e610b715fcfced0d048c01aec47960.
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>