commit 573b59e17e37fc19577630391c08f7b1e26609d8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Sep 7 08:34:25 2017 +0200

    Linux 4.4.87

commit d95827490c39d20c148b3c4c3d250f9cce294eb5
Author: Stephan Mueller <smueller@chronox.de>
Date:   Wed Aug 16 11:56:24 2017 +0200

    crypto: algif_skcipher - only call put_page on referenced and used pages
    
    commit 445a582738de6802669aeed9c33ca406c23c3b1f upstream.
    
    For asynchronous operation, SGs are allocated without a page mapped to
    them or with a page that is not used (ref-counted). If the SGL is freed,
    the code must only call put_page for an SG if there was a page assigned
    and ref-counted in the first place.
    
    This fixes a kernel crash when using io_submit with more than one iocb
    using the sendmsg and sendpage (vmsplice/splice) interface.
    
    Signed-off-by: Stephan Mueller <smueller@chronox.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab3ee6b53d678b37b90934fb67b01d5fc7aa3a85
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Fri Sep 1 18:55:33 2017 +0200

    epoll: fix race between ep_poll_callback(POLLFREE) and ep_free()/ep_remove()
    
    commit 138e4ad67afd5c6c318b056b4d17c17f2c0ca5c0 upstream.
    
    The race was introduced by me in commit 971316f0503a ("epoll:
    ep_unregister_pollwait() can use the freed pwq->whead").  I did not
    realize that nothing can protect eventpoll after ep_poll_callback() sets
    ->whead = NULL, only whead->lock can save us from the race with
    ep_free() or ep_remove().
    
    Move ->whead = NULL to the end of ep_poll_callback() and add the
    necessary barriers.
    
    TODO: cleanup the ewake/EPOLLEXCLUSIVE logic, it was confusing even
    before this patch.
    
    Hopefully this explains use-after-free reported by syzcaller:
    
            BUG: KASAN: use-after-free in debug_spin_lock_before
            ...
             _raw_spin_lock_irqsave+0x4a/0x60 kernel/locking/spinlock.c:159
             ep_poll_callback+0x29f/0xff0 fs/eventpoll.c:1148
    
    this is spin_lock(eventpoll->lock),
    
            ...
            Freed by task 17774:
            ...
             kfree+0xe8/0x2c0 mm/slub.c:3883
             ep_free+0x22c/0x2a0 fs/eventpoll.c:865
    
    Fixes: 971316f0503a ("epoll: ep_unregister_pollwait() can use the freed pwq->whead")
    Reported-by: 范龙飞 <long7573@126.com>
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 628212c89faeed34704977a0edcfaaaae467a34d
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Tue May 16 10:34:54 2017 +0100

    kvm: arm/arm64: Force reading uncached stage2 PGD
    
    commit 2952a6070e07ebdd5896f1f5b861acad677caded upstream.
    
    Make sure we don't use a cached value of the KVM stage2 PGD while
    resetting the PGD.
    
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Reviewed-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57ff696f54b5c51d8d4df00295341bec17fab36f
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Wed May 3 15:17:51 2017 +0100

    kvm: arm/arm64: Fix race in resetting stage2 PGD
    
    commit 6c0d706b563af732adb094c5bf807437e8963e84 upstream.
    
    In kvm_free_stage2_pgd() we check the stage2 PGD before holding
    the lock and proceed to take the lock if it is valid. And we unmap
    the page tables, followed by releasing the lock. We reset the PGD
    only after dropping this lock, which could cause a race condition
    where another thread waiting on or even holding the lock, could
    potentially see that the PGD is still valid and proceed to perform
    a stage2 operation and later encounter a NULL PGD.
    
    [223090.242280] Unable to handle kernel NULL pointer dereference at
    virtual address 00000040
    [223090.262330] PC is at unmap_stage2_range+0x8c/0x428
    [223090.262332] LR is at kvm_unmap_hva_handler+0x2c/0x3c
    [223090.262531] Call trace:
    [223090.262533] [<ffff0000080adb78>] unmap_stage2_range+0x8c/0x428
    [223090.262535] [<ffff0000080adf40>] kvm_unmap_hva_handler+0x2c/0x3c
    [223090.262537] [<ffff0000080ace2c>] handle_hva_to_gpa+0xb0/0x104
    [223090.262539] [<ffff0000080af988>] kvm_unmap_hva+0x5c/0xbc
    [223090.262543] [<ffff0000080a2478>]
    kvm_mmu_notifier_invalidate_page+0x50/0x8c
    [223090.262547] [<ffff0000082274f8>]
    __mmu_notifier_invalidate_page+0x5c/0x84
    [223090.262551] [<ffff00000820b700>] try_to_unmap_one+0x1d0/0x4a0
    [223090.262553] [<ffff00000820c5c8>] rmap_walk+0x1cc/0x2e0
    [223090.262555] [<ffff00000820c90c>] try_to_unmap+0x74/0xa4
    [223090.262557] [<ffff000008230ce4>] migrate_pages+0x31c/0x5ac
    [223090.262561] [<ffff0000081f869c>] compact_zone+0x3fc/0x7ac
    [223090.262563] [<ffff0000081f8ae0>] compact_zone_order+0x94/0xb0
    [223090.262564] [<ffff0000081f91c0>] try_to_compact_pages+0x108/0x290
    [223090.262569] [<ffff0000081d5108>] __alloc_pages_direct_compact+0x70/0x1ac
    [223090.262571] [<ffff0000081d64a0>] __alloc_pages_nodemask+0x434/0x9f4
    [223090.262572] [<ffff0000082256f0>] alloc_pages_vma+0x230/0x254
    [223090.262574] [<ffff000008235e5c>] do_huge_pmd_anonymous_page+0x114/0x538
    [223090.262576] [<ffff000008201bec>] handle_mm_fault+0xd40/0x17a4
    [223090.262577] [<ffff0000081fb324>] __get_user_pages+0x12c/0x36c
    [223090.262578] [<ffff0000081fb804>] get_user_pages_unlocked+0xa4/0x1b8
    [223090.262579] [<ffff0000080a3ce8>] __gfn_to_pfn_memslot+0x280/0x31c
    [223090.262580] [<ffff0000080a3dd0>] gfn_to_pfn_prot+0x4c/0x5c
    [223090.262582] [<ffff0000080af3f8>] kvm_handle_guest_abort+0x240/0x774
    [223090.262584] [<ffff0000080b2bac>] handle_exit+0x11c/0x1ac
    [223090.262586] [<ffff0000080ab99c>] kvm_arch_vcpu_ioctl_run+0x31c/0x648
    [223090.262587] [<ffff0000080a1d78>] kvm_vcpu_ioctl+0x378/0x768
    [223090.262590] [<ffff00000825df5c>] do_vfs_ioctl+0x324/0x5a4
    [223090.262591] [<ffff00000825e26c>] SyS_ioctl+0x90/0xa4
    [223090.262595] [<ffff000008085d84>] el0_svc_naked+0x38/0x3c
    
    This patch moves the stage2 PGD manipulation under the lock.
    
    Reported-by: Alexander Graf <agraf@suse.de>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Reviewed-by: Christoffer Dall <cdall@linaro.org>
    Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Christoffer Dall <cdall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94183009ac0e58972c2b4bf1bf13b61b1a23971b
Author: Xiangliang.Yu <Xiangliang.Yu@amd.com>
Date:   Wed Aug 16 14:25:51 2017 +0800

    drm/ttm: Fix accounting error when fail to get pages for pool
    
    commit 9afae2719273fa1d406829bf3498f82dbdba71c7 upstream.
    
    When fail to get needed page for pool, need to put allocated pages
    into pool. But current code has a miscalculation of allocated pages,
    correct it.
    
    Signed-off-by: Xiangliang.Yu <Xiangliang.Yu@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Reviewed-by: Monk Liu <monk.liu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b3dcc98d8df16913d260c8dae64ad6e5bfcb953
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Wed Aug 2 19:50:14 2017 +0200

    xfrm: policy: check policy direction value
    
    commit 7bab09631c2a303f87a7eb7e3d69e888673b9b7e upstream.
    
    The 'dir' parameter in xfrm_migrate() is a user-controlled byte which is used
    as an array index. This can lead to an out-of-bound access, kernel lockup and
    DoS. Add a check for the 'dir' value.
    
    This fixes CVE-2017-11600.
    
    References: https://bugzilla.redhat.com/show_bug.cgi?id=1474928
    Fixes: 80c9abaabf42 ("[XFRM]: Extension for dynamic update of endpoint address(es)")
    Reported-by: "bo Zhang" <zhangbo5891001@gmail.com>
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0c2e7567a34ca48c8a2d1c89d8a7a5ceb647e08
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Aug 31 16:47:43 2017 +0200

    wl1251: add a missing spin_lock_init()
    
    commit f581a0dd744fe32b0a8805e279c59ec1ac676d60 upstream.
    
    wl1251: add a missing spin_lock_init()
    
    This fixes the following kernel warning:
    
     [ 5668.771453] BUG: spinlock bad magic on CPU#0, kworker/u2:3/9745
     [ 5668.771850]  lock: 0xce63ef20, .magic: 00000000, .owner: <none>/-1,
     .owner_cpu: 0
     [ 5668.772277] CPU: 0 PID: 9745 Comm: kworker/u2:3 Tainted: G        W
     4.12.0-03002-gec979a4-dirty #40
     [ 5668.772796] Hardware name: Nokia RX-51 board
     [ 5668.773071] Workqueue: phy1 wl1251_irq_work
     [ 5668.773345] [<c010c9e4>] (unwind_backtrace) from [<c010a274>]
     (show_stack+0x10/0x14)
     [ 5668.773803] [<c010a274>] (show_stack) from [<c01545a4>]
     (do_raw_spin_lock+0x6c/0xa0)
     [ 5668.774230] [<c01545a4>] (do_raw_spin_lock) from [<c06ca578>]
     (_raw_spin_lock_irqsave+0x10/0x18)
     [ 5668.774658] [<c06ca578>] (_raw_spin_lock_irqsave) from [<c048c010>]
     (wl1251_op_tx+0x38/0x5c)
     [ 5668.775115] [<c048c010>] (wl1251_op_tx) from [<c06a12e8>]
     (ieee80211_tx_frags+0x188/0x1c0)
     [ 5668.775543] [<c06a12e8>] (ieee80211_tx_frags) from [<c06a138c>]
     (__ieee80211_tx+0x6c/0x130)
     [ 5668.775970] [<c06a138c>] (__ieee80211_tx) from [<c06a3dbc>]
     (ieee80211_tx+0xdc/0x104)
     [ 5668.776367] [<c06a3dbc>] (ieee80211_tx) from [<c06a4af0>]
     (__ieee80211_subif_start_xmit+0x454/0x8c8)
     [ 5668.776824] [<c06a4af0>] (__ieee80211_subif_start_xmit) from
     [<c06a4f94>] (ieee80211_subif_start_xmit+0x30/0x2fc)
     [ 5668.777343] [<c06a4f94>] (ieee80211_subif_start_xmit) from
     [<c0578848>] (dev_hard_start_xmit+0x80/0x118)
    ...
    
        by adding the missing spin_lock_init().
    
    Reported-by: Pavel Machek <pavel@ucw.cz>
    Cc: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f08f0aebf7084ad1c6359c22adb104fa006889c
Author: Steve French <smfrench@gmail.com>
Date:   Sun Aug 27 16:56:08 2017 -0500

    CIFS: remove endian related sparse warning
    
    commit 6e3c1529c39e92ed64ca41d53abadabbaa1d5393 upstream.
    
    Recent patch had an endian warning ie
    cifs: return ENAMETOOLONG for overlong names in cifs_open()/cifs_lookup()
    
    Signed-off-by: Steve French <smfrench@gmail.com>
    CC: Ronnie Sahlberg <lsahlber@redhat.com>
    Acked-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e596cc1454d4ca3ab1e233b9a89d3e44d7062f4e
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Thu Aug 24 15:16:40 2017 -0700

    CIFS: Fix maximum SMB2 header size
    
    commit 9e37b1784f2be9397a903307574ee565bbadfd75 upstream.
    
    Currently the maximum size of SMB2/3 header is set incorrectly which
    leads to hanging of directory listing operations on encrypted SMB3
    connections. Fix this by setting the maximum size to 170 bytes that
    is calculated as RFC1002 length field size (4) + transform header
    size (52) + SMB2 header size (64) + create response size (56).
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Acked-by: Sachin Prabhu <sprabhu@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cdda3497db80b8a218da3748b78012a22c397d0
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu Oct 1 01:35:55 2015 +0100

    alpha: uapi: Add support for __SANE_USERSPACE_TYPES__
    
    commit cec80d82142ab25c71eee24b529cfeaf17c43062 upstream.
    
    This fixes compiler errors in perf such as:
    
    tests/attr.c: In function 'store_event':
    tests/attr.c:66:27: error: format '%llu' expects argument of type 'long long unsigned int', but argument 6 has type '__u64 {aka long unsigned int}' [-Werror=format=]
      snprintf(path, PATH_MAX, "%s/event-%d-%llu-%d", dir,
                               ^
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Tested-by: Michael Cree <mcree@orcon.net.nz>
    Signed-off-by: Matt Turner <mattst88@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed48d9230e303aaff037d60fd866088c114184e5
Author: Waiman Long <longman@redhat.com>
Date:   Thu Aug 24 12:04:29 2017 -0400

    cpuset: Fix incorrect memory_pressure control file mapping
    
    commit 1c08c22c874ac88799cab1f78c40f46110274915 upstream.
    
    The memory_pressure control file was incorrectly set up without
    a private value (0, by default). As a result, this control
    file was treated like memory_migrate on read. By adding back the
    FILE_MEMORY_PRESSURE private value, the correct memory pressure value
    will be returned.
    
    Signed-off-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 7dbdb199d3bf ("cgroup: replace cftype->mode with CFTYPE_WORLD_WRITABLE")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15e94ec4ec2155cae1e0de64b5ea16277c21daf8
Author: Tejun Heo <tj@kernel.org>
Date:   Mon Aug 28 14:51:27 2017 -0700

    cpumask: fix spurious cpumask_of_node() on non-NUMA multi-node configs
    
    commit b339752d054fb32863418452dff350a1086885b1 upstream.
    
    When !NUMA, cpumask_of_node(@node) equals cpu_online_mask regardless of
    @node.  The assumption seems that if !NUMA, there shouldn't be more than
    one node and thus reporting cpu_online_mask regardless of @node is
    correct.  However, that assumption was broken years ago to support
    DISCONTIGMEM and whether a system has multiple nodes or not is
    separately controlled by NEED_MULTIPLE_NODES.
    
    This means that, on a system with !NUMA && NEED_MULTIPLE_NODES,
    cpumask_of_node() will report cpu_online_mask for all possible nodes,
    indicating that the CPUs are associated with multiple nodes which is an
    impossible configuration.
    
    This bug has been around forever but doesn't look like it has caused any
    noticeable symptoms.  However, it triggers a WARN recently added to
    workqueue to verify NUMA affinity configuration.
    
    Fix it by reporting empty cpumask on non-zero nodes if !NUMA.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-and-tested-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 857d0b3dd7566ebb70686a009c7100322ddf3bbe
Author: Yan, Zheng <zyan@redhat.com>
Date:   Fri Aug 4 11:22:31 2017 +0800

    ceph: fix readpage from fscache
    
    commit dd2bc473482eedc60c29cf00ad12568ce40ce511 upstream.
    
    ceph_readpage() unlocks page prematurely prematurely in the case
    that page is reading from fscache. Caller of readpage expects that
    page is uptodate when it get unlocked. So page shoule get locked
    by completion callback of fscache_read_or_alloc_pages()
    
    Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 043ccc9781cc2e2914253c1c6f17923905c83a4e
Author: Stephen Douthit <stephend@adiengineering.com>
Date:   Mon Aug 7 17:11:00 2017 -0400

    i2c: ismt: Return EMSGSIZE for block reads with bogus length
    
    commit ba201c4f5ebe13d7819081756378777d8153f23e upstream.
    
    Compare the number of bytes actually seen on the wire to the byte
    count field returned by the slave device.
    
    Previously we just overwrote the byte count returned by the slave
    with the real byte count and let the caller figure out if the
    message was sane.
    
    Signed-off-by: Stephen Douthit <stephend@adiengineering.com>
    Tested-by: Dan Priamo <danp@adiengineering.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fab3229af4e589d6a06201e14e2f3bfcc95ad9af
Author: Stephen Douthit <stephend@adiengineering.com>
Date:   Mon Aug 7 17:10:59 2017 -0400

    i2c: ismt: Don't duplicate the receive length for block reads
    
    commit b6c159a9cb69c2cf0bf59d4e12c3a2da77e4d994 upstream.
    
    According to Table 15-14 of the C2000 EDS (Intel doc #510524) the
    rx data pointed to by the descriptor dptr contains the byte count.
    
    desc->rxbytes reports all bytes read on the wire, including the
    "byte count" byte.  So if a device sends 4 bytes in response to a
    block read, on the wire and in the DMA buffer we see:
    
    count data1 data2 data3 data4
     0x04  0xde  0xad  0xbe  0xef
    
    That's what we want to return in data->block to the next level.
    
    Instead we were actually prefixing that with desc->rxbytes:
    
    bad
    count count data1 data2 data3 data4
     0x05  0x04  0xde  0xad  0xbe  0xef
    
    This was discovered while developing a BMC solution relying on the
    ipmi_ssif.c driver which was trying to interpret the bogus length
    field as part of the IPMI response.
    
    Signed-off-by: Stephen Douthit <stephend@adiengineering.com>
    Tested-by: Dan Priamo <danp@adiengineering.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e119fc492de91bf13535a61b67a199f92c391cf5
Author: James Hogan <james.hogan@imgtec.com>
Date:   Sat Aug 12 21:36:09 2017 -0700

    irqchip: mips-gic: SYNC after enabling GIC region
    
    commit 2c0e8382386f618c85d20cb05e7cf7df8cdd382c upstream.
    
    A SYNC is required between enabling the GIC region and actually trying
    to use it, even if the first access is a read, otherwise its possible
    depending on the timing (and in my case depending on the precise
    alignment of certain kernel code) to hit CM bus errors on that first
    access.
    
    Add the SYNC straight after setting the GIC base.
    
    [paul.burton@imgtec.com:
      Changes later in this series increase our likelihood of hitting this
      by reducing the amount of code that runs between enabling the GIC &
      accessing it.]
    
    Fixes: a7057270c280 ("irqchip: mips-gic: Add device-tree support")
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Signed-off-by: Paul Burton <paul.burton@imgtec.com>
    Acked-by: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Cc: James Hogan <james.hogan@imgtec.com>
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/17019/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>