commit 18e6ee0440a7ab853e4ca0f1403eeef1803ed970
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Aug 17 20:54:56 2018 +0200

    Linux 3.18.119

commit adfdcfe1c7cd5f163855b0d3ea5d3a75efddd576
Author: Mark Salyzyn <salyzyn@android.com>
Date:   Tue Jul 31 15:02:13 2018 -0700

    Bluetooth: hidp: buffer overflow in hidp_process_report
    
    commit 7992c18810e568b95c869b227137a2215702a805 upstream.
    
    CVE-2018-9363
    
    The buffer length is unsigned at all layers, but gets cast to int and
    checked in hidp_process_report and can lead to a buffer overflow.
    Switch len parameter to unsigned int to resolve issue.
    
    This affects 3.18 and newer kernels.
    
    Signed-off-by: Mark Salyzyn <salyzyn@android.com>
    Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough")
    Cc: Marcel Holtmann <marcel@holtmann.org>
    Cc: Johan Hedberg <johan.hedberg@gmail.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: linux-bluetooth@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: security@kernel.org
    Cc: kernel-team@android.com
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b55d18a7b09dae3af7d9b5b69e55b9a0edd5cd7
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Jul 23 10:54:58 2018 -0700

    crypto: ablkcipher - fix crash flushing dcache in error path
    
    commit 318abdfbe708aaaa652c79fb500e9bd60521f9dc upstream.
    
    Like the skcipher_walk and blkcipher_walk cases:
    
    scatterwalk_done() is only meant to be called after a nonzero number of
    bytes have been processed, since scatterwalk_pagedone() will flush the
    dcache of the *previous* page.  But in the error case of
    ablkcipher_walk_done(), e.g. if the input wasn't an integer number of
    blocks, scatterwalk_done() was actually called after advancing 0 bytes.
    This caused a crash ("BUG: unable to handle kernel paging request")
    during '!PageSlab(page)' on architectures like arm and arm64 that define
    ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE, provided that the input was
    page-aligned as in that case walk->offset == 0.
    
    Fix it by reorganizing ablkcipher_walk_done() to skip the
    scatterwalk_advance() and scatterwalk_done() if an error has occurred.
    
    Reported-by: Liu Chao <liuchao741@huawei.com>
    Fixes: bf06099db18a ("crypto: skcipher - Add ablkcipher_walk interfaces")
    Cc: <stable@vger.kernel.org> # v2.6.35+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c34837deef0c7294e6a846c778df08ebbcefe0de
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Jul 23 10:54:57 2018 -0700

    crypto: blkcipher - fix crash flushing dcache in error path
    
    commit 0868def3e4100591e7a1fdbf3eed1439cc8f7ca3 upstream.
    
    Like the skcipher_walk case:
    
    scatterwalk_done() is only meant to be called after a nonzero number of
    bytes have been processed, since scatterwalk_pagedone() will flush the
    dcache of the *previous* page.  But in the error case of
    blkcipher_walk_done(), e.g. if the input wasn't an integer number of
    blocks, scatterwalk_done() was actually called after advancing 0 bytes.
    This caused a crash ("BUG: unable to handle kernel paging request")
    during '!PageSlab(page)' on architectures like arm and arm64 that define
    ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE, provided that the input was
    page-aligned as in that case walk->offset == 0.
    
    Fix it by reorganizing blkcipher_walk_done() to skip the
    scatterwalk_advance() and scatterwalk_done() if an error has occurred.
    
    This bug was found by syzkaller fuzzing.
    
    Reproducer, assuming ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE:
    
            #include <linux/if_alg.h>
            #include <sys/socket.h>
            #include <unistd.h>
    
            int main()
            {
                    struct sockaddr_alg addr = {
                            .salg_type = "skcipher",
                            .salg_name = "ecb(aes-generic)",
                    };
                    char buffer[4096] __attribute__((aligned(4096))) = { 0 };
                    int fd;
    
                    fd = socket(AF_ALG, SOCK_SEQPACKET, 0);
                    bind(fd, (void *)&addr, sizeof(addr));
                    setsockopt(fd, SOL_ALG, ALG_SET_KEY, buffer, 16);
                    fd = accept(fd, NULL, NULL);
                    write(fd, buffer, 15);
                    read(fd, buffer, 15);
            }
    
    Reported-by: Liu Chao <liuchao741@huawei.com>
    Fixes: 5cde0af2a982 ("[CRYPTO] cipher: Added block cipher type")
    Cc: <stable@vger.kernel.org> # v2.6.19+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58a60fc8e062fd61859c5aa7a0756d20517961b3
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Jun 18 10:22:38 2018 -0700

    crypto: vmac - separate tfm and request context
    
    commit bb29648102335586e9a66289a1d98a0cb392b6e5 upstream.
    
    syzbot reported a crash in vmac_final() when multiple threads
    concurrently use the same "vmac(aes)" transform through AF_ALG.  The bug
    is pretty fundamental: the VMAC template doesn't separate per-request
    state from per-tfm (per-key) state like the other hash algorithms do,
    but rather stores it all in the tfm context.  That's wrong.
    
    Also, vmac_final() incorrectly zeroes most of the state including the
    derived keys and cached pseudorandom pad.  Therefore, only the first
    VMAC invocation with a given key calculates the correct digest.
    
    Fix these bugs by splitting the per-tfm state from the per-request state
    and using the proper init/update/final sequencing for requests.
    
    Reproducer for the crash:
    
        #include <linux/if_alg.h>
        #include <sys/socket.h>
        #include <unistd.h>
    
        int main()
        {
                int fd;
                struct sockaddr_alg addr = {
                        .salg_type = "hash",
                        .salg_name = "vmac(aes)",
                };
                char buf[256] = { 0 };
    
                fd = socket(AF_ALG, SOCK_SEQPACKET, 0);
                bind(fd, (void *)&addr, sizeof(addr));
                setsockopt(fd, SOL_ALG, ALG_SET_KEY, buf, 16);
                fork();
                fd = accept(fd, NULL, NULL);
                for (;;)
                        write(fd, buf, 256);
        }
    
    The immediate cause of the crash is that vmac_ctx_t.partial_size exceeds
    VMAC_NHBYTES, causing vmac_final() to memset() a negative length.
    
    Reported-by: syzbot+264bca3a6e8d645550d3@syzkaller.appspotmail.com
    Fixes: f1939f7c5645 ("crypto: vmac - New hash algorithm for intel_txt support")
    Cc: <stable@vger.kernel.org> # v2.6.32+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b39ac2f453c56158c0945c0dc8685518760bd457
Author: Eric Biggers <ebiggers@google.com>
Date:   Mon Jun 18 10:22:37 2018 -0700

    crypto: vmac - require a block cipher with 128-bit block size
    
    commit 73bf20ef3df262026c3470241ae4ac8196943ffa upstream.
    
    The VMAC template assumes the block cipher has a 128-bit block size, but
    it failed to check for that.  Thus it was possible to instantiate it
    using a 64-bit block size cipher, e.g. "vmac(cast5)", causing
    uninitialized memory to be used.
    
    Add the needed check when instantiating the template.
    
    Fixes: f1939f7c5645 ("crypto: vmac - New hash algorithm for intel_txt support")
    Cc: <stable@vger.kernel.org> # v2.6.32+
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd635c1cb35b4d5491b137630c3bb62e3ae34969
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sun Jul 1 19:46:06 2018 -0700

    kbuild: verify that $DEPMOD is installed
    
    commit 934193a654c1f4d0643ddbf4b2529b508cae926e upstream.
    
    Verify that 'depmod' ($DEPMOD) is installed.
    This is a partial revert of commit 620c231c7a7f
    ("kbuild: do not check for ancient modutils tools").
    
    Also update Documentation/process/changes.rst to refer to
    kmod instead of module-init-tools.
    
    Fixes kernel bugzilla #198965:
    https://bugzilla.kernel.org/show_bug.cgi?id=198965
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi>
    Cc: Lucas De Marchi <lucas.de.marchi@gmail.com>
    Cc: Michal Marek <michal.lkml@markovi.net>
    Cc: Jessica Yu <jeyu@kernel.org>
    Cc: Chih-Wei Huang <cwhuang@linux.org.tw>
    Cc: stable@vger.kernel.org # any kernel since 2012
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 982ad049e60e54f5a1425123637b770ad3f65df6
Author: Liwei Song <liwei.song@windriver.com>
Date:   Tue Jun 13 00:59:53 2017 -0400

    i2c: ismt: fix wrong device address when unmap the data buffer
    
    commit 17e83549e199d89aace7788a9f11c108671eecf5 upstream.
    
    Fix the following kernel bug:
    
    kernel BUG at drivers/iommu/intel-iommu.c:3260!
    invalid opcode: 0000 [#5] PREEMPT SMP
    Hardware name: Intel Corp. Harcuvar/Server, BIOS HAVLCRB0.X64.0013.D39.1608311820 08/31/2016
    task: ffff880175389950 ti: ffff880176bec000 task.ti: ffff880176bec000
    RIP: 0010:[<ffffffff8150a83b>]  [<ffffffff8150a83b>] intel_unmap+0x25b/0x260
    RSP: 0018:ffff880176bef5e8  EFLAGS: 00010296
    RAX: 0000000000000024 RBX: ffff8800773c7c88 RCX: 000000000000ce04
    RDX: 0000000080000000 RSI: 0000000000000000 RDI: 0000000000000009
    RBP: ffff880176bef638 R08: 0000000000000010 R09: 0000000000000004
    R10: ffff880175389c78 R11: 0000000000000a4f R12: ffff8800773c7868
    R13: 00000000ffffac88 R14: ffff8800773c7818 R15: 0000000000000001
    FS:  00007fef21258700(0000) GS:ffff88017b5c0000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000000000066d6d8 CR3: 000000007118c000 CR4: 00000000003406e0
    Stack:
     00000000ffffac88 ffffffff8199867f ffff880176bef5f8 ffff880100000030
     ffff880176bef668 ffff8800773c7c88 ffff880178288098 ffff8800772c0010
     ffff8800773c7818 0000000000000001 ffff880176bef648 ffffffff8150a86e
    Call Trace:
     [<ffffffff8199867f>] ? printk+0x46/0x48
     [<ffffffff8150a86e>] intel_unmap_page+0xe/0x10
     [<ffffffffa039d99b>] ismt_access+0x27b/0x8fa [i2c_ismt]
     [<ffffffff81554420>] ? __pm_runtime_suspend+0xa0/0xa0
     [<ffffffff815544a0>] ? pm_suspend_timer_fn+0x80/0x80
     [<ffffffff81554420>] ? __pm_runtime_suspend+0xa0/0xa0
     [<ffffffff815544a0>] ? pm_suspend_timer_fn+0x80/0x80
     [<ffffffff8143dfd0>] ? pci_bus_read_dev_vendor_id+0xf0/0xf0
     [<ffffffff8172b36c>] i2c_smbus_xfer+0xec/0x4b0
     [<ffffffff810aa4d5>] ? vprintk_emit+0x345/0x530
     [<ffffffffa038936b>] i2cdev_ioctl_smbus+0x12b/0x240 [i2c_dev]
     [<ffffffff810aa829>] ? vprintk_default+0x29/0x40
     [<ffffffffa0389b33>] i2cdev_ioctl+0x63/0x1ec [i2c_dev]
     [<ffffffff811b04c8>] do_vfs_ioctl+0x328/0x5d0
     [<ffffffff8119d8ec>] ? vfs_write+0x11c/0x190
     [<ffffffff8109d449>] ? rt_up_read+0x19/0x20
     [<ffffffff811b07f1>] SyS_ioctl+0x81/0xa0
     [<ffffffff819a351b>] system_call_fastpath+0x16/0x6e
    
    This happen When run "i2cdetect -y 0" detect SMBus iSMT adapter.
    
    After finished I2C block read/write, when unmap the data buffer,
    a wrong device address was pass to dma_unmap_single().
    
    To fix this, give dma_unmap_single() the "dev" parameter, just like
    what dma_map_single() does, then unmap can find the right devices.
    
    Fixes: 13f35ac14cd0 ("i2c: Adding support for Intel iSMT SMBus 2.0 host controller")
    Signed-off-by: Liwei Song <liwei.song@windriver.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdc103fb630478aa031c1b808a8e57bc734d2e36
Author: Andrey Ryabinin <a.ryabinin@samsung.com>
Date:   Wed Dec 10 15:42:22 2014 -0800

    mm: slub: fix format mismatches in slab_err() callers
    
    commit f6edde9cbe0634e4391b6e421a609ca3f57f6c38 upstream.
    
    Adding __printf(3, 4) to slab_err exposed following:
    
      mm/slub.c: In function `check_slab':
      mm/slub.c:852:4: warning: format `%u' expects argument of type `unsigned int', but argument 4 has type `const char *' [-Wformat=]
          s->name, page->objects, maxobj);
          ^
      mm/slub.c:852:4: warning: too many arguments for format [-Wformat-extra-args]
      mm/slub.c:857:4: warning: format `%u' expects argument of type `unsigned int', but argument 4 has type `const char *' [-Wformat=]
          s->name, page->inuse, page->objects);
          ^
      mm/slub.c:857:4: warning: too many arguments for format [-Wformat-extra-args]
    
      mm/slub.c: In function `on_freelist':
      mm/slub.c:905:4: warning: format `%d' expects argument of type `int', but argument 5 has type `long unsigned int' [-Wformat=]
          "should be %d", page->objects, max_objects);
    
    Fix first two warnings by removing redundant s->name.
    Fix the last by changing type of max_object from unsigned long to int.
    
    Signed-off-by: Andrey Ryabinin <a.ryabinin@samsung.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Acked-by: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84d2099e70072468af1f565853f8958d9e12e3fd
Author: Erick Reyes <erickreyes@google.com>
Date:   Wed Aug 15 17:55:48 2018 -0700

    ALSA: info: Check for integer overflow in snd_info_entry_write()
    
    Commit 4adb7bcbcb69 ("ALSA: core: Use seq_file for text proc file
    reads") heavily refactored ALSA procfs and fixed the overflow as
    a side-effect, so this fix only applies to kernels < 4.2 and
    there is no upstream equivalent
    
    snd_info_entry_write() resizes the buffer with an unsigned long
    size argument that gets truncated because resize_info_buffer()
    takes the size parameter as an unsigned int. On 64-bit kernels,
    this causes the following copy_to_user() to write out-of-bounds
    if (pos + count) can't be represented by an unsigned int.
    
    Signed-off-by: Siqi Lin <siqilin@google.com>
    Signed-off-by: Erick Reyes <erickreyes@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 208255c7a3bfdb4e7a02d1aba8c4c68affd9027e
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Apr 28 21:37:03 2018 +0900

    kprobes/x86: Fix %p uses in error messages
    
    commit 0ea063306eecf300fcf06d2f5917474b580f666f upstream.
    
    Remove all %p uses in error messages in kprobes/x86.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
    Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: David Howells <dhowells@redhat.com>
    Cc: David S . Miller <davem@davemloft.net>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Jon Medhurst <tixy@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Tobin C . Harding <me@tobin.cc>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: acme@kernel.org
    Cc: akpm@linux-foundation.org
    Cc: brueckner@linux.vnet.ibm.com
    Cc: linux-arch@vger.kernel.org
    Cc: rostedt@goodmis.org
    Cc: schwidefsky@de.ibm.com
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/lkml/152491902310.9916.13355297638917767319.stgit@devbox
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af773a647f6cae37658a3e235b08a417960d36a8
Author: Oleksij Rempel <o.rempel@pengutronix.de>
Date:   Fri Jun 15 09:41:29 2018 +0200

    ARM: dts: imx6sx: fix irq for pcie bridge
    
    commit 1bcfe0564044be578841744faea1c2f46adc8178 upstream.
    
    Use the correct IRQ line for the MSI controller in the PCIe host
    controller. Apparently a different IRQ line is used compared to other
    i.MX6 variants. Without this change MSI IRQs aren't properly propagated
    to the upstream interrupt controller.
    
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
    Fixes: b1d17f68e5c5 ("ARM: dts: imx: add initial imx6sx device tree source")
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4111fe47e3fe2e30dceb3e15b2cf696eb94618b7
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Aug 9 17:51:32 2018 -0400

    fix __legitimize_mnt()/mntput() race
    
    commit 119e1ef80ecfe0d1deb6378d4ab41f5b71519de1 upstream.
    
    __legitimize_mnt() has two problems - one is that in case of success
    the check of mount_lock is not ordered wrt preceding increment of
    refcount, making it possible to have successful __legitimize_mnt()
    on one CPU just before the otherwise final mntpu() on another,
    with __legitimize_mnt() not seeing mntput() taking the lock and
    mntput() not seeing the increment done by __legitimize_mnt().
    Solved by a pair of barriers.
    
    Another is that failure of __legitimize_mnt() on the second
    read_seqretry() leaves us with reference that'll need to be
    dropped by caller; however, if that races with final mntput()
    we can end up with caller dropping rcu_read_lock() and doing
    mntput() to release that reference - with the first mntput()
    having freed the damn thing just as rcu_read_lock() had been
    dropped.  Solution: in "do mntput() yourself" failure case
    grab mount_lock, check if MNT_DOOMED has been set by racing
    final mntput() that has missed our increment and if it has -
    undo the increment and treat that as "failure, caller doesn't
    need to drop anything" case.
    
    It's not easy to hit - the final mntput() has to come right
    after the first read_seqretry() in __legitimize_mnt() *and*
    manage to miss the increment done by __legitimize_mnt() before
    the second read_seqretry() in there.  The things that are almost
    impossible to hit on bare hardware are not impossible on SMP
    KVM, though...
    
    Reported-by: Oleg Nesterov <oleg@redhat.com>
    Fixes: 48a066e72d97 ("RCU'd vsfmounts")
    Cc: stable@vger.kernel.org
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f4d6842ea3716b8b9bc8f470ea217670b03d8bc
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Aug 9 17:21:17 2018 -0400

    fix mntput/mntput race
    
    commit 9ea0a46ca2c318fcc449c1e6b62a7230a17888f1 upstream.
    
    mntput_no_expire() does the calculation of total refcount under mount_lock;
    unfortunately, the decrement (as well as all increments) are done outside
    of it, leading to false positives in the "are we dropping the last reference"
    test.  Consider the following situation:
            * mnt is a lazy-umounted mount, kept alive by two opened files.  One
    of those files gets closed.  Total refcount of mnt is 2.  On CPU 42
    mntput(mnt) (called from __fput()) drops one reference, decrementing component
            * After it has looked at component #0, the process on CPU 0 does
    mntget(), incrementing component #0, gets preempted and gets to run again -
    on CPU 69.  There it does mntput(), which drops the reference (component #69)
    and proceeds to spin on mount_lock.
            * On CPU 42 our first mntput() finishes counting.  It observes the
    decrement of component #69, but not the increment of component #0.  As the
    result, the total it gets is not 1 as it should've been - it's 0.  At which
    point we decide that vfsmount needs to be killed and proceed to free it and
    shut the filesystem down.  However, there's still another opened file
    on that filesystem, with reference to (now freed) vfsmount, etc. and we are
    screwed.
    
    It's not a wide race, but it can be reproduced with artificial slowdown of
    the mnt_get_count() loop, and it should be easier to hit on SMP KVM setups.
    
    Fix consists of moving the refcount decrement under mount_lock; the tricky
    part is that we want (and can) keep the fast case (i.e. mount that still
    has non-NULL ->mnt_ns) entirely out of mount_lock.  All places that zero
    mnt->mnt_ns are dropping some reference to mnt and they call synchronize_rcu()
    before that mntput().  IOW, if mntput() observes (under rcu_read_lock())
    a non-NULL ->mnt_ns, it is guaranteed that there is another reference yet to
    be dropped.
    
    Reported-by: Jann Horn <jannh@google.com>
    Tested-by: Jann Horn <jannh@google.com>
    Fixes: 48a066e72d97 ("RCU'd vsfmounts")
    Cc: stable@vger.kernel.org
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f48b39f2437fc159b818aac85ffef35521e5709
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Aug 6 09:03:58 2018 -0400

    root dentries need RCU-delayed freeing
    
    commit 90bad5e05bcdb0308cfa3d3a60f5c0b9c8e2efb3 upstream.
    
    Since mountpoint crossing can happen without leaving lazy mode,
    root dentries do need the same protection against having their
    memory freed without RCU delay as everything else in the tree.
    
    It's partially hidden by RCU delay between detaching from the
    mount tree and dropping the vfsmount reference, but the starting
    point of pathwalk can be on an already detached mount, in which
    case umount-caused RCU delay has already passed by the time the
    lazy pathwalk grabs rcu_read_lock().  If the starting point
    happens to be at the root of that vfsmount *and* that vfsmount
    covers the entire filesystem, we get trouble.
    
    Fixes: 48a066e72d97 ("RCU'd vsfmounts")
    Cc: stable@vger.kernel.org
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38b901473177ece7e8c34eaa551b76b49774c4bc
Author: Juergen Gross <jgross@suse.com>
Date:   Thu Aug 9 16:42:16 2018 +0200

    xen/netfront: don't cache skb_shinfo()
    
    commit d472b3a6cf63cd31cae1ed61930f07e6cd6671b5 upstream.
    
    skb_shinfo() can change when calling __pskb_pull_tail(): Don't cache
    its return value.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>