commit 61718ee3175ce93d7d832a6eb89c427c2d9ac4da
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sun Nov 20 01:01:45 2016 +0000

    Linux 3.2.84

commit c5422dad633d2a0838ffd8fc72af6b4b83755e33
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Nov 22 11:00:20 2011 +0300

    ext3: NULL dereference in ext3_evict_inode()
    
    commit bcdd0c1600903e9222abfcde28947406020ccb5d upstream.
    
    This is an fsfuzzer bug.  ->s_journal is set at the end of
    ext3_load_journal() but we try to use it in the error handling from
    ext3_get_journal() while it's still NULL.
    
    [  337.039041] BUG: unable to handle kernel NULL pointer dereference at 0000000000000024
    [  337.040380] IP: [<ffffffff816e6539>] _raw_spin_lock+0x9/0x30
    [  337.041687] PGD 0
    [  337.043118] Oops: 0002 [#1] SMP
    [  337.044483] CPU 3
    [  337.044495] Modules linked in: ecb md4 cifs fuse kvm_intel kvm brcmsmac brcmutil crc8 cordic r8169 [last unloaded: scsi_wait_scan]
    [  337.047633]
    [  337.049259] Pid: 8308, comm: mount Not tainted 3.2.0-rc2-next-20111121+ #24 SAMSUNG ELECTRONICS CO., LTD. RV411/RV511/E3511/S3511    /RV411/RV511/E3511/S3511
    [  337.051064] RIP: 0010:[<ffffffff816e6539>]  [<ffffffff816e6539>] _raw_spin_lock+0x9/0x30
    [  337.052879] RSP: 0018:ffff8800b1d11ae8  EFLAGS: 00010282
    [  337.054668] RAX: 0000000000000100 RBX: 0000000000000000 RCX: ffff8800b77c2000
    [  337.056400] RDX: ffff8800a97b5c00 RSI: 0000000000000000 RDI: 0000000000000024
    [  337.058099] RBP: ffff8800b1d11ae8 R08: 6000000000000000 R09: e018000000000000
    [  337.059841] R10: ff67366cc2607c03 R11: 00000000110688e6 R12: 0000000000000000
    [  337.061607] R13: 0000000000000000 R14: 0000000000000000 R15: ffff8800a78f06e8
    [  337.063385] FS:  00007f9d95652800(0000) GS:ffff8800b7180000(0000) knlGS:0000000000000000
    [  337.065110] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  337.066801] CR2: 0000000000000024 CR3: 00000000aef2c000 CR4: 00000000000006e0
    [  337.068581] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  337.070321] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    [  337.072105] Process mount (pid: 8308, threadinfo ffff8800b1d10000, task ffff8800b1d02be0)
    [  337.073800] Stack:
    [  337.075487]  ffff8800b1d11b08 ffffffff811f48cf ffff88007ac9b158 0000000000000000
    [  337.077255]  ffff8800b1d11b38 ffffffff8119405d ffff88007ac9b158 ffff88007ac9b250
    [  337.078851]  ffffffff8181bda0 ffffffff8181bda0 ffff8800b1d11b68 ffffffff81131e31
    [  337.080284] Call Trace:
    [  337.081706]  [<ffffffff811f48cf>] log_start_commit+0x1f/0x40
    [  337.083107]  [<ffffffff8119405d>] ext3_evict_inode+0x1fd/0x2a0
    [  337.084490]  [<ffffffff81131e31>] evict+0xa1/0x1a0
    [  337.085857]  [<ffffffff81132031>] iput+0x101/0x210
    [  337.087220]  [<ffffffff811339d1>] iget_failed+0x21/0x30
    [  337.088581]  [<ffffffff811905fc>] ext3_iget+0x15c/0x450
    [  337.089936]  [<ffffffff8118b0c1>] ? ext3_rsv_window_add+0x81/0x100
    [  337.091284]  [<ffffffff816df9a4>] ext3_get_journal+0x15/0xde
    [  337.092641]  [<ffffffff811a2e9b>] ext3_fill_super+0xf2b/0x1c30
    [  337.093991]  [<ffffffff810ddf7d>] ? register_shrinker+0x4d/0x60
    [  337.095332]  [<ffffffff8111c112>] mount_bdev+0x1a2/0x1e0
    [  337.096680]  [<ffffffff811a1f70>] ? ext3_setup_super+0x210/0x210
    [  337.098026]  [<ffffffff8119a770>] ext3_mount+0x10/0x20
    [  337.099362]  [<ffffffff8111cbee>] mount_fs+0x3e/0x1b0
    [  337.100759]  [<ffffffff810eda1b>] ? __alloc_percpu+0xb/0x10
    [  337.102330]  [<ffffffff81135385>] vfs_kern_mount+0x65/0xc0
    [  337.103889]  [<ffffffff8113611f>] do_kern_mount+0x4f/0x100
    [  337.105442]  [<ffffffff811378fc>] do_mount+0x19c/0x890
    [  337.106989]  [<ffffffff810e8456>] ? memdup_user+0x46/0x90
    [  337.108572]  [<ffffffff810e84f3>] ? strndup_user+0x53/0x70
    [  337.110114]  [<ffffffff811383fb>] sys_mount+0x8b/0xe0
    [  337.111617]  [<ffffffff816ed93b>] system_call_fastpath+0x16/0x1b
    [  337.113133] Code: 38 c2 74 0f 66 0f 1f 44 00 00 f3 90 0f b6 03 38 c2 75 f7 48 83 c4 08 5b 5d c3 0f 1f 84 00 00 00 00 00 55 b8 00 01 00 00 48 89 e5 <f0> 66 0f c1 07 0f b6 d4 38 c2 74 0c 0f 1f 00 f3 90 0f b6 07 38
    [  337.116588] RIP  [<ffffffff816e6539>] _raw_spin_lock+0x9/0x30
    [  337.118260]  RSP <ffff8800b1d11ae8>
    [  337.119998] CR2: 0000000000000024
    [  337.188701] ---[ end trace c36d790becac1615 ]---
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Cc: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b8b2dc10d09e5c087033481050efdb48d457c512
Author: Jan Beulich <JBeulich@suse.com>
Date:   Mon Aug 15 09:02:38 2016 -0600

    xenbus: don't look up transaction IDs for ordinary writes
    
    commit 9a035a40f7f3f6708b79224b86c5777a3334f7ea upstream.
    
    This should really only be done for XS_TRANSACTION_END messages, or
    else at least some of the xenstore-* tools don't work anymore.
    
    Fixes: 0beef634b8 ("xenbus: don't BUG() on user mode induced condition")
    Reported-by: Richard Schütz <rschuetz@uni-koblenz.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Tested-by: Richard Schütz <rschuetz@uni-koblenz.de>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Cc: Ed Swierk <eswierk@skyportsystems.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e3ea2576a59f960617808253b6923538328a51a4
Author: Jan Beulich <JBeulich@suse.com>
Date:   Thu Jul 7 01:23:57 2016 -0600

    xenbus: don't BUG() on user mode induced condition
    
    commit 0beef634b86a1350c31da5fcc2992f0d7c8a622b upstream.
    
    Inability to locate a user mode specified transaction ID should not
    lead to a kernel crash. For other than XS_TRANSACTION_START also
    don't issue anything to xenbus if the specified ID doesn't match that
    of any active transaction.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Cc: Ed Swierk <eswierk@skyportsystems.com>
    [bwh: Backported to 3.2: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 13e7cda6f0ecffe0266cca709fb8ab9c81dbb2a2
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Sun Jan 31 14:14:52 2016 -0200

    usbvision: revert commit 588afcc1
    
    commit d5468d7afaa9c9e961e150f0455a14a9f4872a98 upstream.
    
    Commit 588afcc1c0e4 ("[media] usbvision fix overflow of interfaces
    array")' should be reverted, because:
    
    * "!dev->actconfig->interface[ifnum]" won't catch a case where the value
    is not NULL but some garbage. This way the system may crash later with
    GPF.
    
    * "(ifnum >= USB_MAXINTERFACES)" does not cover all the error
    conditions. "ifnum" should be compared to "dev->actconfig->
    desc.bNumInterfaces", i.e. compared to the number of "struct
    usb_interface" kzalloc()-ed, not to USB_MAXINTERFACES.
    
    * There is a "struct usb_device" leak in this error path, as there is
    usb_get_dev(), but no usb_put_dev() on this path.
    
    * There is a bug of the same type several lines below with number of
    endpoints. The code is accessing hard-coded second endpoint
    ("interface->endpoint[1].desc") which may not exist. It would be great
    to handle this in the same patch too.
    
    * All the concerns above are resolved by already-accepted commit fa52bd50
    ("[media] usbvision: fix crash on detecting device with invalid
    configuration")
    
    * Mailing list message:
    http://www.spinics.net/lists/linux-media/msg94832.html
    
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Cc: Luis Henriques <luis.henriques@canonical.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a06d3be52bce98746341cfb290203603fd028290
Author: Jan Kara <jack@suse.cz>
Date:   Mon Sep 19 17:39:09 2016 +0200

    posix_acl: Clear SGID bit when setting file permissions
    
    commit 073931017b49d9458aa351605b43a7e34598caef upstream.
    
    When file permissions are modified via chmod(2) and the user is not in
    the owning group or capable of CAP_FSETID, the setgid bit is cleared in
    inode_change_ok().  Setting a POSIX ACL via setxattr(2) sets the file
    permissions as well as the new ACL, but doesn't clear the setgid bit in
    a similar way; this allows to bypass the check in chmod(2).  Fix that.
    
    References: CVE-2016-7097
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    [bwh: Backported to 3.2:
     - Drop changes to ceph, f2fs, hfsplus, orangefs
     - Use capable() instead of capable_wrt_inode_uidgid()
     - Update ext3 and generic_acl.c as well
     - In gfs2, jfs, and xfs, take care to avoid leaking the allocated ACL if
       posix_acl_update_mode() determines it's not needed
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cef37d3ae1c1847b553e22160fe33f2892bd39d4
Author: Liu Bo <bo.li.liu@oracle.com>
Date:   Wed Nov 28 10:43:11 2012 +0000

    Btrfs: skip adding an acl attribute if we don't have to
    
    commit 755ac67f83e515af55adbfe55134eb7d90839cdb upstream.
    
    If the acl can be exactly represented in the traditional file
    mode permission bits, we don't set another acl attribute.
    
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: Chris Mason <chris.mason@fusionio.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7230a82ecc91aaf0c62b048afb15f3b8e2d8059f
Author: Jan Kara <jack@suse.cz>
Date:   Thu May 26 17:21:32 2016 +0200

    fs: Avoid premature clearing of capabilities
    
    commit 030b533c4fd4d2ec3402363323de4bb2983c9cee upstream.
    
    Currently, notify_change() clears capabilities or IMA attributes by
    calling security_inode_killpriv() before calling into ->setattr. Thus it
    happens before any other permission checks in inode_change_ok() and user
    is thus allowed to trigger clearing of capabilities or IMA attributes
    for any file he can look up e.g. by calling chown for that file. This is
    unexpected and can lead to user DoSing a system.
    
    Fix the problem by calling security_inode_killpriv() at the end of
    inode_change_ok() instead of from notify_change(). At that moment we are
    sure user has permissions to do the requested change.
    
    References: CVE-2015-1350
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 44b25c3e25af81daebf188ba1bc94b123ea40138
Author: Jan Kara <jack@suse.cz>
Date:   Thu May 26 16:55:18 2016 +0200

    fs: Give dentry to inode_change_ok() instead of inode
    
    commit 31051c85b5e2aaaf6315f74c72a732673632a905 upstream.
    
    inode_change_ok() will be resposible for clearing capabilities and IMA
    extended attributes and as such will need dentry. Give it as an argument
    to inode_change_ok() instead of an inode. Also rename inode_change_ok()
    to setattr_prepare() to better relect that it does also some
    modifications in addition to checks.
    
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jan Kara <jack@suse.cz>
    [bwh: Backported to 3.2:
     - Drop changes to f2fs, lustre, orangefs, overlayfs
     - Adjust filenames, context
     - In nfsd, pass dentry to nfsd_sanitize_attrs()
     - In xfs, pass dentry to xfs_change_file_space(), xfs_set_mode(),
       xfs_setattr_nonsize(), and xfs_setattr_size()
     - Update ext3 as well
     - Mark pohmelfs as BROKEN; it's long dead upstream]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4538dfea79538a98e1468088b05627f82ac69789
Author: Stefan Richter <stefanr@s5r6.in-berlin.de>
Date:   Sat Oct 29 21:28:18 2016 +0200

    firewire: net: guard against rx buffer overflows
    
    commit 667121ace9dbafb368618dbabcf07901c962ddac upstream.
    
    The IP-over-1394 driver firewire-net lacked input validation when
    handling incoming fragmented datagrams.  A maliciously formed fragment
    with a respectively large datagram_offset would cause a memcpy past the
    datagram buffer.
    
    So, drop any packets carrying a fragment with offset + length larger
    than datagram_size.
    
    In addition, ensure that
      - GASP header, unfragmented encapsulation header, or fragment
        encapsulation header actually exists before we access it,
      - the encapsulated datagram or fragment is of nonzero size.
    
    Reported-by: Eyal Itkin <eyal.itkin@gmail.com>
    Reviewed-by: Eyal Itkin <eyal.itkin@gmail.com>
    Fixes: CVE 2016-8633
    Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
    [bwh: Backported to 3.2: fwnet_receive_broadcast() never matches IPv6 packets]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d14051db0eb5b81f1e5814681f3c60c232a33d8
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Sep 15 16:44:56 2016 +0300

    scsi: arcmsr: Buffer overflow in arcmsr_iop_message_xfer()
    
    commit 7bc2b55a5c030685b399bb65b6baa9ccc3d1f167 upstream.
    
    We need to put an upper bound on "user_len" so the memcpy() doesn't
    overflow.
    
    Reported-by: Marco Grassi <marco.gra@gmail.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Tomas Henzl <thenzl@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [bwh: Backported to 3.2:
     - Adjust context
     - Use literal 1032 insetad of ARCMSR_API_DATA_BUFLEN]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b70315cfd846c29a85c7348c4ff948fa54252d3a
Author: David Howells <dhowells@redhat.com>
Date:   Wed Oct 26 15:01:54 2016 +0100

    KEYS: Fix short sprintf buffer in /proc/keys show function
    
    commit 03dab869b7b239c4e013ec82aea22e181e441cfc upstream.
    
    This fixes CVE-2016-7042.
    
    Fix a short sprintf buffer in proc_keys_show().  If the gcc stack protector
    is turned on, this can cause a panic due to stack corruption.
    
    The problem is that xbuf[] is not big enough to hold a 64-bit timeout
    rendered as weeks:
    
            (gdb) p 0xffffffffffffffffULL/(60*60*24*7)
            $2 = 30500568904943
    
    That's 14 chars plus NUL, not 11 chars plus NUL.
    
    Expand the buffer to 16 chars.
    
    I think the unpatched code apparently works if the stack-protector is not
    enabled because on a 32-bit machine the buffer won't be overflowed and on a
    64-bit machine there's a 64-bit aligned pointer at one side and an int that
    isn't checked again on the other side.
    
    The panic incurred looks something like:
    
    Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: ffffffff81352ebe
    CPU: 0 PID: 1692 Comm: reproducer Not tainted 4.7.2-201.fc24.x86_64 #1
    Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
     0000000000000086 00000000fbbd2679 ffff8800a044bc00 ffffffff813d941f
     ffffffff81a28d58 ffff8800a044bc98 ffff8800a044bc88 ffffffff811b2cb6
     ffff880000000010 ffff8800a044bc98 ffff8800a044bc30 00000000fbbd2679
    Call Trace:
     [<ffffffff813d941f>] dump_stack+0x63/0x84
     [<ffffffff811b2cb6>] panic+0xde/0x22a
     [<ffffffff81352ebe>] ? proc_keys_show+0x3ce/0x3d0
     [<ffffffff8109f7f9>] __stack_chk_fail+0x19/0x30
     [<ffffffff81352ebe>] proc_keys_show+0x3ce/0x3d0
     [<ffffffff81350410>] ? key_validate+0x50/0x50
     [<ffffffff8134db30>] ? key_default_cmp+0x20/0x20
     [<ffffffff8126b31c>] seq_read+0x2cc/0x390
     [<ffffffff812b6b12>] proc_reg_read+0x42/0x70
     [<ffffffff81244fc7>] __vfs_read+0x37/0x150
     [<ffffffff81357020>] ? security_file_permission+0xa0/0xc0
     [<ffffffff81246156>] vfs_read+0x96/0x130
     [<ffffffff81247635>] SyS_read+0x55/0xc0
     [<ffffffff817eb872>] entry_SYSCALL_64_fastpath+0x1a/0xa4
    
    Reported-by: Ondrej Kozina <okozina@redhat.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Tested-by: Ondrej Kozina <okozina@redhat.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4ccd61d9e112c13be97d614883a5ddc426233b7f
Author: Jaganath Kanakkassery <jaganath.k@samsung.com>
Date:   Thu May 14 12:58:08 2015 +0530

    Bluetooth: Fix potential NULL dereference in RFCOMM bind callback
    
    commit 951b6a0717db97ce420547222647bcc40bf1eacd upstream.
    
    addr can be NULL and it should not be dereferenced before NULL checking.
    
    Signed-off-by: Jaganath Kanakkassery <jaganath.k@samsung.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    [bwh: Backported to 3.2:
     - There's no 'chan' variable
     - Keep using batostr() to log addresses
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e22b0efe1f8f2b84371c8288a5179d3489f406b5
Author: zhong jiang <zhongjiang@huawei.com>
Date:   Wed Sep 28 15:22:30 2016 -0700

    mm,ksm: fix endless looping in allocating memory when ksm enable
    
    commit 5b398e416e880159fe55eefd93c6588fa072cd66 upstream.
    
    I hit the following hung task when runing a OOM LTP test case with 4.1
    kernel.
    
    Call trace:
    [<ffffffc000086a88>] __switch_to+0x74/0x8c
    [<ffffffc000a1bae0>] __schedule+0x23c/0x7bc
    [<ffffffc000a1c09c>] schedule+0x3c/0x94
    [<ffffffc000a1eb84>] rwsem_down_write_failed+0x214/0x350
    [<ffffffc000a1e32c>] down_write+0x64/0x80
    [<ffffffc00021f794>] __ksm_exit+0x90/0x19c
    [<ffffffc0000be650>] mmput+0x118/0x11c
    [<ffffffc0000c3ec4>] do_exit+0x2dc/0xa74
    [<ffffffc0000c46f8>] do_group_exit+0x4c/0xe4
    [<ffffffc0000d0f34>] get_signal+0x444/0x5e0
    [<ffffffc000089fcc>] do_signal+0x1d8/0x450
    [<ffffffc00008a35c>] do_notify_resume+0x70/0x78
    
    The oom victim cannot terminate because it needs to take mmap_sem for
    write while the lock is held by ksmd for read which loops in the page
    allocator
    
    ksm_do_scan
            scan_get_next_rmap_item
                    down_read
                    get_next_rmap_item
                            alloc_rmap_item   #ksmd will loop permanently.
    
    There is no way forward because the oom victim cannot release any memory
    in 4.1 based kernel.  Since 4.6 we have the oom reaper which would solve
    this problem because it would release the memory asynchronously.
    Nevertheless we can relax alloc_rmap_item requirements and use
    __GFP_NORETRY because the allocation failure is acceptable as ksm_do_scan
    would just retry later after the lock got dropped.
    
    Such a patch would be also easy to backport to older stable kernels which
    do not have oom_reaper.
    
    While we are at it add GFP_NOWARN so the admin doesn't have to be alarmed
    by the allocation failure.
    
    Link: http://lkml.kernel.org/r/1474165570-44398-1-git-send-email-zhongjiang@huawei.com
    Signed-off-by: zhong jiang <zhongjiang@huawei.com>
    Suggested-by: Hugh Dickins <hughd@google.com>
    Suggested-by: Michal Hocko <mhocko@suse.cz>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ec097a17bfa108bd7480bc71f0732d856d9a9b10
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Sun Sep 25 23:08:31 2016 +0200

    ipmr, ip6mr: fix scheduling while atomic and a deadlock with ipmr_get_route
    
    commit 2cf750704bb6d7ed8c7d732e071dd1bc890ea5e8 upstream.
    
    Since the commit below the ipmr/ip6mr rtnl_unicast() code uses the portid
    instead of the previous dst_pid which was copied from in_skb's portid.
    Since the skb is new the portid is 0 at that point so the packets are sent
    to the kernel and we get scheduling while atomic or a deadlock (depending
    on where it happens) by trying to acquire rtnl two times.
    Also since this is RTM_GETROUTE, it can be triggered by a normal user.
    
    Here's the sleeping while atomic trace:
    [ 7858.212557] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:620
    [ 7858.212748] in_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper/0
    [ 7858.212881] 2 locks held by swapper/0/0:
    [ 7858.213013]  #0:  (((&mrt->ipmr_expire_timer))){+.-...}, at: [<ffffffff810fbbf5>] call_timer_fn+0x5/0x350
    [ 7858.213422]  #1:  (mfc_unres_lock){+.....}, at: [<ffffffff8161e005>] ipmr_expire_process+0x25/0x130
    [ 7858.213807] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.8.0-rc7+ #179
    [ 7858.213934] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.7.5-20140531_083030-gandalf 04/01/2014
    [ 7858.214108]  0000000000000000 ffff88005b403c50 ffffffff813a7804 0000000000000000
    [ 7858.214412]  ffffffff81a1338e ffff88005b403c78 ffffffff810a4a72 ffffffff81a1338e
    [ 7858.214716]  000000000000026c 0000000000000000 ffff88005b403ca8 ffffffff810a4b9f
    [ 7858.215251] Call Trace:
    [ 7858.215412]  <IRQ>  [<ffffffff813a7804>] dump_stack+0x85/0xc1
    [ 7858.215662]  [<ffffffff810a4a72>] ___might_sleep+0x192/0x250
    [ 7858.215868]  [<ffffffff810a4b9f>] __might_sleep+0x6f/0x100
    [ 7858.216072]  [<ffffffff8165bea3>] mutex_lock_nested+0x33/0x4d0
    [ 7858.216279]  [<ffffffff815a7a5f>] ? netlink_lookup+0x25f/0x460
    [ 7858.216487]  [<ffffffff8157474b>] rtnetlink_rcv+0x1b/0x40
    [ 7858.216687]  [<ffffffff815a9a0c>] netlink_unicast+0x19c/0x260
    [ 7858.216900]  [<ffffffff81573c70>] rtnl_unicast+0x20/0x30
    [ 7858.217128]  [<ffffffff8161cd39>] ipmr_destroy_unres+0xa9/0xf0
    [ 7858.217351]  [<ffffffff8161e06f>] ipmr_expire_process+0x8f/0x130
    [ 7858.217581]  [<ffffffff8161dfe0>] ? ipmr_net_init+0x180/0x180
    [ 7858.217785]  [<ffffffff8161dfe0>] ? ipmr_net_init+0x180/0x180
    [ 7858.217990]  [<ffffffff810fbc95>] call_timer_fn+0xa5/0x350
    [ 7858.218192]  [<ffffffff810fbbf5>] ? call_timer_fn+0x5/0x350
    [ 7858.218415]  [<ffffffff8161dfe0>] ? ipmr_net_init+0x180/0x180
    [ 7858.218656]  [<ffffffff810fde10>] run_timer_softirq+0x260/0x640
    [ 7858.218865]  [<ffffffff8166379b>] ? __do_softirq+0xbb/0x54f
    [ 7858.219068]  [<ffffffff816637c8>] __do_softirq+0xe8/0x54f
    [ 7858.219269]  [<ffffffff8107a948>] irq_exit+0xb8/0xc0
    [ 7858.219463]  [<ffffffff81663452>] smp_apic_timer_interrupt+0x42/0x50
    [ 7858.219678]  [<ffffffff816625bc>] apic_timer_interrupt+0x8c/0xa0
    [ 7858.219897]  <EOI>  [<ffffffff81055f16>] ? native_safe_halt+0x6/0x10
    [ 7858.220165]  [<ffffffff810d64dd>] ? trace_hardirqs_on+0xd/0x10
    [ 7858.220373]  [<ffffffff810298e3>] default_idle+0x23/0x190
    [ 7858.220574]  [<ffffffff8102a20f>] arch_cpu_idle+0xf/0x20
    [ 7858.220790]  [<ffffffff810c9f8c>] default_idle_call+0x4c/0x60
    [ 7858.221016]  [<ffffffff810ca33b>] cpu_startup_entry+0x39b/0x4d0
    [ 7858.221257]  [<ffffffff8164f995>] rest_init+0x135/0x140
    [ 7858.221469]  [<ffffffff81f83014>] start_kernel+0x50e/0x51b
    [ 7858.221670]  [<ffffffff81f82120>] ? early_idt_handler_array+0x120/0x120
    [ 7858.221894]  [<ffffffff81f8243f>] x86_64_start_reservations+0x2a/0x2c
    [ 7858.222113]  [<ffffffff81f8257c>] x86_64_start_kernel+0x13b/0x14a
    
    Fixes: 2942e9005056 ("[RTNETLINK]: Use rtnl_unicast() for rtnetlink unicasts")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2:
     - Use 'pid' instead of 'portid' where necessary
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e6711e36bb98f8538cadf8759a232cf49161fee6
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Fri Sep 23 22:57:13 2016 -0400

    tracing: Move mutex to protect against resetting of seq data
    
    commit 1245800c0f96eb6ebb368593e251d66c01e61022 upstream.
    
    The iter->seq can be reset outside the protection of the mutex. So can
    reading of user data. Move the mutex up to the beginning of the function.
    
    Fixes: d7350c3f45694 ("tracing/core: make the read callbacks reentrants")
    Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1f53d4c9835d7af7be92cdfc46b3062d051c1834
Author: Sergei Miroshnichenko <sergeimir@emcraft.com>
Date:   Wed Sep 7 16:51:12 2016 +0300

    can: dev: fix deadlock reported after bus-off
    
    commit 9abefcb1aaa58b9d5aa40a8bb12c87d02415e4c8 upstream.
    
    A timer was used to restart after the bus-off state, leading to a
    relatively large can_restart() executed in an interrupt context,
    which in turn sets up pinctrl. When this happens during system boot,
    there is a high probability of grabbing the pinctrl_list_mutex,
    which is locked already by the probe() of other device, making the
    kernel suspect a deadlock condition [1].
    
    To resolve this issue, the restart_timer is replaced by a delayed
    work.
    
    [1] https://github.com/victronenergy/venus/issues/24
    
    Signed-off-by: Sergei Miroshnichenko <sergeimir@emcraft.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit aa1e138422a6bd04a7b0cbd425919cbd834cd395
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Wed Sep 21 08:31:29 2016 -0400

    btrfs: ensure that file descriptor used with subvol ioctls is a dir
    
    commit 325c50e3cebb9208009083e841550f98a863bfa0 upstream.
    
    If the subvol/snapshot create/destroy ioctls are passed a regular file
    with execute permissions set, we'll eventually Oops while trying to do
    inode->i_op->lookup via lookup_one_len.
    
    This patch ensures that the file descriptor refers to a directory.
    
    Fixes: cb8e70901d (Btrfs: Fix subvolume creation locking rules)
    Fixes: 76dda93c6a (Btrfs: add snapshot/subvolume destroy ioctl)
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    [bwh: Backported to 3.2:
     - Open-code file_inode()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 25a0d70d6162a76eebfbff33acd5746d99c32c4e
Author: Yadi.hu <yadi.hu@windriver.com>
Date:   Sun Sep 18 18:52:31 2016 +0800

    i2c-eg20t: fix race between i2c init and interrupt enable
    
    commit 371a015344b6e270e7e3632107d9554ec6d27a6b upstream.
    
    the eg20t driver call request_irq() function before the pch_base_address,
    base address of i2c controller's register, is assigned an effective value.
    
    there is one possible scenario that an interrupt which isn't inside eg20t
    arrives immediately after request_irq() is executed when i2c controller
    shares an interrupt number with others. since the interrupt handler
    pch_i2c_handler() has already active as shared action, it will be called
    and read its own register to determine if this interrupt is from itself.
    
    At that moment, since base address of i2c registers is not remapped
    in kernel space yet,so the INT handler will access an illegal address
    and then a error occurs.
    
    Signed-off-by: Yadi.hu <yadi.hu@windriver.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1b54ab03b31e165d9af54b82d5dc1cdca26d6e7b
Author: Ashish Samant <ashish.samant@oracle.com>
Date:   Mon Sep 19 14:44:42 2016 -0700

    ocfs2: fix start offset to ocfs2_zero_range_for_truncate()
    
    commit d21c353d5e99c56cdd5b5c1183ffbcaf23b8b960 upstream.
    
    If we punch a hole on a reflink such that following conditions are met:
    
    1. start offset is on a cluster boundary
    2. end offset is not on a cluster boundary
    3. (end offset is somewhere in another extent) or
       (hole range > MAX_CONTIG_BYTES(1MB)),
    
    we dont COW the first cluster starting at the start offset.  But in this
    case, we were wrongly passing this cluster to
    ocfs2_zero_range_for_truncate() to zero out.  This will modify the
    cluster in place and zero it in the source too.
    
    Fix this by skipping this cluster in such a scenario.
    
    To reproduce:
    
    1. Create a random file of say 10 MB
         xfs_io -c 'pwrite -b 4k 0 10M' -f 10MBfile
    2. Reflink  it
         reflink -f 10MBfile reflnktest
    3. Punch a hole at starting at cluster boundary  with range greater that
    1MB. You can also use a range that will put the end offset in another
    extent.
         fallocate -p -o 0 -l 1048615 reflnktest
    4. sync
    5. Check the  first cluster in the source file. (It will be zeroed out).
        dd if=10MBfile iflag=direct bs=<cluster size> count=1 | hexdump -C
    
    Link: http://lkml.kernel.org/r/1470957147-14185-1-git-send-email-ashish.samant@oracle.com
    Signed-off-by: Ashish Samant <ashish.samant@oracle.com>
    Reported-by: Saar Maoz <saar.maoz@oracle.com>
    Reviewed-by: Srinivas Eeda <srinivas.eeda@oracle.com>
    Cc: Mark Fasheh <mfasheh@suse.de>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <joseph.qi@huawei.com>
    Cc: Eric Ren <zren@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 783a2e4b968707e15dd6c39c30003b4bc3c4ea0d
Author: Joseph Qi <joseph.qi@huawei.com>
Date:   Mon Sep 19 14:43:55 2016 -0700

    ocfs2/dlm: fix race between convert and migration
    
    commit e6f0c6e6170fec175fe676495f29029aecdf486c upstream.
    
    Commit ac7cf246dfdb ("ocfs2/dlm: fix race between convert and recovery")
    checks if lockres master has changed to identify whether new master has
    finished recovery or not.  This will introduce a race that right after
    old master does umount ( means master will change), a new convert
    request comes.
    
    In this case, it will reset lockres state to DLM_RECOVERING and then
    retry convert, and then fail with lockres->l_action being set to
    OCFS2_AST_INVALID, which will cause inconsistent lock level between
    ocfs2 and dlm, and then finally BUG.
    
    Since dlm recovery will clear lock->convert_pending in
    dlm_move_lockres_to_recovery_list, we can use it to correctly identify
    the race case between convert and recovery.  So fix it.
    
    Fixes: ac7cf246dfdb ("ocfs2/dlm: fix race between convert and recovery")
    Link: http://lkml.kernel.org/r/57CE1569.8010704@huawei.com
    Signed-off-by: Joseph Qi <joseph.qi@huawei.com>
    Signed-off-by: Jun Piao <piaojun@huawei.com>
    Cc: Mark Fasheh <mfasheh@suse.de>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 749d0c9720607e8c85dc0323659fde9a53cd2e1f
Author: Ilan Tayari <ilant@mellanox.com>
Date:   Sun Sep 18 07:42:53 2016 +0000

    xfrm: Fix memory leak of aead algorithm name
    
    commit b588479358ce26f32138e0f0a7ab0678f8e3e601 upstream.
    
    commit 1a6509d99122 ("[IPSEC]: Add support for combined mode algorithms")
    introduced aead. The function attach_aead kmemdup()s the algorithm
    name during xfrm_state_construct().
    However this memory is never freed.
    Implementation has since been slightly modified in
    commit ee5c23176fcc ("xfrm: Clone states properly on migration")
    without resolving this leak.
    This patch adds a kfree() call for the aead algorithm name.
    
    Fixes: 1a6509d99122 ("[IPSEC]: Add support for combined mode algorithms")
    Signed-off-by: Ilan Tayari <ilant@mellanox.com>
    Acked-by: Rami Rosen <roszenrami@gmail.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 801cbc88bdfa268dcd888163e2983c802cbc853a
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Sep 17 12:57:24 2016 -0700

    openrisc: fix the fix of copy_from_user()
    
    commit 8e4b72054f554967827e18be1de0e8122e6efc04 upstream.
    
    Since commit acb2505d0119 ("openrisc: fix copy_from_user()"),
    copy_from_user() returns the number of bytes requested, not the
    number of bytes not copied.
    
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Fixes: acb2505d0119 ("openrisc: fix copy_from_user()")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fcb587770f0cef0c6ebe0c087769f50e8f7197cf
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Sep 17 07:52:49 2016 -0700

    avr32: fix 'undefined reference to `___copy_from_user'
    
    commit 65c0044ca8d7c7bbccae37f0ff2972f0210e9f41 upstream.
    
    avr32 builds fail with:
    
    arch/avr32/kernel/built-in.o: In function `arch_ptrace':
    (.text+0x650): undefined reference to `___copy_from_user'
    arch/avr32/kernel/built-in.o:(___ksymtab+___copy_from_user+0x0): undefined
    reference to `___copy_from_user'
    kernel/built-in.o: In function `proc_doulongvec_ms_jiffies_minmax':
    (.text+0x5dd8): undefined reference to `___copy_from_user'
    kernel/built-in.o: In function `proc_dointvec_minmax_sysadmin':
    sysctl.c:(.text+0x6174): undefined reference to `___copy_from_user'
    kernel/built-in.o: In function `ptrace_has_cap':
    ptrace.c:(.text+0x69c0): undefined reference to `___copy_from_user'
    kernel/built-in.o:ptrace.c:(.text+0x6b90): more undefined references to
    `___copy_from_user' follow
    
    Fixes: 8630c32275ba ("avr32: fix copy_from_user()")
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Acked-by: Havard Skinnemoen <hskinnemoen@gmail.com>
    Acked-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5b673d345f17cbad2fc9b15783ca8d0e0682db3f
Author: phil.turnbull@oracle.com <phil.turnbull@oracle.com>
Date:   Thu Sep 15 12:41:44 2016 -0400

    irda: Free skb on irda_accept error path.
    
    commit 8ab86c00e349cef9fb14719093a7f198bcc72629 upstream.
    
    skb is not freed if newsk is NULL. Rework the error path so free_skb is
    unconditionally called on function exit.
    
    Fixes: c3ea9fa27413 ("[IrDA] af_irda: IRDA_ASSERT cleanups")
    Signed-off-by: Phil Turnbull <phil.turnbull@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a289c65ca49d2680a3d797e633e57a45573d1df2
Author: Alex Vesker <valex@mellanox.com>
Date:   Mon Sep 12 09:55:28 2016 +0300

    IB/ipoib: Don't allow MC joins during light MC flush
    
    commit 344bacca8cd811809fc33a249f2738ab757d327f upstream.
    
    This fix solves a race between light flush and on the fly joins.
    Light flush doesn't set the device to down and unset IPOIB_OPER_UP
    flag, this means that if while flushing we have a MC join in progress
    and the QP was attached to BC MGID we can have a mismatches when
    re-attaching a QP to the BC MGID.
    
    The light flush would set the broadcast group to NULL causing an on
    the fly join to rejoin and reattach to the BC MCG as well as adding
    the BC MGID to the multicast list. The flush process would later on
    remove the BC MGID and detach it from the QP. On the next flush
    the BC MGID is present in the multicast list but not found when trying
    to detach it because of the previous double attach and single detach.
    
    [18332.714265] ------------[ cut here ]------------
    [18332.717775] WARNING: CPU: 6 PID: 3767 at drivers/infiniband/core/verbs.c:280 ib_dealloc_pd+0xff/0x120 [ib_core]
    ...
    [18332.775198] Hardware name: Red Hat KVM, BIOS Bochs 01/01/2011
    [18332.779411]  0000000000000000 ffff8800b50dfbb0 ffffffff813fed47 0000000000000000
    [18332.784960]  0000000000000000 ffff8800b50dfbf0 ffffffff8109add1 0000011832f58300
    [18332.790547]  ffff880226a596c0 ffff880032482000 ffff880032482830 ffff880226a59280
    [18332.796199] Call Trace:
    [18332.798015]  [<ffffffff813fed47>] dump_stack+0x63/0x8c
    [18332.801831]  [<ffffffff8109add1>] __warn+0xd1/0xf0
    [18332.805403]  [<ffffffff8109aebd>] warn_slowpath_null+0x1d/0x20
    [18332.809706]  [<ffffffffa025d90f>] ib_dealloc_pd+0xff/0x120 [ib_core]
    [18332.814384]  [<ffffffffa04f3d7c>] ipoib_transport_dev_cleanup+0xfc/0x1d0 [ib_ipoib]
    [18332.820031]  [<ffffffffa04ed648>] ipoib_ib_dev_cleanup+0x98/0x110 [ib_ipoib]
    [18332.825220]  [<ffffffffa04e62c8>] ipoib_dev_cleanup+0x2d8/0x550 [ib_ipoib]
    [18332.830290]  [<ffffffffa04e656f>] ipoib_uninit+0x2f/0x40 [ib_ipoib]
    [18332.834911]  [<ffffffff81772a8a>] rollback_registered_many+0x1aa/0x2c0
    [18332.839741]  [<ffffffff81772bd1>] rollback_registered+0x31/0x40
    [18332.844091]  [<ffffffff81773b18>] unregister_netdevice_queue+0x48/0x80
    [18332.848880]  [<ffffffffa04f489b>] ipoib_vlan_delete+0x1fb/0x290 [ib_ipoib]
    [18332.853848]  [<ffffffffa04df1cd>] delete_child+0x7d/0xf0 [ib_ipoib]
    [18332.858474]  [<ffffffff81520c08>] dev_attr_store+0x18/0x30
    [18332.862510]  [<ffffffff8127fe4a>] sysfs_kf_write+0x3a/0x50
    [18332.866349]  [<ffffffff8127f4e0>] kernfs_fop_write+0x120/0x170
    [18332.870471]  [<ffffffff81207198>] __vfs_write+0x28/0xe0
    [18332.874152]  [<ffffffff810e09bf>] ? percpu_down_read+0x1f/0x50
    [18332.878274]  [<ffffffff81208062>] vfs_write+0xa2/0x1a0
    [18332.881896]  [<ffffffff812093a6>] SyS_write+0x46/0xa0
    [18332.885632]  [<ffffffff810039b7>] do_syscall_64+0x57/0xb0
    [18332.889709]  [<ffffffff81883321>] entry_SYSCALL64_slow_path+0x25/0x25
    [18332.894727] ---[ end trace 09ebbe31f831ef17 ]---
    
    Fixes: ee1e2c82c245 ("IPoIB: Refresh paths instead of flushing them on SM change events")
    Signed-off-by: Alex Vesker <valex@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0823893b345bd6052ae76ecb9ca06cc39d54c89d
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Sep 16 10:24:26 2016 -0400

    USB: change bInterval default to 10 ms
    
    commit 08c5cd37480f59ea39682f4585d92269be6b1424 upstream.
    
    Some full-speed mceusb infrared transceivers contain invalid endpoint
    descriptors for their interrupt endpoints, with bInterval set to 0.
    In the past they have worked out okay with the mceusb driver, because
    the driver sets the bInterval field in the descriptor to 1,
    overwriting whatever value may have been there before.  However, this
    approach was never sanctioned by the USB core, and in fact it does not
    work with xHCI controllers, because they use the bInterval value that
    was present when the configuration was installed.
    
    Currently usbcore uses 32 ms as the default interval if the value in
    the endpoint descriptor is invalid.  It turns out that these IR
    transceivers don't work properly unless the interval is set to 10 ms
    or below.  To work around this mceusb problem, this patch changes the
    endpoint-descriptor parsing routine, making the default interval value
    be 10 ms rather than 32 ms.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Tested-by: Wade Berrier <wberrier@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2932d54120f2642568c77608bc8753e9114f9647
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Sep 9 19:28:23 2016 -0400

    avr32: fix copy_from_user()
    
    commit 8630c32275bac2de6ffb8aea9d9b11663e7ad28e upstream.
    
    really ugly, but apparently avr32 compilers turns access_ok() into
    something so bad that they want it in assembler.  Left that way,
    zeroing added in inline wrapper.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e17dc9d350ba0dfc8662b4fb968c1a32d600d27b
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Sep 9 19:23:33 2016 -0400

    microblaze: fix __get_user()
    
    commit e98b9e37ae04562d52c96f46b3cf4c2e80222dc1 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f5f944fb34661325716158eaafcd518e16a1f7cc
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Sep 9 19:22:34 2016 -0400

    microblaze: fix copy_from_user()
    
    commit d0cf385160c12abd109746cad1f13e3b3e8b50b8 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f69350b23246c539a012f58b5f8242cb18a4a813
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Sep 9 19:20:13 2016 -0400

    m32r: fix __get_user()
    
    commit c90a3bc5061d57e7931a9b7ad14784e1a0ed497d upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e61ab39499124b30960985a32d5435bba3076905
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Sep 9 19:16:58 2016 -0400

    blackfin: fix copy_from_user()
    
    commit 8f035983dd826d7e04f67b28acf8e2f08c347e41 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e258d3404fe81d8dd51a9a5e1b0312bfbb732d31
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Aug 22 00:23:07 2016 -0400

    sparc32: fix copy_from_user()
    
    commit 917400cecb4b52b5cde5417348322bb9c8272fa6 upstream.
    
    Acked-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6089b5ee9c5f2de2bae342da15afe8d4124b9ebe
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Aug 21 23:39:47 2016 -0400

    sh: fix copy_from_user()
    
    commit 6e050503a150b2126620c1a1e9b3a368fcd51eac upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 264a03512d38ad22ba58ba06817f46506246309e
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Aug 21 23:33:47 2016 -0400

    sh64: failing __get_user() should zero
    
    commit c6852389228df9fb3067f94f3b651de2a7921b36 upstream.
    
    It could be done in exception-handling bits in __get_user_b() et.al.,
    but the surgery involved would take more knowledge of sh64 details
    than I have or _want_ to have.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b33c94f21178581f0e2f3d8769bc51e33fc04936
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Aug 21 22:30:44 2016 -0400

    score: fix copy_from_user() and friends
    
    commit b615e3c74621e06cd97f86373ca90d43d6d998aa upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 15bf8ad3b184e11f847bdd780e60dc898175a855
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Aug 21 22:13:39 2016 -0400

    score: fix __get_user/get_user
    
    commit c2f18fa4cbb3ad92e033a24efa27583978ce9600 upstream.
    
    * should zero on any failure
    * __get_user() should use __copy_from_user(), not copy_from_user()
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f806d6efc35bb68ec078f4e8ddf691c6404b9f52
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Aug 21 22:00:54 2016 -0400

    s390: get_user() should zero on failure
    
    commit fd2d2b191fe75825c4c7a6f12f3fef35aaed7dd7 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 040793b49fd39f00afebc0a1d6870f247ddb9a43
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Aug 21 19:16:26 2016 -0400

    ppc32: fix copy_from_user()
    
    commit 224264657b8b228f949b42346e09ed8c90136a8e upstream.
    
    should clear on access_ok() failures.  Also remove the useless
    range truncation logics.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: no calls to check_object_size()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 843b3708161cec9073aad1c7b7a09770fa552fec
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Aug 20 19:03:37 2016 -0400

    parisc: fix copy_from_user()
    
    commit aace880feea38875fbc919761b77e5732a3659ef upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6882b9a54f40f23f8b10f5b7df411cad3b52c5a7
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Aug 20 17:05:21 2016 -0400

    openrisc: fix copy_from_user()
    
    commit acb2505d0119033a80c85ac8d02dccae41271667 upstream.
    
    ... that should zero on faults.  Also remove the <censored> helpful
    logics wrt range truncation copied from ppc32.  Where it had ever
    been needed only in case of copy_from_user() *and* had not been merged
    into the mainline until a month after the need had disappeared.
    A decade before openrisc went into mainline, I might add...
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3229d77d0d4334006ec18bff909b5913512bb1a9
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Aug 20 16:33:10 2016 -0400

    mn10300: copy_from_user() should zero on access_ok() failure...
    
    commit ae7cc577ec2a4a6151c9e928fd1f595d953ecef1 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: include <linux/string.h> to get declaration of memset()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 237ea27c829a518ef0429e0ce95b112700a4fe13
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sat Aug 20 16:32:02 2016 -0400

    mn10300: failing __get_user() and get_user() should zero
    
    commit 43403eabf558d2800b429cd886e996fd555aa542 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6238800796e9581f7e3bbaed9c116f24110ce80a
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Aug 18 21:31:41 2016 -0400

    ia64: copy_from_user() should zero the destination on access_ok() failure
    
    commit a5e541f796f17228793694d64b507f5f57db4cd7 upstream.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: no calls to check_object_size()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d848857e80ab89474c7686d6a32d7ee594f0b706
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Aug 18 21:16:49 2016 -0400

    hexagon: fix strncpy_from_user() error return
    
    commit f35c1e0671728d1c9abc405d05ef548b5fcb2fc4 upstream.
    
    It's -EFAULT, not -1 (and contrary to the comment in there,
    __strnlen_user() can return 0 - on faults).
    
    Acked-by: Richard Kuo <rkuo@codeaurora.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fd435487db729e9485f3edcd3963fcc23054195f
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Aug 18 20:54:02 2016 -0400

    frv: fix clear_user()
    
    commit 3b8767a8f00cc6538ba6b1cf0f88502e2fd2eb90 upstream.
    
    It should check access_ok().  Otherwise a bunch of places turn into
    trivially exploitable rootholes.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a1599d819d3dd1a50d1c11bc9cb8e5d751086f64
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Aug 18 19:34:00 2016 -0400

    cris: buggered copy_from_user/copy_to_user/clear_user
    
    commit eb47e0293baaa3044022059f1fa9ff474bfe35cb upstream.
    
    * copy_from_user() on access_ok() failure ought to zero the destination
    * none of those primitives should skip the access_ok() check in case of
    small constant size.
    
    Acked-by: Jesper Nilsson <jesper.nilsson@axis.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 33734b78269e1d211cd1288c49756636042aa31e
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed Aug 17 23:19:01 2016 -0400

    asm-generic: make get_user() clear the destination on errors
    
    commit 9ad18b75c2f6e4a78ce204e79f37781f8815c0fa upstream.
    
    both for access_ok() failures and for faults halfway through
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 87f3c8956e3fea2a704c3834e0666e8fae5a529e
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Tue Sep 13 14:43:29 2016 +0800

    crypto: skcipher - Fix blkcipher walk OOM crash
    
    commit acdb04d0b36769b3e05990c488dc74d8b7ac8060 upstream.
    
    When we need to allocate a temporary blkcipher_walk_next and it
    fails, the code is supposed to take the slow path of processing
    the data block by block.  However, due to an unrelated change
    we instead end up dereferencing the NULL pointer.
    
    This patch fixes it by moving the unrelated bsize setting out
    of the way so that we enter the slow path as inteded.
    
    Fixes: 7607bd8ff03b ("[CRYPTO] blkcipher: Added blkcipher_walk_virt_block")
    Reported-by: xiakaixu <xiakaixu@huawei.com>
    Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    [bwh: Backported to 3.2: s/walk_blocksize/blocksize/]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b9590db438694507e4460abaff3340483bdcd7d7
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Tue Sep 6 14:34:05 2016 +0100

    ARM: sa1111: fix pcmcia suspend/resume
    
    commit 06dfe5cc0cc684e735cb0232fdb756d30780b05d upstream.
    
    SA1111 PCMCIA was broken when PCMCIA switched to using dev_pm_ops for
    the PCMCIA socket class.  PCMCIA used to handle suspend/resume via the
    socket hosting device, which happened at normal device suspend/resume
    time.
    
    However, the referenced commit changed this: much of the resume now
    happens much earlier, in the noirq resume handler of dev_pm_ops.
    
    However, on SA1111, the PCMCIA device is not accessible as the SA1111
    has not been resumed at _noirq time.  It's slightly worse than that,
    because the SA1111 has already been put to sleep at _noirq time, so
    suspend doesn't work properly.
    
    Fix this by converting the core SA1111 code to use dev_pm_ops as well,
    and performing its own suspend/resume at noirq time.
    
    This fixes these errors in the kernel log:
    
    pcmcia_socket pcmcia_socket0: time out after reset
    pcmcia_socket pcmcia_socket1: time out after reset
    
    and the resulting lack of PCMCIA cards after a S2RAM cycle.
    
    Fixes: d7646f7632549 ("pcmcia: use dev_pm_ops for class pcmcia_socket_class")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f20eed46d579e49d0de3cd278e0aef3d99034bdc
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Sun Sep 11 14:50:01 2016 -0400

    NFSv4.1: Fix the CREATE_SESSION slot number accounting
    
    commit b519d408ea32040b1c7e10b155a3ee9a36660947 upstream.
    
    Ensure that we conform to the algorithm described in RFC5661, section
    18.36.4 for when to bump the sequence id. In essence we do it for all
    cases except when the RPC call timed out, or in case of the server returning
    NFS4ERR_DELAY or NFS4ERR_STALE_CLIENTID.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    [bwh: Backported to 3.2:
     - Add the 'out' label
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit acf46003d6c037bdfff3025c38c412652801e708
Author: Karl Beldan <kbeldan@baylibre.com>
Date:   Mon Aug 29 07:45:49 2016 +0000

    mtd: nand: davinci: Reinitialize the HW ECC engine in 4bit hwctl
    
    commit f6d7c1b5598b6407c3f1da795dd54acf99c1990c upstream.
    
    This fixes subpage writes when using 4-bit HW ECC.
    
    There has been numerous reports about ECC errors with devices using this
    driver for a while.  Also the 4-bit ECC has been reported as broken with
    subpages in [1] and with 16 bits NANDs in the driver and in mach* board
    files both in mainline and in the vendor BSPs.
    
    What I saw with 4-bit ECC on a 16bits NAND (on an LCDK) which got me to
    try reinitializing the ECC engine:
    - R/W on whole pages properly generates/checks RS code
    - try writing the 1st subpage only of a blank page, the subpage is well
      written and the RS code properly generated, re-reading the same page
      the HW detects some ECC error, reading the same page again no ECC
      error is detected
    
    Note that the ECC engine is already reinitialized in the 1-bit case.
    
    Tested on my LCDK with UBI+UBIFS using subpages.
    This could potentially get rid of the issue workarounded in [1].
    
    [1] 28c015a9daab ("mtd: davinci-nand: disable subpage write for keystone-nand")
    
    Fixes: 6a4123e581b3 ("mtd: nand: davinci_nand, 4-bit ECC for smallpage")
    Signed-off-by: Karl Beldan <kbeldan@baylibre.com>
    Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 263fd98a0f2c8bb934ac2a25d97f9913378a4803
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed Aug 17 16:36:37 2016 -0400

    asm-generic: make copy_from_user() zero the destination properly
    
    commit 2545e5da080b4839dd859e3b09343a884f6ab0e3 upstream.
    
    ... in all cases, including the failing access_ok()
    
    Note that some architectures using asm-generic/uaccess.h have
    __copy_from_user() not zeroing the tail on failure halfway
    through.  This variant works either way.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 536e7d5ea02825c12e64356149a1f4c6691efd7b
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed Aug 17 16:02:32 2016 -0400

    alpha: fix copy_from_user()
    
    commit 2561d309dfd1555e781484af757ed0115035ddb3 upstream.
    
    it should clear the destination even when access_ok() fails.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 02945b7d4b6ecb3116b51dc108899159f55d4d25
Author: Mathias Krause <minipli@googlemail.com>
Date:   Thu Sep 8 18:09:57 2016 +0200

    xfrm_user: propagate sec ctx allocation errors
    
    commit 2f30ea5090cbc57ea573cdc66421264b3de3fb0a upstream.
    
    When we fail to attach the security context in xfrm_state_construct()
    we'll return 0 as error value which, in turn, will wrongly claim success
    to userland when, in fact, we won't be adding / updating the XFRM state.
    
    This is a regression introduced by commit fd21150a0fe1 ("[XFRM] netlink:
    Inline attach_encap_tmpl(), attach_sec_ctx(), and attach_one_addr()").
    
    Fix it by propagating the error returned by security_xfrm_state_alloc()
    in this case.
    
    Fixes: fd21150a0fe1 ("[XFRM] netlink: Inline attach_encap_tmpl()...")
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Cc: Thomas Graf <tgraf@suug.ch>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 18d403ac8abe1afec0099176d5f7bed6174a2d31
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Aug 30 14:45:46 2016 +0200

    ALSA: rawmidi: Fix possible deadlock with virmidi registration
    
    commit 816f318b2364262a51024096da7ca3b84e78e3b5 upstream.
    
    When a seq-virmidi driver is initialized, it registers a rawmidi
    instance with its callback to create an associated seq kernel client.
    Currently it's done throughly in rawmidi's register_mutex context.
    Recently it was found that this may lead to a deadlock another rawmidi
    device that is being attached with the sequencer is accessed, as both
    open with the same register_mutex.  This was actually triggered by
    syzkaller, as Dmitry Vyukov reported:
    
    ======================================================
     [ INFO: possible circular locking dependency detected ]
     4.8.0-rc1+ #11 Not tainted
     -------------------------------------------------------
     syz-executor/7154 is trying to acquire lock:
      (register_mutex#5){+.+.+.}, at: [<ffffffff84fd6d4b>] snd_rawmidi_kernel_open+0x4b/0x260 sound/core/rawmidi.c:341
    
     but task is already holding lock:
      (&grp->list_mutex){++++.+}, at: [<ffffffff850138bb>] check_and_subscribe_port+0x5b/0x5c0 sound/core/seq/seq_ports.c:495
    
     which lock already depends on the new lock.
    
     the existing dependency chain (in reverse order) is:
    
     -> #1 (&grp->list_mutex){++++.+}:
        [<ffffffff8147a3a8>] lock_acquire+0x208/0x430 kernel/locking/lockdep.c:3746
        [<ffffffff863f6199>] down_read+0x49/0xc0 kernel/locking/rwsem.c:22
        [<     inline     >] deliver_to_subscribers sound/core/seq/seq_clientmgr.c:681
        [<ffffffff85005c5e>] snd_seq_deliver_event+0x35e/0x890 sound/core/seq/seq_clientmgr.c:822
        [<ffffffff85006e96>] > snd_seq_kernel_client_dispatch+0x126/0x170 sound/core/seq/seq_clientmgr.c:2418
        [<ffffffff85012c52>] snd_seq_system_broadcast+0xb2/0xf0 sound/core/seq/seq_system.c:101
        [<ffffffff84fff70a>] snd_seq_create_kernel_client+0x24a/0x330 sound/core/seq/seq_clientmgr.c:2297
        [<     inline     >] snd_virmidi_dev_attach_seq sound/core/seq/seq_virmidi.c:383
        [<ffffffff8502d29f>] snd_virmidi_dev_register+0x29f/0x750 sound/core/seq/seq_virmidi.c:450
        [<ffffffff84fd208c>] snd_rawmidi_dev_register+0x30c/0xd40 sound/core/rawmidi.c:1645
        [<ffffffff84f816d3>] __snd_device_register.part.0+0x63/0xc0 sound/core/device.c:164
        [<     inline     >] __snd_device_register sound/core/device.c:162
        [<ffffffff84f8235d>] snd_device_register_all+0xad/0x110 sound/core/device.c:212
        [<ffffffff84f7546f>] snd_card_register+0xef/0x6c0 sound/core/init.c:749
        [<ffffffff85040b7f>] snd_virmidi_probe+0x3ef/0x590 sound/drivers/virmidi.c:123
        [<ffffffff833ebf7b>] platform_drv_probe+0x8b/0x170 drivers/base/platform.c:564
        ......
    
     -> #0 (register_mutex#5){+.+.+.}:
        [<     inline     >] check_prev_add kernel/locking/lockdep.c:1829
        [<     inline     >] check_prevs_add kernel/locking/lockdep.c:1939
        [<     inline     >] validate_chain kernel/locking/lockdep.c:2266
        [<ffffffff814791f4>] __lock_acquire+0x4d44/0x4d80 kernel/locking/lockdep.c:3335
        [<ffffffff8147a3a8>] lock_acquire+0x208/0x430 kernel/locking/lockdep.c:3746
        [<     inline     >] __mutex_lock_common kernel/locking/mutex.c:521
        [<ffffffff863f0ef1>] mutex_lock_nested+0xb1/0xa20 kernel/locking/mutex.c:621
        [<ffffffff84fd6d4b>] snd_rawmidi_kernel_open+0x4b/0x260 sound/core/rawmidi.c:341
        [<ffffffff8502e7c7>] midisynth_subscribe+0xf7/0x350 sound/core/seq/seq_midi.c:188
        [<     inline     >] subscribe_port sound/core/seq/seq_ports.c:427
        [<ffffffff85013cc7>] check_and_subscribe_port+0x467/0x5c0 sound/core/seq/seq_ports.c:510
        [<ffffffff85015da9>] snd_seq_port_connect+0x2c9/0x500 sound/core/seq/seq_ports.c:579
        [<ffffffff850079b8>] snd_seq_ioctl_subscribe_port+0x1d8/0x2b0 sound/core/seq/seq_clientmgr.c:1480
        [<ffffffff84ffe9e4>] snd_seq_do_ioctl+0x184/0x1e0 sound/core/seq/seq_clientmgr.c:2225
        [<ffffffff84ffeae8>] snd_seq_kernel_client_ctl+0xa8/0x110 sound/core/seq/seq_clientmgr.c:2440
        [<ffffffff85027664>] snd_seq_oss_midi_open+0x3b4/0x610 sound/core/seq/oss/seq_oss_midi.c:375
        [<ffffffff85023d67>] snd_seq_oss_synth_setup_midi+0x107/0x4c0 sound/core/seq/oss/seq_oss_synth.c:281
        [<ffffffff8501b0a8>] snd_seq_oss_open+0x748/0x8d0 sound/core/seq/oss/seq_oss_init.c:274
        [<ffffffff85019d8a>] odev_open+0x6a/0x90 sound/core/seq/oss/seq_oss.c:138
        [<ffffffff84f7040f>] soundcore_open+0x30f/0x640 sound/sound_core.c:639
        ......
    
     other info that might help us debug this:
    
     Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock(&grp->list_mutex);
                                    lock(register_mutex#5);
                                    lock(&grp->list_mutex);
       lock(register_mutex#5);
    
     *** DEADLOCK ***
    ======================================================
    
    The fix is to simply move the registration parts in
    snd_rawmidi_dev_register() to the outside of the register_mutex lock.
    The lock is needed only to manage the linked list, and it's not
    necessarily to cover the whole initialization process.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cf1533f9669664757084a09ed37695d9fe1d14c9
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Sep 7 15:45:31 2016 +0200

    ALSA: timer: Fix zero-division by continue of uninitialized instance
    
    commit 9f8a7658bcafb2a7853f7a2eae8a94e87e6e695b upstream.
    
    When a user timer instance is continued without the explicit start
    beforehand, the system gets eventually zero-division error like:
    
      divide error: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN
      CPU: 1 PID: 27320 Comm: syz-executor Not tainted 4.8.0-rc3-next-20160825+ #8
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
       task: ffff88003c9b2280 task.stack: ffff880027280000
       RIP: 0010:[<ffffffff858e1a6c>]  [<     inline     >] ktime_divns include/linux/ktime.h:195
       RIP: 0010:[<ffffffff858e1a6c>]  [<ffffffff858e1a6c>] snd_hrtimer_callback+0x1bc/0x3c0 sound/core/hrtimer.c:62
      Call Trace:
       <IRQ>
       [<     inline     >] __run_hrtimer kernel/time/hrtimer.c:1238
       [<ffffffff81504335>] __hrtimer_run_queues+0x325/0xe70 kernel/time/hrtimer.c:1302
       [<ffffffff81506ceb>] hrtimer_interrupt+0x18b/0x420 kernel/time/hrtimer.c:1336
       [<ffffffff8126d8df>] local_apic_timer_interrupt+0x6f/0xe0 arch/x86/kernel/apic/apic.c:933
       [<ffffffff86e13056>] smp_apic_timer_interrupt+0x76/0xa0 arch/x86/kernel/apic/apic.c:957
       [<ffffffff86e1210c>] apic_timer_interrupt+0x8c/0xa0 arch/x86/entry/entry_64.S:487
       <EOI>
       .....
    
    Although a similar issue was spotted and a fix patch was merged in
    commit [6b760bb2c63a: ALSA: timer: fix division by zero after
    SNDRV_TIMER_IOCTL_CONTINUE], it seems covering only a part of
    iceberg.
    
    In this patch, we fix the issue a bit more drastically.  Basically the
    continue of an uninitialized timer is supposed to be a fresh start, so
    we do it for user timers.  For the direct snd_timer_continue() call,
    there is no way to pass the initial tick value, so we kick out for the
    uninitialized case.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.2:
     - Adjust context
     - In _snd_timer_stop(), check the value of 'event' instead of 'stop']
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    ALSA: timer: Code cleanup
    
    commit c3b1681375dc6e71d89a3ae00cc3ce9e775a8917 upstream.
    
    This is a minor code cleanup without any functional changes:
    - Kill keep_flag argument from _snd_timer_stop(), as all callers pass
      only it false.
    - Remove redundant NULL check in _snd_timer_stop().
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.2: adjust to apply after previously backported
     "ALSA: timer: Fix race between stop and interrupt"]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0a9c9f4c380d57954574e8682c04b850eed7c15d
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Thu Sep 1 14:25:43 2016 +0100

    crypto: cryptd - initialize child shash_desc on import
    
    commit 0bd2223594a4dcddc1e34b15774a3a4776f7749e upstream.
    
    When calling .import() on a cryptd ahash_request, the structure members
    that describe the child transform in the shash_desc need to be initialized
    like they are when calling .init()
    
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b0f819c3e20d712d4cd38e4bb3ddb3e90ca8fbad
Author: Balbir Singh <bsingharora@gmail.com>
Date:   Mon Sep 5 13:16:40 2016 +1000

    sched/core: Fix a race between try_to_wake_up() and a woken up task
    
    commit 135e8c9250dd5c8c9aae5984fde6f230d0cbfeaf upstream.
    
    The origin of the issue I've seen is related to
    a missing memory barrier between check for task->state and
    the check for task->on_rq.
    
    The task being woken up is already awake from a schedule()
    and is doing the following:
    
            do {
                    schedule()
                    set_current_state(TASK_(UN)INTERRUPTIBLE);
            } while (!cond);
    
    The waker, actually gets stuck doing the following in
    try_to_wake_up():
    
            while (p->on_cpu)
                    cpu_relax();
    
    Analysis:
    
    The instance I've seen involves the following race:
    
     CPU1                                   CPU2
    
     while () {
       if (cond)
         break;
       do {
         schedule();
         set_current_state(TASK_UN..)
       } while (!cond);
                                            wakeup_routine()
                                              spin_lock_irqsave(wait_lock)
       raw_spin_lock_irqsave(wait_lock)       wake_up_process()
     }                                        try_to_wake_up()
     set_current_state(TASK_RUNNING);         ..
     list_del(&waiter.list);
    
    CPU2 wakes up CPU1, but before it can get the wait_lock and set
    current state to TASK_RUNNING the following occurs:
    
     CPU3
     wakeup_routine()
     raw_spin_lock_irqsave(wait_lock)
     if (!list_empty)
       wake_up_process()
       try_to_wake_up()
       raw_spin_lock_irqsave(p->pi_lock)
       ..
       if (p->on_rq && ttwu_wakeup())
       ..
       while (p->on_cpu)
         cpu_relax()
       ..
    
    CPU3 tries to wake up the task on CPU1 again since it finds
    it on the wait_queue, CPU1 is spinning on wait_lock, but immediately
    after CPU2, CPU3 got it.
    
    CPU3 checks the state of p on CPU1, it is TASK_UNINTERRUPTIBLE and
    the task is spinning on the wait_lock. Interestingly since p->on_rq
    is checked under pi_lock, I've noticed that try_to_wake_up() finds
    p->on_rq to be 0. This was the most confusing bit of the analysis,
    but p->on_rq is changed under runqueue lock, rq_lock, the p->on_rq
    check is not reliable without this fix IMHO. The race is visible
    (based on the analysis) only when ttwu_queue() does a remote wakeup
    via ttwu_queue_remote. In which case the p->on_rq change is not
    done uder the pi_lock.
    
    The result is that after a while the entire system locks up on
    the raw_spin_irqlock_save(wait_lock) and the holder spins infintely
    
    Reproduction of the issue:
    
    The issue can be reproduced after a long run on my system with 80
    threads and having to tweak available memory to very low and running
    memory stress-ng mmapfork test. It usually takes a long time to
    reproduce. I am trying to work on a test case that can reproduce
    the issue faster, but thats work in progress. I am still testing the
    changes on my still in a loop and the tests seem OK thus far.
    
    Big thanks to Benjamin and Nick for helping debug this as well.
    Ben helped catch the missing barrier, Nick caught every missing
    bit in my theory.
    
    Signed-off-by: Balbir Singh <bsingharora@gmail.com>
    [ Updated comment to clarify matching barriers. Many
      architectures do not have a full barrier in switch_to()
      so that cannot be relied upon. ]
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Nicholas Piggin <nicholas.piggin@gmail.com>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/e02cce7b-d9ca-1ad0-7a61-ea97c7582b37@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit adce3b19692f0d3a9899834511a44290efa90731
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Thu Sep 1 11:44:35 2016 +0200

    iio: accel: kxsd9: Fix scaling bug
    
    commit 307fe9dd11ae44d4f8881ee449a7cbac36e1f5de upstream.
    
    All the scaling of the KXSD9 involves multiplication with a
    fraction number < 1.
    
    However the scaling value returned from IIO_INFO_SCALE was
    unpredictable as only the micros of the value was assigned, and
    not the integer part, resulting in scaling like this:
    
    $cat in_accel_scale
    -1057462640.011978
    
    Fix this by assigning zero to the integer part.
    
    Tested-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8391d8964e605454e5da7c248128dac672d80173
Author: Erez Shitrit <erezsh@mellanox.com>
Date:   Sun Aug 28 10:58:31 2016 +0300

    IB/ipoib: Fix memory corruption in ipoib cm mode connect flow
    
    commit 546481c2816ea3c061ee9d5658eb48070f69212e upstream.
    
    When a new CM connection is being requested, ipoib driver copies data
    from the path pointer in the CM/tx object, the path object might be
    invalid at the point and memory corruption will happened later when now
    the CM driver will try using that data.
    
    The next scenario demonstrates it:
            neigh_add_path --> ipoib_cm_create_tx -->
            queue_work (pointer to path is in the cm/tx struct)
            #while the work is still in the queue,
            #the port goes down and causes the ipoib_flush_paths:
            ipoib_flush_paths --> path_free --> kfree(path)
            #at this point the work scheduled starts.
            ipoib_cm_tx_start --> copy from the (invalid)path pointer:
            (memcpy(&pathrec, &p->path->pathrec, sizeof pathrec);)
             -> memory corruption.
    
    To fix that the driver now starts the CM/tx connection only if that
    specific path exists in the general paths database.
    This check is protected with the relevant locks, and uses the gid from
    the neigh member in the CM/tx object which is valid according to the ref
    count that was taken by the CM/tx.
    
    Fixes: 839fcaba35 ('IPoIB: Connected mode experimental support')
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.2: s/neigh->daddr/neigh->neighbour->ha/]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 59079b3ffccd4844a1e866cdf5076d0b38b520f5
Author: Erez Shitrit <erezsh@mellanox.com>
Date:   Sun Aug 28 10:58:30 2016 +0300

    IB/core: Fix use after free in send_leave function
    
    commit 68c6bcdd8bd00394c234b915ab9b97c74104130c upstream.
    
    The function send_leave sets the member: group->query_id
    (group->query_id = ret) after calling the sa_query, but leave_handler
    can be executed before the setting and it might delete the group object,
    and will get a memory corruption.
    
    Additionally, this patch gets rid of group->query_id variable which is
    not used.
    
    Fixes: faec2f7b96b5 ('IB/sa: Track multicast join/leave requests')
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 51017990da152ae5e9bd9edba20f709a7211623e
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Wed May 25 13:47:26 2016 -0400

    x86/paravirt: Do not trace _paravirt_ident_*() functions
    
    commit 15301a570754c7af60335d094dd2d1808b0641a5 upstream.
    
    Łukasz Daniluk reported that on a RHEL kernel that his machine would lock up
    after enabling function tracer. I asked him to bisect the functions within
    available_filter_functions, which he did and it came down to three:
    
      _paravirt_nop(), _paravirt_ident_32() and _paravirt_ident_64()
    
    It was found that this is only an issue when noreplace-paravirt is added
    to the kernel command line.
    
    This means that those functions are most likely called within critical
    sections of the funtion tracer, and must not be traced.
    
    In newer kenels _paravirt_nop() is defined within gcc asm(), and is no
    longer an issue.  But both _paravirt_ident_{32,64}() causes the
    following splat when they are traced:
    
     mm/pgtable-generic.c:33: bad pmd ffff8800d2435150(0000000001d00054)
     mm/pgtable-generic.c:33: bad pmd ffff8800d3624190(0000000001d00070)
     mm/pgtable-generic.c:33: bad pmd ffff8800d36a5110(0000000001d00054)
     mm/pgtable-generic.c:33: bad pmd ffff880118eb1450(0000000001d00054)
     NMI watchdog: BUG: soft lockup - CPU#2 stuck for 22s! [systemd-journal:469]
     Modules linked in: e1000e
     CPU: 2 PID: 469 Comm: systemd-journal Not tainted 4.6.0-rc4-test+ #513
     Hardware name: Hewlett-Packard HP Compaq Pro 6300 SFF/339A, BIOS K01 v02.05 05/07/2012
     task: ffff880118f740c0 ti: ffff8800d4aec000 task.ti: ffff8800d4aec000
     RIP: 0010:[<ffffffff81134148>]  [<ffffffff81134148>] queued_spin_lock_slowpath+0x118/0x1a0
     RSP: 0018:ffff8800d4aefb90  EFLAGS: 00000246
     RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff88011eb16d40
     RDX: ffffffff82485760 RSI: 000000001f288820 RDI: ffffea0000008030
     RBP: ffff8800d4aefb90 R08: 00000000000c0000 R09: 0000000000000000
     R10: ffffffff821c8e0e R11: 0000000000000000 R12: ffff880000200fb8
     R13: 00007f7a4e3f7000 R14: ffffea000303f600 R15: ffff8800d4b562e0
     FS:  00007f7a4e3d7840(0000) GS:ffff88011eb00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00007f7a4e3f7000 CR3: 00000000d3e71000 CR4: 00000000001406e0
     Call Trace:
       _raw_spin_lock+0x27/0x30
       handle_pte_fault+0x13db/0x16b0
       handle_mm_fault+0x312/0x670
       __do_page_fault+0x1b1/0x4e0
       do_page_fault+0x22/0x30
       page_fault+0x28/0x30
       __vfs_read+0x28/0xe0
       vfs_read+0x86/0x130
       SyS_read+0x46/0xa0
       entry_SYSCALL_64_fastpath+0x1e/0xa8
     Code: 12 48 c1 ea 0c 83 e8 01 83 e2 30 48 98 48 81 c2 40 6d 01 00 48 03 14 c5 80 6a 5d 82 48 89 0a 8b 41 08 85 c0 75 09 f3 90 8b 41 08 <85> c0 74 f7 4c 8b 09 4d 85 c9 74 08 41 0f 18 09 eb 02 f3 90 8b
    
    Reported-by: Łukasz Daniluk <lukasz.daniluk@intel.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4e8918d911f6938fb75708687b7d9ba3899ba291
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Sun Aug 28 10:13:07 2016 +0200

    ALSA: timer: fix NULL pointer dereference in read()/ioctl() race
    
    commit 11749e086b2766cccf6217a527ef5c5604ba069c upstream.
    
    I got this with syzkaller:
    
        ==================================================================
        BUG: KASAN: null-ptr-deref on address 0000000000000020
        Read of size 32 by task syz-executor/22519
        CPU: 1 PID: 22519 Comm: syz-executor Not tainted 4.8.0-rc2+ #169
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2
        014
         0000000000000001 ffff880111a17a00 ffffffff81f9f141 ffff880111a17a90
         ffff880111a17c50 ffff880114584a58 ffff880114584a10 ffff880111a17a80
         ffffffff8161fe3f ffff880100000000 ffff880118d74a48 ffff880118d74a68
        Call Trace:
         [<ffffffff81f9f141>] dump_stack+0x83/0xb2
         [<ffffffff8161fe3f>] kasan_report_error+0x41f/0x4c0
         [<ffffffff8161ff74>] kasan_report+0x34/0x40
         [<ffffffff82c84b54>] ? snd_timer_user_read+0x554/0x790
         [<ffffffff8161e79e>] check_memory_region+0x13e/0x1a0
         [<ffffffff8161e9c1>] kasan_check_read+0x11/0x20
         [<ffffffff82c84b54>] snd_timer_user_read+0x554/0x790
         [<ffffffff82c84600>] ? snd_timer_user_info_compat.isra.5+0x2b0/0x2b0
         [<ffffffff817d0831>] ? proc_fault_inject_write+0x1c1/0x250
         [<ffffffff817d0670>] ? next_tgid+0x2a0/0x2a0
         [<ffffffff8127c278>] ? do_group_exit+0x108/0x330
         [<ffffffff8174653a>] ? fsnotify+0x72a/0xca0
         [<ffffffff81674dfe>] __vfs_read+0x10e/0x550
         [<ffffffff82c84600>] ? snd_timer_user_info_compat.isra.5+0x2b0/0x2b0
         [<ffffffff81674cf0>] ? do_sendfile+0xc50/0xc50
         [<ffffffff81745e10>] ? __fsnotify_update_child_dentry_flags+0x60/0x60
         [<ffffffff8143fec6>] ? kcov_ioctl+0x56/0x190
         [<ffffffff81e5ada2>] ? common_file_perm+0x2e2/0x380
         [<ffffffff81746b0e>] ? __fsnotify_parent+0x5e/0x2b0
         [<ffffffff81d93536>] ? security_file_permission+0x86/0x1e0
         [<ffffffff816728f5>] ? rw_verify_area+0xe5/0x2b0
         [<ffffffff81675355>] vfs_read+0x115/0x330
         [<ffffffff81676371>] SyS_read+0xd1/0x1a0
         [<ffffffff816762a0>] ? vfs_write+0x4b0/0x4b0
         [<ffffffff82001c2c>] ? __this_cpu_preempt_check+0x1c/0x20
         [<ffffffff8150455a>] ? __context_tracking_exit.part.4+0x3a/0x1e0
         [<ffffffff816762a0>] ? vfs_write+0x4b0/0x4b0
         [<ffffffff81005524>] do_syscall_64+0x1c4/0x4e0
         [<ffffffff810052fc>] ? syscall_return_slowpath+0x16c/0x1d0
         [<ffffffff83c3276a>] entry_SYSCALL64_slow_path+0x25/0x25
        ==================================================================
    
    There are a couple of problems that I can see:
    
     - ioctl(SNDRV_TIMER_IOCTL_SELECT), which potentially sets
       tu->queue/tu->tqueue to NULL on memory allocation failure, so read()
       would get a NULL pointer dereference like the above splat
    
     - the same ioctl() can free tu->queue/to->tqueue which means read()
       could potentially see (and dereference) the freed pointer
    
    We can fix both by taking the ioctl_lock mutex when dereferencing
    ->queue/->tqueue, since that's always held over all the ioctl() code.
    
    Just looking at the code I find it likely that there are more problems
    here such as tu->qhead pointing outside the buffer if the size is
    changed concurrently using SNDRV_TIMER_IOCTL_PARAMS.
    
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f9d443a89e9aa01bd27eda0c228e370d1c8c5eeb
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Mon Aug 29 00:33:51 2016 +0200

    ALSA: timer: fix NULL pointer dereference on memory allocation failure
    
    commit 8ddc05638ee42b18ba4fe99b5fb647fa3ad20456 upstream.
    
    I hit this with syzkaller:
    
        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: 0 PID: 1327 Comm: a.out Not tainted 4.8.0-rc2+ #190
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
        task: ffff88011278d600 task.stack: ffff8801120c0000
        RIP: 0010:[<ffffffff82c8ba07>]  [<ffffffff82c8ba07>] snd_hrtimer_start+0x77/0x100
        RSP: 0018:ffff8801120c7a60  EFLAGS: 00010006
        RAX: dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000007
        RDX: 0000000000000009 RSI: 1ffff10023483091 RDI: 0000000000000048
        RBP: ffff8801120c7a78 R08: ffff88011a5cf768 R09: ffff88011a5ba790
        R10: 0000000000000002 R11: ffffed00234b9ef1 R12: ffff880114843980
        R13: ffffffff84213c00 R14: ffff880114843ab0 R15: 0000000000000286
        FS:  00007f72958f3700(0000) GS:ffff88011aa00000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000000603001 CR3: 00000001126ab000 CR4: 00000000000006f0
        Stack:
         ffff880114843980 ffff880111eb2dc0 ffff880114843a34 ffff8801120c7ad0
         ffffffff82c81ab1 0000000000000000 ffffffff842138e0 0000000100000000
         ffff880111eb2dd0 ffff880111eb2dc0 0000000000000001 ffff880111eb2dc0
        Call Trace:
         [<ffffffff82c81ab1>] snd_timer_start1+0x331/0x670
         [<ffffffff82c85bfd>] snd_timer_start+0x5d/0xa0
         [<ffffffff82c8795e>] snd_timer_user_ioctl+0x88e/0x2830
         [<ffffffff8159f3a0>] ? __follow_pte.isra.49+0x430/0x430
         [<ffffffff82c870d0>] ? snd_timer_pause+0x80/0x80
         [<ffffffff815a26fa>] ? do_wp_page+0x3aa/0x1c90
         [<ffffffff8132762f>] ? put_prev_entity+0x108f/0x21a0
         [<ffffffff82c870d0>] ? snd_timer_pause+0x80/0x80
         [<ffffffff816b0733>] do_vfs_ioctl+0x193/0x1050
         [<ffffffff813510af>] ? cpuacct_account_field+0x12f/0x1a0
         [<ffffffff816b05a0>] ? ioctl_preallocate+0x200/0x200
         [<ffffffff81002f2f>] ? syscall_trace_enter+0x3cf/0xdb0
         [<ffffffff815045ba>] ? __context_tracking_exit.part.4+0x9a/0x1e0
         [<ffffffff81002b60>] ? exit_to_usermode_loop+0x190/0x190
         [<ffffffff82001a97>] ? check_preemption_disabled+0x37/0x1e0
         [<ffffffff81d93889>] ? security_file_ioctl+0x89/0xb0
         [<ffffffff816b167f>] SyS_ioctl+0x8f/0xc0
         [<ffffffff816b15f0>] ? do_vfs_ioctl+0x1050/0x1050
         [<ffffffff81005524>] do_syscall_64+0x1c4/0x4e0
         [<ffffffff83c32b2a>] entry_SYSCALL64_slow_path+0x25/0x25
        Code: c7 c7 c4 b9 c8 82 48 89 d9 4c 89 ee e8 63 88 7f fe e8 7e 46 7b fe 48 8d 7b 48 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <0f> b6 04 02 84 c0 74 04 84 c0 7e 65 80 7b 48 00 74 0e e8 52 46
        RIP  [<ffffffff82c8ba07>] snd_hrtimer_start+0x77/0x100
         RSP <ffff8801120c7a60>
        ---[ end trace 5955b08db7f2b029 ]---
    
    This can happen if snd_hrtimer_open() fails to allocate memory and
    returns an error, which is currently not checked by snd_timer_open():
    
        ioctl(SNDRV_TIMER_IOCTL_SELECT)
         - snd_timer_user_tselect()
            - snd_timer_close()
               - snd_hrtimer_close()
                  - (struct snd_timer *) t->private_data = NULL
            - snd_timer_open()
               - snd_hrtimer_open()
                  - kzalloc() fails; t->private_data is still NULL
    
        ioctl(SNDRV_TIMER_IOCTL_START)
         - snd_timer_user_start()
            - snd_timer_start()
               - snd_timer_start1()
                  - snd_hrtimer_start()
                    - t->private_data == NULL // boom
    
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.2: don't put_device() since snd_timer_instance_new()
     doesn't take a device reference]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6ff3eb0f0d6c0c8c4865c3b36f7743a44e31ed50
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Mon Aug 29 00:33:50 2016 +0200

    ALSA: timer: fix division by zero after SNDRV_TIMER_IOCTL_CONTINUE
    
    commit 6b760bb2c63a9e322c0e4a0b5daf335ad93d5a33 upstream.
    
    I got this:
    
        divide error: 0000 [#1] PREEMPT SMP KASAN
        CPU: 1 PID: 1327 Comm: a.out Not tainted 4.8.0-rc2+ #189
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
        task: ffff8801120a9580 task.stack: ffff8801120b0000
        RIP: 0010:[<ffffffff82c8bd9a>]  [<ffffffff82c8bd9a>] snd_hrtimer_callback+0x1da/0x3f0
        RSP: 0018:ffff88011aa87da8  EFLAGS: 00010006
        RAX: 0000000000004f76 RBX: ffff880112655e88 RCX: 0000000000000000
        RDX: 0000000000000000 RSI: ffff880112655ea0 RDI: 0000000000000001
        RBP: ffff88011aa87e00 R08: ffff88013fff905c R09: ffff88013fff9048
        R10: ffff88013fff9050 R11: 00000001050a7b8c R12: ffff880114778a00
        R13: ffff880114778ab4 R14: ffff880114778b30 R15: 0000000000000000
        FS:  00007f071647c700(0000) GS:ffff88011aa80000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000000603001 CR3: 0000000112021000 CR4: 00000000000006e0
        Stack:
         0000000000000000 ffff880114778ab8 ffff880112655ea0 0000000000004f76
         ffff880112655ec8 ffff880112655e80 ffff880112655e88 ffff88011aa98fc0
         00000000b97ccf2b dffffc0000000000 ffff88011aa98fc0 ffff88011aa87ef0
        Call Trace:
         <IRQ>
         [<ffffffff813abce7>] __hrtimer_run_queues+0x347/0xa00
         [<ffffffff82c8bbc0>] ? snd_hrtimer_close+0x130/0x130
         [<ffffffff813ab9a0>] ? retrigger_next_event+0x1b0/0x1b0
         [<ffffffff813ae1a6>] ? hrtimer_interrupt+0x136/0x4b0
         [<ffffffff813ae220>] hrtimer_interrupt+0x1b0/0x4b0
         [<ffffffff8120f91e>] local_apic_timer_interrupt+0x6e/0xf0
         [<ffffffff81227ad3>] ? kvm_guest_apic_eoi_write+0x13/0xc0
         [<ffffffff83c35086>] smp_apic_timer_interrupt+0x76/0xa0
         [<ffffffff83c3416c>] apic_timer_interrupt+0x8c/0xa0
         <EOI>
         [<ffffffff83c3239c>] ? _raw_spin_unlock_irqrestore+0x2c/0x60
         [<ffffffff82c8185d>] snd_timer_start1+0xdd/0x670
         [<ffffffff82c87015>] snd_timer_continue+0x45/0x80
         [<ffffffff82c88100>] snd_timer_user_ioctl+0x1030/0x2830
         [<ffffffff8159f3a0>] ? __follow_pte.isra.49+0x430/0x430
         [<ffffffff82c870d0>] ? snd_timer_pause+0x80/0x80
         [<ffffffff815a26fa>] ? do_wp_page+0x3aa/0x1c90
         [<ffffffff815aa4f8>] ? handle_mm_fault+0xbc8/0x27f0
         [<ffffffff815a9930>] ? __pmd_alloc+0x370/0x370
         [<ffffffff82c870d0>] ? snd_timer_pause+0x80/0x80
         [<ffffffff816b0733>] do_vfs_ioctl+0x193/0x1050
         [<ffffffff816b05a0>] ? ioctl_preallocate+0x200/0x200
         [<ffffffff81002f2f>] ? syscall_trace_enter+0x3cf/0xdb0
         [<ffffffff815045ba>] ? __context_tracking_exit.part.4+0x9a/0x1e0
         [<ffffffff81002b60>] ? exit_to_usermode_loop+0x190/0x190
         [<ffffffff82001a97>] ? check_preemption_disabled+0x37/0x1e0
         [<ffffffff81d93889>] ? security_file_ioctl+0x89/0xb0
         [<ffffffff816b167f>] SyS_ioctl+0x8f/0xc0
         [<ffffffff816b15f0>] ? do_vfs_ioctl+0x1050/0x1050
         [<ffffffff81005524>] do_syscall_64+0x1c4/0x4e0
         [<ffffffff83c32b2a>] entry_SYSCALL64_slow_path+0x25/0x25
        Code: e8 fc 42 7b fe 8b 0d 06 8a 50 03 49 0f af cf 48 85 c9 0f 88 7c 01 00 00 48 89 4d a8 e8 e0 42 7b fe 48 8b 45 c0 48 8b 4d a8 48 99 <48> f7 f9 49 01 c7 e8 cb 42 7b fe 48 8b 55 d0 48 b8 00 00 00 00
        RIP  [<ffffffff82c8bd9a>] snd_hrtimer_callback+0x1da/0x3f0
         RSP <ffff88011aa87da8>
        ---[ end trace 6aa380f756a21074 ]---
    
    The problem happens when you call ioctl(SNDRV_TIMER_IOCTL_CONTINUE) on a
    completely new/unused timer -- it will have ->sticks == 0, which causes a
    divide by 0 in snd_hrtimer_callback().
    
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1335a3ab2dcc684c65caba15d36957ee816a0236
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Thu Aug 25 15:17:11 2016 -0700

    fs/seq_file: fix out-of-bounds read
    
    commit 088bf2ff5d12e2e32ee52a4024fec26e582f44d3 upstream.
    
    seq_read() is a nasty piece of work, not to mention buggy.
    
    It has (I think) an old bug which allows unprivileged userspace to read
    beyond the end of m->buf.
    
    I was getting these:
    
        BUG: KASAN: slab-out-of-bounds in seq_read+0xcd2/0x1480 at addr ffff880116889880
        Read of size 2713 by task trinity-c2/1329
        CPU: 2 PID: 1329 Comm: trinity-c2 Not tainted 4.8.0-rc1+ #96
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
        Call Trace:
          kasan_object_err+0x1c/0x80
          kasan_report_error+0x2cb/0x7e0
          kasan_report+0x4e/0x80
          check_memory_region+0x13e/0x1a0
          kasan_check_read+0x11/0x20
          seq_read+0xcd2/0x1480
          proc_reg_read+0x10b/0x260
          do_loop_readv_writev.part.5+0x140/0x2c0
          do_readv_writev+0x589/0x860
          vfs_readv+0x7b/0xd0
          do_readv+0xd8/0x2c0
          SyS_readv+0xb/0x10
          do_syscall_64+0x1b3/0x4b0
          entry_SYSCALL64_slow_path+0x25/0x25
        Object at ffff880116889100, in cache kmalloc-4096 size: 4096
        Allocated:
        PID = 1329
          save_stack_trace+0x26/0x80
          save_stack+0x46/0xd0
          kasan_kmalloc+0xad/0xe0
          __kmalloc+0x1aa/0x4a0
          seq_buf_alloc+0x35/0x40
          seq_read+0x7d8/0x1480
          proc_reg_read+0x10b/0x260
          do_loop_readv_writev.part.5+0x140/0x2c0
          do_readv_writev+0x589/0x860
          vfs_readv+0x7b/0xd0
          do_readv+0xd8/0x2c0
          SyS_readv+0xb/0x10
          do_syscall_64+0x1b3/0x4b0
          return_from_SYSCALL_64+0x0/0x6a
        Freed:
        PID = 0
        (stack is not available)
        Memory state around the buggy address:
         ffff88011688a000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
         ffff88011688a080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
        >ffff88011688a100: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                           ^
         ffff88011688a180: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
         ffff88011688a200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
        ==================================================================
        Disabling lock debugging due to kernel taint
    
    This seems to be the same thing that Dave Jones was seeing here:
    
      https://lkml.org/lkml/2016/8/12/334
    
    There are multiple issues here:
    
      1) If we enter the function with a non-empty buffer, there is an attempt
         to flush it. But it was not clearing m->from after doing so, which
         means that if we try to do this flush twice in a row without any call
         to traverse() in between, we are going to be reading from the wrong
         place -- the splat above, fixed by this patch.
    
      2) If there's a short write to userspace because of page faults, the
         buffer may already contain multiple lines (i.e. pos has advanced by
         more than 1), but we don't save the progress that was made so the
         next call will output what we've already returned previously. Since
         that is a much less serious issue (and I have a headache after
         staring at seq_read() for the past 8 hours), I'll leave that for now.
    
    Link: http://lkml.kernel.org/r/1471447270-32093-1-git-send-email-vegard.nossum@oracle.com
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Reported-by: Dave Jones <davej@codemonkey.org.uk>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 54172523668f7df42b85291b6ddaee1220a99af3
Author: Aleksandr Makarov <aleksandr.o.makarov@gmail.com>
Date:   Wed Aug 24 13:06:22 2016 +0300

    USB: serial: option: add WeTelecom 0x6802 and 0x6803 products
    
    commit 40d9c32525cba79130612650b1abc47c0c0f19a8 upstream.
    
    These product IDs are listed in Windows driver.
    0x6803 corresponds to WeTelecom WM-D300.
    0x6802 name is unknown.
    
    Signed-off-by: Aleksandr Makarov <aleksandr.o.makarov@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fd9828ed90bd74ce1a48032a0eb696e4cf888a52
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Tue Aug 23 20:07:19 2016 +0800

    x86/apic: Do not init irq remapping if ioapic is disabled
    
    commit 2e63ad4bd5dd583871e6602f9d398b9322d358d9 upstream.
    
    native_smp_prepare_cpus
      -> default_setup_apic_routing
        -> enable_IR_x2apic
          -> irq_remapping_prepare
            -> intel_prepare_irq_remapping
              -> intel_setup_irq_remapping
    
    So IR table is setup even if "noapic" boot parameter is added. As a result we
    crash later when the interrupt affinity is set due to a half initialized
    remapping infrastructure.
    
    Prevent remap initialization when IOAPIC is disabled.
    
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Joerg Roedel <joro@8bytes.org>
    Link: http://lkml.kernel.org/r/1471954039-3942-1-git-send-email-wanpeng.li@hotmail.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 18fffaf50400fc5fabf95c4888729236c819f16e
Author: Vincent Stehlé <vincent.stehle@intel.com>
Date:   Fri Aug 12 15:26:30 2016 +0200

    ubifs: Fix assertion in layout_in_gaps()
    
    commit c0082e985fdf77b02fc9e0dac3b58504dcf11b7a upstream.
    
    An assertion in layout_in_gaps() verifies that the gap_lebs pointer is
    below the maximum bound. When computing this maximum bound the idx_lebs
    count is multiplied by sizeof(int), while C pointers arithmetic does take
    into account the size of the pointed elements implicitly already. Remove
    the multiplication to fix the assertion.
    
    Fixes: 1e51764a3c2ac05a ("UBIFS: add new flash file system")
    Signed-off-by: Vincent Stehlé <vincent.stehle@intel.com>
    Cc: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c1251c319e8790b9827be7786db8c0e59f9a2c37
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Aug 23 15:32:51 2016 -0400

    USB: avoid left shift by -1
    
    commit 53e5f36fbd2453ad69a3369a1db62dc06c30a4aa upstream.
    
    UBSAN complains about a left shift by -1 in proc_do_submiturb().  This
    can occur when an URB is submitted for a bulk or control endpoint on
    a high-speed device, since the code doesn't bother to check the
    endpoint type; normally only interrupt or isochronous endpoints have
    a nonzero bInterval value.
    
    Aside from the fact that the operation is illegal, it shouldn't matter
    because the result isn't used.  Still, in theory it could cause a
    hardware exception or other problem, so we should work around it.
    This patch avoids doing the left shift unless the shift amount is >= 0.
    
    The same piece of code has another problem.  When checking the device
    speed (the exponential encoding for interrupt endpoints is used only
    by high-speed or faster devices), we need to look for speed >=
    USB_SPEED_SUPER as well as speed == USB_SPEED HIGH.  The patch adds
    this check.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Vittorio Zecca <zeccav@gmail.com>
    Tested-by: Vittorio Zecca <zeccav@gmail.com>
    Suggested-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 285f39c806ac8d374c93b9c46f286804b2a4f9e9
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Aug 22 16:58:53 2016 -0400

    USB: fix typo in wMaxPacketSize validation
    
    commit 6c73358c83ce870c0cf32413e5cadb3b9a39c606 upstream.
    
    The maximum value allowed for wMaxPacketSize of a high-speed interrupt
    endpoint is 1024 bytes, not 1023.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Fixes: aed9d65ac327 ("USB: validate wMaxPacketValue entries in endpoint descriptors")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fa454783f01788e5fada69c8c144ef8097ee196a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Jul 15 14:15:47 2016 +0300

    usb: gadget: fsl_qe_udc: signedness bug in qe_get_frame()
    
    commit f4693b08cc901912a87369c46537b94ed4084ea0 upstream.
    
    We can't assign -EINVAL to a u16.
    
    Fixes: 3948f0e0c999 ('usb: add Freescale QE/CPM USB peripheral controller driver')
    Acked-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 59a7b3c317cdb000f62d154d593ecc2818170f37
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Sat Aug 20 12:22:11 2016 +0200

    drm: Reject page_flip for !DRIVER_MODESET
    
    commit 6f00975c619064a18c23fd3aced325ae165a73b9 upstream.
    
    Somehow this one slipped through, which means drivers without modeset
    support can be oopsed (since those also don't call
    drm_mode_config_init, which means the crtc lookup will chase an
    uninitalized idr).
    
    Reported-by: Alexander Potapenko <glider@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a8411898d2f2230332127e458ae0ab830fab83df
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Tue Aug 16 15:33:28 2016 +0200

    iio: accel: kxsd9: Fix raw read return
    
    commit 7ac61a062f3147dc23e3f12b9dfe7c4dd35f9cb8 upstream.
    
    Any readings from the raw interface of the KXSD9 driver will
    return an empty string, because it does not return
    IIO_VAL_INT but rather some random value from the accelerometer
    to the caller.
    
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2d7a0bb8c3a8ab75ea5af4a280d1aa33f852c18c
Author: Aleksandr Makarov <aleksandr.o.makarov@gmail.com>
Date:   Sat Aug 20 13:29:41 2016 +0300

    USB: serial: option: add WeTelecom WM-D200
    
    commit 6695593e4a7659db49ac6eca98c164f7b5589f72 upstream.
    
    Add support for WeTelecom WM-D200.
    
    T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
    D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=22de ProdID=6801 Rev=00.00
    S:  Manufacturer=WeTelecom Incorporated
    S:  Product=WeTelecom Mobile Products
    C:  #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
    
    Signed-off-by: Aleksandr Makarov <aleksandr.o.makarov@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4d3cfb5b73cd9a9dfc81641317261802b44d266f
Author: Helge Deller <deller@gmx.de>
Date:   Sat Aug 20 11:51:38 2016 +0200

    parisc: Fix order of EREFUSED define in errno.h
    
    commit 3eb53b20d7bd1374598cfb1feaa081fcac0e76cd upstream.
    
    When building gccgo in userspace, errno.h gets parsed and the go include file
    sysinfo.go is generated.
    
    Since EREFUSED is defined to the same value as ECONNREFUSED, and ECONNREFUSED
    is defined later on in errno.h, this leads to go complaining that EREFUSED
    isn't defined yet.
    
    Fix this trivial problem by moving the define of EREFUSED down after
    ECONNREFUSED in errno.h (and clean up the indenting while touching this line).
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cac282592d278dcf44c5f442206e1f7ce2fe476f
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Tue Aug 16 17:38:54 2016 -0700

    Input: i8042 - set up shared ps2_cmd_mutex for AUX ports
    
    commit 47af45d684b5f3ae000ad448db02ce4f13f73273 upstream.
    
    The commit 4097461897df ("Input: i8042 - break load dependency ...")
    correctly set up ps2_cmd_mutex pointer for the KBD port but forgot to do
    the same for AUX port(s), which results in communication on KBD and AUX
    ports to clash with each other.
    
    Fixes: 4097461897df ("Input: i8042 - break load dependency ...")
    Reported-by: Bruno Wolff III <bruno@wolff.to>
    Tested-by: Bruno Wolff III <bruno@wolff.to>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b6883f8e769a6a0a9b50e426ccd6779a7e23bacf
Author: Christian König <christian.koenig@amd.com>
Date:   Wed Aug 17 09:46:42 2016 +0200

    drm/radeon: fix radeon_move_blit on 32bit systems
    
    commit 13f479b9df4e2bbf2d16e7e1b02f3f55f70e2455 upstream.
    
    This bug seems to be present for a very long time.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dce1c887660cb96ee0ba5e3751aa6845589c6fec
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Aug 17 05:56:26 2016 -0700

    tcp: fix use after free in tcp_xmit_retransmit_queue()
    
    commit bb1fceca22492109be12640d49f5ea5a544c6bb4 upstream.
    
    When tcp_sendmsg() allocates a fresh and empty skb, it puts it at the
    tail of the write queue using tcp_add_write_queue_tail()
    
    Then it attempts to copy user data into this fresh skb.
    
    If the copy fails, we undo the work and remove the fresh skb.
    
    Unfortunately, this undo lacks the change done to tp->highest_sack and
    we can leave a dangling pointer (to a freed skb)
    
    Later, tcp_xmit_retransmit_queue() can dereference this pointer and
    access freed memory. For regular kernels where memory is not unmapped,
    this might cause SACK bugs because tcp_highest_sack_seq() is buggy,
    returning garbage instead of tp->snd_nxt, but with various debug
    features like CONFIG_DEBUG_PAGEALLOC, this can crash the kernel.
    
    This bug was found by Marco Grassi thanks to syzkaller.
    
    Fixes: 6859d49475d4 ("[TCP]: Abstract tp->highest_sack accessing & point to next skb")
    Reported-by: Marco Grassi <marco.gra@gmail.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Reviewed-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a9d438ce4d098d5924338053eed443f4e5036c97
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Aug 16 10:18:06 2016 +0300

    xhci: don't dereference a xhci member after removing xhci
    
    commit f1f6d9a8b540df22b87a5bf6bc104edaade81f47 upstream.
    
    Remove the hcd after checking for the xhci last quirks, not before.
    
    This caused a hang on a Alpine Ridge xhci based maching which remove
    the whole xhci controller when unplugging the last usb device
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c8714b29157d534ac0078541c4075211f287afdb
Author: Jim Lin <jilin@nvidia.com>
Date:   Tue Aug 16 10:18:05 2016 +0300

    usb: xhci: Fix panic if disconnect
    
    commit 88716a93766b8f095cdef37a8e8f2c93aa233b21 upstream.
    
    After a device is disconnected, xhci_stop_device() will be invoked
    in xhci_bus_suspend().
    Also the "disconnect" IRQ will have ISR to invoke
    xhci_free_virt_device() in this sequence.
    xhci_irq -> xhci_handle_event -> handle_cmd_completion ->
    xhci_handle_cmd_disable_slot -> xhci_free_virt_device
    
    If xhci->devs[slot_id] has been assigned to NULL in
    xhci_free_virt_device(), then virt_dev->eps[i].ring in
    xhci_stop_device() may point to an invlid address to cause kernel
    panic.
    
    virt_dev = xhci->devs[slot_id];
    :
    if (virt_dev->eps[i].ring && virt_dev->eps[i].ring->dequeue)
    
    [] Unable to handle kernel paging request at virtual address 00001a68
    [] pgd=ffffffc001430000
    [] [00001a68] *pgd=000000013c807003, *pud=000000013c807003,
    *pmd=000000013c808003, *pte=0000000000000000
    [] Internal error: Oops: 96000006 [#1] PREEMPT SMP
    [] CPU: 0 PID: 39 Comm: kworker/0:1 Tainted: G     U
    [] Workqueue: pm pm_runtime_work
    [] task: ffffffc0bc0e0bc0 ti: ffffffc0bc0ec000 task.ti:
    ffffffc0bc0ec000
    [] PC is at xhci_stop_device.constprop.11+0xb4/0x1a4
    
    This issue is found when running with realtek ethernet device
    (0bda:8153).
    
    Signed-off-by: Jim Lin <jilin@nvidia.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 60423c0baad27c8eeacf3deef5f827c7adf73e89
Author: Gavin Li <git@thegavinli.com>
Date:   Fri Aug 12 00:52:56 2016 -0700

    cdc-acm: fix wrong pipe type on rx interrupt xfers
    
    commit add125054b8727103631dce116361668436ef6a7 upstream.
    
    This fixes the "BOGUS urb xfer" warning logged by usb_submit_urb().
    
    Signed-off-by: Gavin Li <git@thegavinli.com>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 68cebcb01852fc457bcf244b3c7760c037398080
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Fri Aug 12 01:05:09 2016 +0300

    USB: serial: mos7840: fix non-atomic allocation in write path
    
    commit 3b7c7e52efda0d4640060de747768360ba70a7c0 upstream.
    
    There is an allocation with GFP_KERNEL flag in mos7840_write(),
    while it may be called from interrupt context.
    
    Follow-up for commit 191252837626 ("USB: kobil_sct: fix non-atomic
    allocation in write path")
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a3536a90c4806a7bc780eaf8c3960df416a93082
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Fri Aug 12 01:05:08 2016 +0300

    USB: serial: mos7720: fix non-atomic allocation in write path
    
    commit 5a5a1d614287a647b36dff3f40c2b0ceabbc83ec upstream.
    
    There is an allocation with GFP_KERNEL flag in mos7720_write(),
    while it may be called from interrupt context.
    
    Follow-up for commit 191252837626 ("USB: kobil_sct: fix non-atomic
    allocation in write path")
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e095ecdc5b0052d8612f9e0ff35e7300295d99bd
Author: Yinghai Lu <yinghai@kernel.org>
Date:   Fri Aug 5 23:37:34 2016 -0700

    megaraid_sas: Fix probing cards without io port
    
    commit e7f851684efb3377e9c93aca7fae6e76212e5680 upstream.
    
    Found one megaraid_sas HBA probe fails,
    
    [  187.235190] scsi host2: Avago SAS based MegaRAID driver
    [  191.112365] megaraid_sas 0000:89:00.0: BAR 0: can't reserve [io  0x0000-0x00ff]
    [  191.120548] megaraid_sas 0000:89:00.0: IO memory region busy!
    
    and the card has resource like,
    [  125.097714] pci 0000:89:00.0: [1000:005d] type 00 class 0x010400
    [  125.104446] pci 0000:89:00.0: reg 0x10: [io  0x0000-0x00ff]
    [  125.110686] pci 0000:89:00.0: reg 0x14: [mem 0xce400000-0xce40ffff 64bit]
    [  125.118286] pci 0000:89:00.0: reg 0x1c: [mem 0xce300000-0xce3fffff 64bit]
    [  125.125891] pci 0000:89:00.0: reg 0x30: [mem 0xce200000-0xce2fffff pref]
    
    that does not io port resource allocated from BIOS, and kernel can not
    assign one as io port shortage.
    
    The driver is only looking for MEM, and should not fail.
    
    It turns out megasas_init_fw() etc are using bar index as mask.  index 1
    is used as mask 1, so that pci_request_selected_regions() is trying to
    request BAR0 instead of BAR1.
    
    Fix all related reference.
    
    Fixes: b6d5d8808b4c ("megaraid_sas: Use lowest memory bar for SR-IOV VF support")
    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    Acked-by: Kashyap Desai <kashyap.desai@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b1038b4e5e64547052f91767ddf369683ebf2697
Author: Dave Weinstein <olorin@google.com>
Date:   Thu Jul 28 11:55:41 2016 -0700

    arm: oabi compat: add missing access checks
    
    commit 7de249964f5578e67b99699c5f0b405738d820a2 upstream.
    
    Add access checks to sys_oabi_epoll_wait() and sys_oabi_semtimedop().
    This fixes CVE-2016-3857, a local privilege escalation under
    CONFIG_OABI_COMPAT.
    
    Reported-by: Chiachih Wu <wuchiachih@gmail.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Dave Weinstein <olorin@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 503d6ca10e132a2bcd0530ef8e818b9d35570ed2
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Fri Aug 5 15:37:39 2016 +0200

    x86/mm: Disable preemption during CR3 read+write
    
    commit 5cf0791da5c162ebc14b01eb01631cfa7ed4fa6e upstream.
    
    There's a subtle preemption race on UP kernels:
    
    Usually current->mm (and therefore mm->pgd) stays the same during the
    lifetime of a task so it does not matter if a task gets preempted during
    the read and write of the CR3.
    
    But then, there is this scenario on x86-UP:
    
    TaskA is in do_exit() and exit_mm() sets current->mm = NULL followed by:
    
     -> mmput()
     -> exit_mmap()
     -> tlb_finish_mmu()
     -> tlb_flush_mmu()
     -> tlb_flush_mmu_tlbonly()
     -> tlb_flush()
     -> flush_tlb_mm_range()
     -> __flush_tlb_up()
     -> __flush_tlb()
     ->  __native_flush_tlb()
    
    At this point current->mm is NULL but current->active_mm still points to
    the "old" mm.
    
    Let's preempt taskA _after_ native_read_cr3() by taskB. TaskB has its
    own mm so CR3 has changed.
    
    Now preempt back to taskA. TaskA has no ->mm set so it borrows taskB's
    mm and so CR3 remains unchanged. Once taskA gets active it continues
    where it was interrupted and that means it writes its old CR3 value
    back. Everything is fine because userland won't need its memory
    anymore.
    
    Now the fun part:
    
    Let's preempt taskA one more time and get back to taskB. This
    time switch_mm() won't do a thing because oldmm (->active_mm)
    is the same as mm (as per context_switch()). So we remain
    with a bad CR3 / PGD and return to userland.
    
    The next thing that happens is handle_mm_fault() with an address for
    the execution of its code in userland. handle_mm_fault() realizes that
    it has a PTE with proper rights so it returns doing nothing. But the
    CPU looks at the wrong PGD and insists that something is wrong and
    faults again. And again. And one more time…
    
    This pagefault circle continues until the scheduler gets tired of it and
    puts another task on the CPU. It gets little difficult if the task is a
    RT task with a high priority. The system will either freeze or it gets
    fixed by the software watchdog thread which usually runs at RT-max prio.
    But waiting for the watchdog will increase the latency of the RT task
    which is no good.
    
    Fix this by disabling preemption across the critical code section.
    
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Rik van Riel <riel@redhat.com>
    Acked-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/1470404259-26290-1-git-send-email-bigeasy@linutronix.de
    [ Prettified the changelog. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5c444714f389bb099d42b526d7f6e3bfd218d5d4
Author: Stefan Haberland <sth@linux.vnet.ibm.com>
Date:   Mon Aug 8 14:08:17 2016 +0200

    s390/dasd: fix hanging device after clear subchannel
    
    commit 9ba333dc55cbb9523553df973adb3024d223e905 upstream.
    
    When a device is in a status where CIO has killed all I/O by itself the
    interrupt for a clear request may not contain an irb to determine the
    clear function. Instead it contains an error pointer -EIO.
    This was ignored by the DASD int_handler leading to a hanging device
    waiting for a clear interrupt.
    
    Handle -EIO error pointer correctly for requests that are clear pending and
    treat the clear as successful.
    
    Signed-off-by: Stefan Haberland <sth@linux.vnet.ibm.com>
    Reviewed-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f121a6c4cba5ab03cddc607a3ceb7897074fb8f2
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Aug 1 15:25:56 2016 -0400

    USB: validate wMaxPacketValue entries in endpoint descriptors
    
    commit aed9d65ac3278d4febd8665bd7db59ef53e825fe upstream.
    
    Erroneous or malicious endpoint descriptors may have non-zero bits in
    reserved positions, or out-of-bounds values.  This patch helps prevent
    these from causing problems by bounds-checking the wMaxPacketValue
    entries in endpoint descriptors and capping the values at the maximum
    allowed.
    
    This issue was first discovered and tests were conducted by Jake Lamberson
    <jake.lamberson1@gmail.com>, an intern working for Rosie Hall.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: roswest <roswest@cisco.com>
    Tested-by: roswest <roswest@cisco.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: drop the USB_SPEED_SUPER_PLUS case]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 11ea27d54f305d1eecbfb89984a3f34faf4eef09
Author: Liping Zhang <liping.zhang@spreadtrum.com>
Date:   Mon Aug 8 22:07:27 2016 +0800

    netfilter: nfnetlink_queue: reject verdict request from different portid
    
    commit 00a3101f561816e58de054a470484996f78eb5eb upstream.
    
    Like NFQNL_MSG_VERDICT_BATCH do, we should also reject the verdict
    request when the portid is not same with the initial portid(maybe
    from another process).
    
    Fixes: 97d32cf9440d ("netfilter: nfnetlink_queue: batch verdict support")
    Signed-off-by: Liping Zhang <liping.zhang@spreadtrum.com>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8c7c27347bf94d568353a539dfff6578b6181b82
Author: Dave Carroll <david.carroll@microsemi.com>
Date:   Fri Aug 5 13:44:10 2016 -0600

    aacraid: Check size values after double-fetch from user
    
    commit fa00c437eef8dc2e7b25f8cd868cfa405fcc2bb3 upstream.
    
    In aacraid's ioctl_send_fib() we do two fetches from userspace, one the
    get the fib header's size and one for the fib itself. Later we use the
    size field from the second fetch to further process the fib. If for some
    reason the size from the second fetch is different than from the first
    fix, we may encounter an out-of- bounds access in aac_fib_send(). We
    also check the sender size to insure it is not out of bounds. This was
    reported in https://bugzilla.kernel.org/show_bug.cgi?id=116751 and was
    assigned CVE-2016-6480.
    
    Reported-by: Pengfei Wang <wpengfeinudt@gmail.com>
    Fixes: 7c00ffa31 '[SCSI] 2.6 aacraid: Variable FIB size (updated patch)'
    Signed-off-by: Dave Carroll <david.carroll@microsemi.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b17226ca4e6cb50d3bbb0215fd8208ffdf44bf63
Author: Mario Kleiner <mario.kleiner.de@gmail.com>
Date:   Wed Jul 6 12:05:44 2016 +0200

    drm/edid: Add 6 bpc quirk for display AEO model 0.
    
    commit e10aec652f31ec61d6a0b4d00d8ef8d2b66fa0fd upstream.
    
    Bugzilla https://bugzilla.kernel.org/show_bug.cgi?id=105331
    reports that the "AEO model 0" display is driven with 8 bpc
    without dithering by default, which looks bad because that
    panel is apparently a 6 bpc DP panel with faulty EDID.
    
    A fix for this was made by commit 013dd9e03872
    ("drm/i915/dp: fall back to 18 bpp when sink capability is unknown").
    
    That commit triggers new regressions in precision for DP->DVI and
    DP->VGA displays. A patch is out to revert that commit, but it will
    revert video output for the AEO model 0 panel to 8 bpc without
    dithering.
    
    The EDID 1.3 of that panel, as decoded from the xrandr output
    attached to that bugzilla bug report, is somewhat faulty, and beyond
    other problems also sets the "DFP 1.x compliant TMDS" bit, which
    according to DFP spec means to drive the panel with 8 bpc and
    no dithering in absence of other colorimetry information.
    
    Try to make the original bug reporter happy despite the
    faulty EDID by adding a quirk to mark that panel as 6 bpc,
    so 6 bpc output with dithering creates a nice picture.
    
    Tested by injecting the edid from the fdo bug into a DP connector
    via drm_kms_helper.edid_firmware and verifying the 6 bpc + dithering
    is selected.
    
    This patch should be backported to stable.
    
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6983826c3dc2b6b6b1b40b26df2276f8347a7d94
Author: Sheng-Hui J. Chu <s.jeffrey.chu@gmail.com>
Date:   Thu Jul 28 17:01:45 2016 -0400

    USB: serial: ftdi_sio: add device ID for WICED USB UART dev board
    
    commit ae34d12cc1e212ffcd92e069030e54dae69c832f upstream.
    
    BCM20706V2_EVAL is a WICED dev board designed with FT2232H USB 2.0
    UART/FIFO IC.
    
    To support BCM920706V2_EVAL dev board for WICED development on Linux.
    Add the VID(0a5c) and PID(6422) to ftdi_sio driver to allow loading
    ftdi_sio for this board.
    
    Signed-off-by: Sheng-Hui J. Chu <s.jeffrey.chu@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 08c3b86c39dde1d3b815d96508e70558f47b3a4c
Author: Robert Deliën <robert@delien.nl>
Date:   Thu Jul 28 18:52:55 2016 +0000

    USB: serial: ftdi_sio: add PIDs for Ivium Technologies devices
    
    commit 6977495c06f7f47636a076ee5a0ca571279d9697 upstream.
    
    Ivium Technologies uses the FTDI VID with custom PIDs for their line of
    electrochemical interfaces and the PalmSens they developed for PalmSens
    BV.
    
    Signed-off-by: Robert Delien <robert@delien.nl>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff6fde8cd25b914ebb323708e3c2da043f76ad18
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Sun Jul 24 13:53:30 2016 +0200

    USB: serial: option: add D-Link DWM-156/A3
    
    commit cf1b18030de29e4e5b0a57695ae5db4a89da0ff7 upstream.
    
    The device has four interfaces; the three serial ports ought to be
    handled by this driver:
    
    00 Diagnostic interface serial port
    01 NMEA device serial port
    02 Mass storage (sd card)
    03 Modem serial port
    
    The other product ids listed in the Windows driver are present already.
    
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    block: fix use-after-free in seq file
    
    commit 77da160530dd1dc94f6ae15a981f24e5f0021e84 upstream.
    
    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.
    
    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: Ben Hutchings <ben@decadent.org.uk>

commit c3cb323119734f79bdbde98d349773769afa2a1c
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jul 13 13:12:34 2016 +0300

    hostfs: Freeing an ERR_PTR in hostfs_fill_sb_common()
    
    commit 8a545f185145e3c09348cd74326268ecfc6715a3 upstream.
    
    We can't pass error pointers to kfree() or it causes an oops.
    
    Fixes: 52b209f7b848 ('get rid of hostfs_read_inode()')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 600c8254c73e823a32dfb2a73939c47afb5d8ebe
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()
    
    commit 649920c6ab93429b94bc7c1aa7c0e8395351be32 upstream.
    
    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>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    dm flakey: error READ bios during the down_interval
    
    commit 99f3c90d0d85708e7401a81ce3314e50bf7f2819 upstream.
    
    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>
    [bwh: Backported to 3.2: in flakey_end_io(), keep using
     bio_submitted_while_down instead of pb->bio_submitted]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit be1fc38a6f84a2b3b5d648ced2ce5d9b36851868
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
    
    commit 37cf99e08c6fb4dcea0f9ad2b13b6daa8c76a711 upstream.
    
    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.
    
    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>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cea637ee445e8aa3ad4a01029858566fe1773990
Author: David Howells <dhowells@redhat.com>
Date:   Wed Jul 27 11:42:38 2016 +0100

    x86/syscalls/64: Add compat_sys_keyctl for 32-bit userspace
    
    commit f7d665627e103e82d34306c7d3f6f46f387c0d8b upstream.
    
    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
    Link: http://lkml.kernel.org/r/146961615805.14395.5581949237156769439.stgit@warthog.procyon.org.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2: compat system call table is in ia32entry.S]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 02dd82ed5de939add38991dae6386fe91b07d653
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Mon Aug 1 00:51:02 2016 -0400

    ext4: validate that metadata blocks do not overlap superblock
    
    commit 829fa70dddadf9dd041d62b82cd7cea63943899d upstream.
    
    A number of fuzzing failures seem to be caused by allocation bitmaps
    or other metadata blocks being pointed at the superblock.
    
    This can cause kernel BUG or WARNings once the superblock is
    overwritten, so validate the group descriptor blocks to make sure this
    doesn't happen.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cd157e9d9c5ef1ba0885cb45a33b140db5744528
Author: James Hogan <james.hogan@imgtec.com>
Date:   Sun Jul 31 14:11:11 2016 +0200

    s390: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO
    
    commit 68c5cf5a6091c2c3fabccfd42ca844d730ec24c6 upstream.
    
    AT_VECTOR_SIZE_ARCH should be defined with the maximum number of
    NEW_AUX_ENT entries that ARCH_DLINFO can contain, but it wasn't defined
    for s390 at all even though ARCH_DLINFO can contain one NEW_AUX_ENT when
    VDSO is enabled.
    
    This shouldn't be a problem as AT_VECTOR_SIZE_BASE includes space for
    AT_BASE_PLATFORM which s390 doesn't use, but lets define it now and add
    the comment above ARCH_DLINFO as found in several other architectures to
    remind future modifiers of ARCH_DLINFO to keep AT_VECTOR_SIZE_ARCH up to
    date.
    
    Fixes: b020632e40c3 ("[S390] introduce vdso on s390")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: linux-s390@vger.kernel.org
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 20ea555ffaf37ee6ad22a4c4c340935eac394501
Author: Soheil Hassas Yeganeh <soheil@google.com>
Date:   Fri Jul 29 09:34:02 2016 -0400

    tcp: consider recv buf for the initial window scale
    
    commit f626300a3e776ccc9671b0dd94698fb3aa315966 upstream.
    
    tcp_select_initial_window() intends to advertise a window
    scaling for the maximum possible window size. To do so,
    it considers the maximum of net.ipv4.tcp_rmem[2] and
    net.core.rmem_max as the only possible upper-bounds.
    However, users with CAP_NET_ADMIN can use SO_RCVBUFFORCE
    to set the socket's receive buffer size to values
    larger than net.ipv4.tcp_rmem[2] and net.core.rmem_max.
    Thus, SO_RCVBUFFORCE is effectively ignored by
    tcp_select_initial_window().
    
    To fix this, consider the maximum of net.ipv4.tcp_rmem[2],
    net.core.rmem_max and socket's initial buffer space.
    
    Fixes: b0573dea1fb3 ("[NET]: Introduce SO_{SND,RCV}BUFFORCE socket options")
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Suggested-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 016820bde3f0895d09fcad370415085ba0d1bd4a
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
    
    commit 714fb87e8bc05ff78255afc0dca981e8c5242785 upstream.
    
    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.
    
    Signed-off-by: Iosif Harutyunov <iharutyunov@sonicwall.com>
    [rw: massaged commit message]
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2546f7baa08278d3d065359e4a1951c89a385297
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jul 13 13:08:55 2016 +0300

    avr32: off by one in at32_init_pio()
    
    commit 55f1cf83d5cf885c75267269729805852039c834 upstream.
    
    The pio_dev[] array has MAX_NR_PIO_DEVICES elements so the > should be
    >=.
    
    Fixes: 5f97f7f9400d ('[PATCH] avr32 architecture')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    drm/radeon: fix firmware info version checks
    
    commit 3edc38a0facef45ee22af8afdce3737f421f36ab upstream.
    
    Some of the checks didn't handle frev 2 tables properly.
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 51a8ffefe4ae40fdf8ab3b5ceb86f76231b94948
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
    
    commit 20f06ed9f61a185c6dabd662c310bed6189470df upstream.
    
    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: 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: Ben Hutchings <ben@decadent.org.uk>

commit 7334e0adefc28bfa2356414b1d79fc56d6b8e7ed
Author: Phil Turnbull <phil.turnbull@oracle.com>
Date:   Thu Jul 21 13:43:09 2016 -0400

    ceph: Correctly return NXIO errors from ceph_llseek
    
    commit 955818cd5b6c4b58ea574ace4573e7afa4c19c1e upstream.
    
    ceph_llseek does not correctly return NXIO errors because the 'out' path
    always returns 'offset'.
    
    Fixes: 06222e491e66 ("fs: handle SEEK_HOLE/SEEK_DATA properly in all fs's that define their own llseek")
    Signed-off-by: Phil Turnbull <phil.turnbull@oracle.com>
    Signed-off-by: Yan, Zheng <zyan@redhat.com>
    [bwh: Backported to 3.2:
     - We don't use vfs_setpos(); instead set ret = -EINVAL or ret = offset
       directly
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 538cff0a1a08d5bc658351c2cc35456205b5ff92
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
    
    commit 4097461897df91041382ff6fcd2bfa7ee6b2448c upstream.
    
    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>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 23080619fa2e68574c1308463c7f1b5c6b254554
Author: phil.turnbull@oracle.com <phil.turnbull@oracle.com>
Date:   Tue Jul 26 15:14:35 2016 -0400

    l2tp: Correctly return -EBADF from pppol2tp_getname.
    
    commit 4ac36a4adaf80013a60013d6f829f5863d5d0e05 upstream.
    
    If 'tunnel' is NULL we should return -EBADF but the 'end_put_sess' path
    unconditionally sets 'error' back to zero. Rework the error path so it
    more closely matches pppol2tp_sendmsg.
    
    Fixes: fd558d186df2 ("l2tp: Split pppol2tp patch into separate l2tp and ppp parts")
    Signed-off-by: Phil Turnbull <phil.turnbull@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0a81aea44891fc53d8dbb713a7300a73c66b83ac
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
    
    commit d3e6952cfb7ba5f4bfa29d4803ba91f96ce1204d upstream.
    
    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.
    
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ec2c9950bff350c230a29394c9d0edf375069dfb
Author: Sebastian Reichel <sre@kernel.org>
Date:   Fri Jun 24 03:59:33 2016 +0200

    ARM: OMAP3: hwmod data: Add sysc information for DSI
    
    commit b46211d6dcfb81a8af66b8684a42d629183670d4 upstream.
    
    Add missing sysconfig/sysstatus information
    to OMAP3 hwmod. The information has been
    checked against OMAP34xx and OMAP36xx TRM.
    
    Without this change DSI block is not reset
    during boot, which is required for working
    Nokia N950 display.
    
    Signed-off-by: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 634adfb0fb379706cb207beb74602c3e8108ccbb
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Wed Jul 20 15:45:08 2016 -0700

    pps: do not crash when failed to register
    
    commit 368301f2fe4b07e5fb71dba3cc566bc59eb6705f upstream.
    
    With this command sequence:
    
      modprobe plip
      modprobe pps_parport
      rmmod pps_parport
    
    the partport_pps modules causes this crash:
    
      BUG: unable to handle kernel NULL pointer dereference at (null)
      IP: parport_detach+0x1d/0x60 [pps_parport]
      Oops: 0000 [#1] SMP
      ...
      Call Trace:
        parport_unregister_driver+0x65/0xc0 [parport]
        SyS_delete_module+0x187/0x210
    
    The sequence that builds up to this is:
    
     1) plip is loaded and takes the parport device for exclusive use:
    
        plip0: Parallel port at 0x378, using IRQ 7.
    
     2) pps_parport then fails to grab the device:
    
        pps_parport: parallel port PPS client
        parport0: cannot grant exclusive access for device pps_parport
        pps_parport: couldn't register with parport0
    
     3) rmmod of pps_parport is then killed because it tries to access
        pardev->name, but pardev (taken from port->cad) is NULL.
    
    So add a check for NULL in the test there too.
    
    Link: http://lkml.kernel.org/r/20160714115245.12651-1-jslaby@suse.cz
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Acked-by: Rodolfo Giometti <giometti@enneenne.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    nfs: don't create zero-length requests
    
    commit 149a4fddd0a72d526abbeac0c8deaab03559836a upstream.
    
    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>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9e1e3beb2c0980d88188dd1b87b066aae6952e97
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Jul 15 14:16:44 2016 +0300

    MIPS: RM7000: Double locking bug in rm7k_tc_disable()
    
    commit 58a7e1c140f3ad61646bc0cd9a1f6a9cafc0b225 upstream.
    
    We obviously intended to enable IRQs again at the end.
    
    Fixes: 745aef5df1e2 ('MIPS: RM7000: Add support for tertiary cache')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: linux-mips@linux-mips.org
    Cc: linux-kernel@vger.kernel.org
    Cc: kernel-janitors@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/13815/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 519f6d0c8d84b68346017cd26a1d3f55ad73f975
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Mon Jun 27 14:12:34 2016 -0700

    tty/vt/keyboard: fix OOB access in do_compute_shiftstate()
    
    commit 510cccb5b0c8868a2b302a0ab524da7912da648b upstream.
    
    The size of individual keymap in drivers/tty/vt/keyboard.c is NR_KEYS,
    which is currently 256, whereas number of keys/buttons in input device (and
    therefor in key_down) is much larger - KEY_CNT - 768, and that can cause
    out-of-bound access when we do
    
            sym = U(key_maps[0][k]);
    
    with large 'k'.
    
    To fix it we should not attempt iterating beyond smaller of NR_KEYS and
    KEY_CNT.
    
    Also while at it let's switch to for_each_set_bit() instead of open-coding
    it.
    
    Reported-by: Sasha Levin <sasha.levin@oracle.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 76d4f39c0d9b469ce4ba14f1a581cbb8c434b805
Author: Michael Walle <michael@walle.cc>
Date:   Tue Jul 19 16:43:26 2016 +0200

    hwmon: (adt7411) set bit 3 in CFG1 register
    
    commit b53893aae441a034bf4dbbad42fe218561d7d81f upstream.
    
    According to the datasheet you should only write 1 to this bit. If it is
    not set, at least AIN3 will return bad values on newer silicon revisions.
    
    Fixes: d84ca5b345c2 ("hwmon: Add driver for ADT7411 voltage and temperature sensor")
    Signed-off-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e96c4b7702a0f501ba7529bddfc1ef4429369fa9
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
    
    commit 144f4c98399e2c0ca60eb414c15a2c68125c18b8 upstream.
    
    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>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    [bwh: Backported to 3.2: adjusted context as noted above]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d1ba4fc268ac4645871cd18594a1893011d6d193
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Jul 18 16:24:37 2016 -0700

    brcmsmac: Initialize power in brcms_c_stf_ss_algo_channel_get()
    
    commit f823a2aa8f4674c095a5413b9e3ba12d82df06f2 upstream.
    
    wlc_phy_txpower_get_current() does a logical OR of power->flags, which
    presumes that power.flags was initiliazed earlier by the caller,
    unfortunately, this is not the case, so make sure we zero out the struct
    tx_power before calling into wlc_phy_txpower_get_current().
    
    Reported-by: coverity (CID 146011)
    Fixes: 5b435de0d7868 ("net: wireless: add brcm80211 drivers")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ffbce80bcb9d378c86e0fe47be6572b2fc1c5baa
Author: Andrey Pronin <apronin@chromium.org>
Date:   Thu Jun 30 10:25:43 2016 -0700

    tpm: read burstcount from TPM_STS in one 32-bit transaction
    
    commit 9754d45e997000ad4021bc4606cc266bb38d876f upstream.
    
    Some chips incorrectly support partial reads from TPM_STS register
    at non-zero offsets. Read the entire 32-bits register instead of
    making two 8-bit reads to support such devices and reduce the number
    of bus transactions when obtaining the burstcount from TPM_STS.
    
    Fixes: 27084efee0c3 ("tpm: driver for next generation TPM chips")
    Signed-off-by: Andrey Pronin <apronin@chromium.org>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    [bwh: Backported to 3.2:
     - Use raw ioread32() instead of tpm_tis_read32()
     - Adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    crypto: scatterwalk - Fix test in scatterwalk_done
    
    commit 5f070e81bee35f1b7bd1477bb223a873ff657803 upstream.
    
    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.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0b209feee8d6fd0162dd05437a24b0b0a81ca17c
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
    
    commit 23bc6ab0a0912146fd674a0becc758c3162baabc upstream.
    
    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>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b979e4df4859f3406d932a3ab6d577df7cfe48a1
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
    
    commit 3c0415fa08548e3bc63ef741762664497ab187ed upstream.
    
    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>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d92e64dae0457f6a406fbabc200734a11ae06e66
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Jul 14 13:44:56 2016 +0300

    mtd: pmcmsp-flash: Allocating too much in init_msp_flash()
    
    commit 79ad07d45743721010e766e65dc004ad249bd429 upstream.
    
    There is a cut and paste issue here.  The bug is that we are allocating
    more memory than necessary for msp_maps.  We should be allocating enough
    space for a map_info struct (144 bytes) but we instead allocate enough
    for an mtd_info struct (1840 bytes).  It's a small waste.
    
    The other part of this is not harmful but when we allocated msp_flash
    then we allocated enough space fro a map_info pointer instead of an
    mtd_info pointer.  But since pointers are the same size it works out
    fine.
    
    Anyway, I decided to clean up all three allocations a bit to make them
    a bit more consistent and clear.
    
    Fixes: 68aa0fa87f6d ('[MTD] PMC MSP71xx flash/rootfs mappings')
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Brian Norris <computersforpeace@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    ext4: short-cut orphan cleanup on error
    
    commit c65d5c6c81a1f27dec5f627f67840726fcd146de upstream.
    
    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>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit eaa9958d2c1eaa8452032d434931be448c181ca0
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Thu Jul 14 23:02:47 2016 -0400

    ext4: fix reference counting bug on block allocation error
    
    commit 554a5ccc4e4a20c5f3ec859de0842db4b4b9c77e upstream.
    
    If we hit this error when mounted with errors=continue or
    errors=remount-ro:
    
        EXT4-fs error (device loop0): ext4_mb_mark_diskspace_used:2940: comm ext4.exe: Allocating blocks 5090-6081 which overlap fs metadata
    
    then ext4_mb_new_blocks() will call ext4_mb_release_context() and try to
    continue. However, ext4_mb_release_context() is the wrong thing to call
    here since we are still actually using the allocation context.
    
    Instead, just error out. We could retry the allocation, but there is a
    possibility of getting stuck in an infinite loop instead, so this seems
    safer.
    
    [ Fixed up so we don't return EAGAIN to userspace. --tytso ]
    
    Fixes: 8556e8f3b6 ("ext4: Don't allow new groups to be added during block allocation")
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    [bwh: Backported to 3.2:
     - Use EIO instead of EFSCORRUPTED
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    KVM: nVMX: Fix memory corruption when using VMCS shadowing
    
    commit 2f1fe81123f59271bddda673b60116bde9660385 upstream.
    
    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>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [bwh: Backported to 3.2: vcpu_load() returns void]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bcad1c3975a8b59d2695c5f1dc85aba24330a51f
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Jul 17 12:25:16 2014 +0200

    KVM: nVMX: fix lifetime issues for vmcs02
    
    commit 4fa7734c62cdd8c07edd54fa5a5e91482273071a upstream.
    
    free_nested needs the loaded_vmcs to be valid if it is a vmcs02, in
    order to detach it from the shadow vmcs.  However, this is not
    available anymore after commit 26a865f4aa8e (KVM: VMX: fix use after
    free of vmx->loaded_vmcs, 2014-01-03).
    
    Revert that patch, and fix its problem by forcing a vmcs01 as the
    active VMCS before freeing all the nested VMX state.
    
    Reported-by: Wanpeng Li <wanpeng.li@linux.intel.com>
    Tested-by: Wanpeng Li <wanpeng.li@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ac5ec0900b43db086358fec29cdd9604c9edca54
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Tue Jul 12 16:04:35 2016 -0700

    net: ethoc: Fix early error paths
    
    commit 386512d18b268c6182903239f9f3390f03ce4c7b upstream.
    
    In case any operation fails before we can successfully go the point
    where we would register a MDIO bus, we would be going to an error label
    which involves unregistering then freeing this yet to be created MDIO
    bus. Update all error paths to go to label free which is the only one
    valid until either the clock is enabled, or the MDIO bus is allocated
    and registered. This fixes kernel oops observed while trying to
    dereference the MDIO bus structure which is not yet allocated.
    
    Fixes: a1702857724f ("net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    Bluetooth: Add support of 13d3:3490 AR3012 device
    
    commit 12d868964f7352e8b18e755488f7265a93431de1 upstream.
    
    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>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    Bluetooth: Add USB ID 13D3:3487 to ath3k
    
    commit 72f9f8b58bc743e6b6abdc68f60db98486c3ffcf upstream.
    
    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: Ben Hutchings <ben@decadent.org.uk>

commit 84f51dca935f35cdf0cd6c27365379970908629c
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Wed Jun 29 13:55:22 2016 -0400

    NFS: Don't drop CB requests with invalid principals
    
    commit a4e187d83d88eeaba6252aac0a2ffe5eaa73a818 upstream.
    
    Before commit 778be232a207 ("NFS do not find client in NFSv4
    pg_authenticate"), the Linux callback server replied with
    RPC_AUTH_ERROR / RPC_AUTH_BADCRED, instead of dropping the CB
    request. Let's restore that behavior so the server has a chance to
    do something useful about it, and provide a warning that helps
    admins correct the problem.
    
    Fixes: 778be232a207 ("NFS do not find client in NFSv4 ...")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Tested-by: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 80f69c177edf53936ec365c1d2d5c055efd498d3
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Wed Jun 29 13:55:14 2016 -0400

    svc: Avoid garbage replies when pc_func() returns rpc_drop_reply
    
    commit 0533b13072f4bf35738290d2cf9e299c7bc6c42a upstream.
    
    If an RPC program does not set vs_dispatch and pc_func() returns
    rpc_drop_reply, the server sends a reply anyway containing a single
    word containing the value RPC_DROP_REPLY (in network byte-order, of
    course). This is a nonsense RPC message.
    
    Fixes: 9e701c610923 ("svcrpc: simpler request dropping")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Tested-by: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 319c66dd0f3a699dfb7b530728f3febb944dd7b5
Author: Lukas Wunner <lukas@wunner.de>
Date:   Sun Jun 12 12:31:53 2016 +0200

    x86/quirks: Add early quirk to reset Apple AirPort card
    
    commit abb2bafd295fe962bbadc329dbfb2146457283ac upstream.
    
    The EFI firmware on Macs contains a full-fledged network stack for
    downloading OS X images from osrecovery.apple.com. Unfortunately
    on Macs introduced 2011 and 2012, EFI brings up the Broadcom 4331
    wireless card on every boot and leaves it enabled even after
    ExitBootServices has been called. The card continues to assert its IRQ
    line, causing spurious interrupts if the IRQ is shared. It also corrupts
    memory by DMAing received packets, allowing for remote code execution
    over the air. This only stops when a driver is loaded for the wireless
    card, which may be never if the driver is not installed or blacklisted.
    
    The issue seems to be constrained to the Broadcom 4331. Chris Milsted
    has verified that the newer Broadcom 4360 built into the MacBookPro11,3
    (2013/2014) does not exhibit this behaviour. The chances that Apple will
    ever supply a firmware fix for the older machines appear to be zero.
    
    The solution is to reset the card on boot by writing to a reset bit in
    its mmio space. This must be done as an early quirk and not as a plain
    vanilla PCI quirk to successfully combat memory corruption by DMAed
    packets: Matthew Garrett found out in 2012 that the packets are written
    to EfiBootServicesData memory (http://mjg59.dreamwidth.org/11235.html).
    This type of memory is made available to the page allocator by
    efi_free_boot_services(). Plain vanilla PCI quirks run much later, in
    subsys initcall level. In-between a time window would be open for memory
    corruption. Random crashes occurring in this time window and attributed
    to DMAed packets have indeed been observed in the wild by Chris
    Bainbridge.
    
    When Matthew Garrett analyzed the memory corruption issue in 2012, he
    sought to fix it with a grub quirk which transitions the card to D3hot:
    http://git.savannah.gnu.org/cgit/grub.git/commit/?id=9d34bb85da56
    
    This approach does not help users with other bootloaders and while it
    may prevent DMAed packets, it does not cure the spurious interrupts
    emanating from the card. Unfortunately the card's mmio space is
    inaccessible in D3hot, so to reset it, we have to undo the effect of
    Matthew's grub patch and transition the card back to D0.
    
    Note that the quirk takes a few shortcuts to reduce the amount of code:
    The size of BAR 0 and the location of the PM capability is identical
    on all affected machines and therefore hardcoded. Only the address of
    BAR 0 differs between models. Also, it is assumed that the BCMA core
    currently mapped is the 802.11 core. The EFI driver seems to always take
    care of this.
    
    Michael Büsch, Bjorn Helgaas and Matt Fleming contributed feedback
    towards finding the best solution to this problem.
    
    The following should be a comprehensive list of affected models:
        iMac13,1        2012  21.5"       [Root Port 00:1c.3 = 8086:1e16]
        iMac13,2        2012  27"         [Root Port 00:1c.3 = 8086:1e16]
        Macmini5,1      2011  i5 2.3 GHz  [Root Port 00:1c.1 = 8086:1c12]
        Macmini5,2      2011  i5 2.5 GHz  [Root Port 00:1c.1 = 8086:1c12]
        Macmini5,3      2011  i7 2.0 GHz  [Root Port 00:1c.1 = 8086:1c12]
        Macmini6,1      2012  i5 2.5 GHz  [Root Port 00:1c.1 = 8086:1e12]
        Macmini6,2      2012  i7 2.3 GHz  [Root Port 00:1c.1 = 8086:1e12]
        MacBookPro8,1   2011  13"         [Root Port 00:1c.1 = 8086:1c12]
        MacBookPro8,2   2011  15"         [Root Port 00:1c.1 = 8086:1c12]
        MacBookPro8,3   2011  17"         [Root Port 00:1c.1 = 8086:1c12]
        MacBookPro9,1   2012  15"         [Root Port 00:1c.1 = 8086:1e12]
        MacBookPro9,2   2012  13"         [Root Port 00:1c.1 = 8086:1e12]
        MacBookPro10,1  2012  15"         [Root Port 00:1c.1 = 8086:1e12]
        MacBookPro10,2  2012  13"         [Root Port 00:1c.1 = 8086:1e12]
    
    For posterity, spurious interrupts caused by the Broadcom 4331 wireless
    card resulted in splats like this (stacktrace omitted):
    
        irq 17: nobody cared (try booting with the "irqpoll" option)
        handlers:
        [<ffffffff81374370>] pcie_isr
        [<ffffffffc0704550>] sdhci_irq [sdhci] threaded [<ffffffffc07013c0>] sdhci_thread_irq [sdhci]
        [<ffffffffc0a0b960>] azx_interrupt [snd_hda_codec]
        Disabling IRQ #17
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=79301
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=111781
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=728916
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=895951#c16
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1009819
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1098621
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1149632#c5
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1279130
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1332732
    Tested-by: Konstantin Simanov <k.simanov@stlk.ru>        # [MacBookPro8,1]
    Tested-by: Lukas Wunner <lukas@wunner.de>                # [MacBookPro9,1]
    Tested-by: Bryan Paradis <bryan.paradis@gmail.com>       # [MacBookPro9,2]
    Tested-by: Andrew Worsley <amworsley@gmail.com>          # [MacBookPro10,1]
    Tested-by: Chris Bainbridge <chris.bainbridge@gmail.com> # [MacBookPro10,2]
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Acked-by: Rafał Miłecki <zajec5@gmail.com>
    Acked-by: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Chris Milsted <cmilsted@redhat.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: Matthew Garrett <mjg59@srcf.ucam.org>
    Cc: Michael Buesch <m@bues.ch>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: b43-dev@lists.infradead.org
    Cc: linux-pci@vger.kernel.org
    Cc: linux-wireless@vger.kernel.org
    Link: http://lkml.kernel.org/r/48d0972ac82a53d460e5fce77a07b2560db95203.1465690253.git.lukas@wunner.de
    [ Did minor readability edits. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2:
     - early_ioremap() is declared in <asm/io.h> not <asm/early_ioremap.h>
     - Add definition of BCMA_RESET_ST
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 46278ae53cfb20ca5fb357848e8a18cafb8e1fe6
Author: Lukas Wunner <lukas@wunner.de>
Date:   Sun Jun 12 12:31:53 2016 +0200

    x86/quirks: Reintroduce scanning of secondary buses
    
    commit 850c321027c2e31d0afc71588974719a4b565550 upstream.
    
    We used to scan secondary buses until the following commit that
    was applied in 2009:
    
      8659c406ade3 ("x86: only scan the root bus in early PCI quirks")
    
    which commit constrained early quirks to the root bus only. Its
    motivation was to prevent application of the nvidia_bugs quirk
    on secondary buses.
    
    We're about to add a quirk to reset the Broadcom 4331 wireless card on
    2011/2012 Macs, which is located on a secondary bus behind a PCIe root
    port. To facilitate that, reintroduce scanning of secondary buses.
    
    The commit message of 8659c406ade3 notes that scanning only the root bus
    "saves quite some unnecessary scanning work". The algorithm used prior
    to 8659c406ade3 was particularly time consuming because it scanned
    buses 0 to 31 brute force. To avoid lengthening boot time, employ a
    recursive strategy which only scans buses that are actually reachable
    from the root bus.
    
    Yinghai Lu pointed out that the secondary bus number read from a
    bridge's config space may be invalid, in particular a value of 0 would
    cause an infinite loop. The PCI core goes beyond that and recurses to a
    child bus only if its bus number is greater than the parent bus number
    (see pci_scan_bridge()). Since the root bus is numbered 0, this implies
    that secondary buses may not be 0. Do the same on early scanning.
    
    If this algorithm is found to significantly impact boot time or cause
    infinite loops on broken hardware, it would be possible to limit its
    recursion depth: The Broadcom 4331 quirk applies at depth 1, all others
    at depth 0, so the bus need not be scanned deeper than that for now. An
    alternative approach would be to revert to scanning only the root bus,
    and apply the Broadcom 4331 quirk to the root ports 8086:1c12, 8086:1e12
    and 8086:1e16. Apple always positioned the card behind either of these
    three ports. The quirk would then check presence of the card in slot 0
    below the root port and do its deed.
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    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: Yinghai Lu <yinghai@kernel.org>
    Cc: linux-pci@vger.kernel.org
    Link: http://lkml.kernel.org/r/f0daa70dac1a9b2483abdb31887173eb6ab77bdf.1465690253.git.lukas@wunner.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c5ca328c7caca8695a6d2e3f6e813fdeaa6109eb
Author: Lukas Wunner <lukas@wunner.de>
Date:   Sun Jun 12 12:31:53 2016 +0200

    x86/quirks: Apply nvidia_bugs quirk only on root bus
    
    commit 447d29d1d3aed839e74c2401ef63387780ac51ed upstream.
    
    Since the following commit:
    
      8659c406ade3 ("x86: only scan the root bus in early PCI quirks")
    
    ... early quirks are only applied to devices on the root bus.
    
    The motivation was to prevent application of the nvidia_bugs quirk on
    secondary buses.
    
    We're about to reintroduce scanning of secondary buses for a quirk to
    reset the Broadcom 4331 wireless card on 2011/2012 Macs. To prevent
    regressions, open code the requirement to apply nvidia_bugs only on the
    root bus.
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    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: Yinghai Lu <yinghai@kernel.org>
    Link: http://lkml.kernel.org/r/4d5477c1d76b2f0387a780f2142bbcdd9fee869b.1465690253.git.lukas@wunner.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5a5521966e7d7f9773a9f1d867975113837e1335
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Tue Jul 5 22:12:36 2016 -0700

    ppp: defer netns reference release for ppp channel
    
    commit 205e1e255c479f3fd77446415706463b282f94e4 upstream.
    
    Matt reported that we have a NULL pointer dereference
    in ppp_pernet() from ppp_connect_channel(),
    i.e. pch->chan_net is NULL.
    
    This is due to that a parallel ppp_unregister_channel()
    could happen while we are in ppp_connect_channel(), during
    which pch->chan_net set to NULL. Since we need a reference
    to net per channel, it makes sense to sync the refcnt
    with the life time of the channel, therefore we should
    release this reference when we destroy it.
    
    Fixes: 1f461dcdd296 ("ppp: take reference on channels netns")
    Reported-by: Matt Bennett <Matt.Bennett@alliedtelesis.co.nz>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: linux-ppp@vger.kernel.org
    Cc: Guillaume Nault <g.nault@alphalink.fr>
    Cc: Cyrill Gorcunov <gorcunov@openvz.org>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reviewed-by: Cyrill Gorcunov <gorcunov@openvz.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 69d5af27ee4f7245fc1a18a444992578f804e2a7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jul 8 08:05:19 2016 +0200

    ALSA: ctl: Stop notification after disconnection
    
    commit f388cdcdd160687c6650833f286b9c89c50960ff upstream.
    
    snd_ctl_remove() has a notification for the removal event.  It's
    superfluous when done during the device got disconnected.  Although
    the notification itself is mostly harmless, it may potentially be
    harmful, and should be suppressed.  Actually some components PCM may
    free ctl elements during the disconnect or free callbacks, thus it's
    no theoretical issue.
    
    This patch adds the check of card->shutdown flag for avoiding
    unnecessary notifications after (or during) the disconnect.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    drm/radeon: Poll for both connect/disconnect on analog connectors
    
    commit 14ff8d48f2235295dfb3117693008e367b49cdb5 upstream.
    
    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.
    
    Signed-off-by: Lyude <cpaul@redhat.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    ext4: validate s_reserved_gdt_blocks on mount
    
    commit 5b9554dc5bf008ae7f68a52e3d7e76c0920938a2 upstream.
    
    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>
    [bwh: Backported to 3.2:
     - Drop the second check in ext4_init_block_bitmap() since it can't return
       an error code
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 90a737fbbbfb5842874ba203e54fd5406b532a90
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
    
    commit 6a7fd522a7c94cdef0a3b08acf8e6702056e635c upstream.
    
    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>
    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: Ben Hutchings <ben@decadent.org.uk>

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

    ext4: check for extents that wrap around
    
    commit f70749ca42943faa4d4dcce46dfdcaadb1d0c4b6 upstream.
    
    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>
    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: Ben Hutchings <ben@decadent.org.uk>

commit 1b87c10c62ee86db9f0593a8f4addd2b1a6f1b99
Author: Cameron Gutman <aicommander@gmail.com>
Date:   Wed Jun 29 09:51:35 2016 -0700

    Input: xpad - validate USB endpoint count during probe
    
    commit caca925fca4fb30c67be88cacbe908eec6721e43 upstream.
    
    This prevents a malicious USB device from causing an oops.
    
    Signed-off-by: Cameron Gutman <aicommander@gmail.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f1e9174e1a5d011aeb22830a5c016094eee521e4
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()
    
    commit 15e4292a2d21e9997fdb2b8c014cc461b3f268f0 upstream.
    
    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")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c91172cb2b6997cf2830eccc3e4f2d948595fb64
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()
    
    commit 4fdef698383db07d829da567e0e405fc41ff3a89 upstream.
    
    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")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    serial: samsung: Fix possible out of bounds access on non-DT platform
    
    commit 926b7b5122c96e1f18cd20e85a286c7ec8d18c97 upstream.
    
    On non-DeviceTree platforms, the index of serial device is a static
    variable incremented on each probe.  It is incremented even if deferred
    probe happens when getting the clock in s3c24xx_serial_init_port().
    
    This index is used for referencing elements of statically allocated
    s3c24xx_serial_ports array.  In case of re-probe, the index will point
    outside of this array leading to memory corruption.
    
    Increment the index only on successful probe.
    
    Reported-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Fixes: b497549a035c ("[ARM] S3C24XX: Split serial driver into core and per-cpu drivers")
    Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f64965a7001c02be726e6df396136ac4f93258df
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
    
    commit b30bdfa86431afbafe15284a3ad5ac19b49b88e3 upstream.
    
    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.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 97220c6cedc6e7f54f4db5ea999e48a7b774b9d4
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Mon Jun 13 18:32:45 2016 +0800

    sched/cputime: Fix prev steal time accouting during CPU hotplug
    
    commit 3d89e5478bf550a50c99e93adf659369798263b0 upstream.
    
    Commit:
    
      e9532e69b8d1 ("sched/cputime: Fix steal time accounting vs. CPU hotplug")
    
    ... set rq->prev_* to 0 after a CPU hotplug comes back, in order to
    fix the case where (after CPU hotplug) steal time is smaller than
    rq->prev_steal_time.
    
    However, this should never happen. Steal time was only smaller because of the
    KVM-specific bug fixed by the previous patch.  Worse, the previous patch
    triggers a bug on CPU hot-unplug/plug operation: because
    rq->prev_steal_time is cleared, all of the CPU's past steal time will be
    accounted again on hot-plug.
    
    Since the root cause has been fixed, we can just revert commit e9532e69b8d1.
    
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 'commit e9532e69b8d1 ("sched/cputime: Fix steal time accounting vs. CPU hotplug")'
    Link: http://lkml.kernel.org/r/1465813966-3116-3-git-send-email-wanpeng.li@hotmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 17cc521e4b98258c40dee16e40d834ae22cc2d8c
Author: Bharata B Rao <bharata@linux.vnet.ibm.com>
Date:   Thu May 12 19:04:15 2016 +0530

    powerpc/numa: Fix multiple bugs in memory_hotplug_max()
    
    commit 45b64ee64970dee9392229302efe1d1567e8d304 upstream.
    
    memory_hotplug_max() uses hot_add_drconf_memory_max() to get maxmimum
    addressable memory by referring to ibm,dyanamic-memory property. There
    are three problems with the current approach:
    
    1 hot_add_drconf_memory_max() assumes that ibm,dynamic-memory includes
      all the LMBs of the guest, but that is not true for PowerKVM which
      populates only DR LMBs (LMBs that can be hotplugged/removed) in that
      property.
    2 hot_add_drconf_memory_max() multiplies lmb-size with lmb-count to arrive
      at the max possible address. Since ibm,dynamic-memory doesn't include
      RMA LMBs, the address thus obtained will be less than the actual max
      address. For example, if max possible memory size is 32G, with lmb-size
      of 256MB there can be 127 LMBs in ibm,dynamic-memory (1 LMB for RMA
      which won't be present here).  hot_add_drconf_memory_max() would then
      return the max addressable memory as 127 * 256MB = 31.75GB, the max
      address should have been 32G which is what ibm,lrdr-capacity shows.
    3 In PowerKVM, there can be a gap between the end of boot time RAM and
      beginning of hotplug RAM area. So just multiplying lmb-count with
      lmb-size will not provide the correct max possible address for PowerKVM.
    
    This patch fixes 1 by using ibm,lrdr-capacity property to return the max
    addressable memory whenever the property is present. Then it fixes 2 & 3
    by fetching the address of the last LMB in ibm,dynamic-memory property.
    
    Fixes: cd34206e949b ("powerpc: Add memory_hotplug_max()")
    Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
    Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bc64d7bf6753b764b1a4c7865b11fce433d49b7f
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()
    
    commit 0e0e36774081534783aa8eeb9f6fbddf98d3c061 upstream.
    
    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.
    
    Reported-by: Maninder Singh <maninder1.s@samsung.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>