commit d7b7345c3a5d9560ccb9d1551c7aab1d0126837c
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jun 11 12:24:13 2019 +0200

    Linux 4.4.181

commit f1d7eebd9d67f0710e225bcfd08f32a643f449d6
Author: Yunsheng Lin <linyunsheng@huawei.com>
Date:   Wed Dec 26 19:51:46 2018 +0800

    ethtool: check the return value of get_regs_len
    
    commit f9fc54d313fab2834f44f516459cdc8ac91d797f upstream.
    
    The return type for get_regs_len in struct ethtool_ops is int,
    the hns3 driver may return error when failing to get the regs
    len by sending cmd to firmware.
    
    Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 647f72b0d75c9faeec36b88fc051339e73008435
Author: David Ahern <dsahern@gmail.com>
Date:   Sun May 5 11:16:20 2019 -0700

    ipv4: Define __ipv4_neigh_lookup_noref when CONFIG_INET is disabled
    
    commit 9b3040a6aafd7898ece7fc7efcbca71e42aa8069 upstream.
    
    Define __ipv4_neigh_lookup_noref to return NULL when CONFIG_INET is disabled.
    
    Fixes: 4b2a2bfeb3f0 ("neighbor: Call __ipv4_neigh_lookup_noref in neigh_xmit")
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9696a8f3e6444c158173c7b3507e6742c137155
Author: Kirill Smelkov <kirr@nexedi.com>
Date:   Wed Apr 24 07:13:57 2019 +0000

    fuse: Add FOPEN_STREAM to use stream_open()
    
    commit bbd84f33652f852ce5992d65db4d020aba21f882 upstream.
    
    Starting from commit 9c225f2655e3 ("vfs: atomic f_pos accesses as per
    POSIX") files opened even via nonseekable_open gate read and write via lock
    and do not allow them to be run simultaneously. This can create read vs
    write deadlock if a filesystem is trying to implement a socket-like file
    which is intended to be simultaneously used for both read and write from
    filesystem client.  See commit 10dce8af3422 ("fs: stream_open - opener for
    stream-like files so that read and write can run simultaneously without
    deadlock") for details and e.g. commit 581d21a2d02a ("xenbus: fix deadlock
    on writes to /proc/xen/xenbus") for a similar deadlock example on
    /proc/xen/xenbus.
    
    To avoid such deadlock it was tempting to adjust fuse_finish_open to use
    stream_open instead of nonseekable_open on just FOPEN_NONSEEKABLE flags,
    but grepping through Debian codesearch shows users of FOPEN_NONSEEKABLE,
    and in particular GVFS which actually uses offset in its read and write
    handlers
    
            https://codesearch.debian.net/search?q=-%3Enonseekable+%3D
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1080
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1247-1346
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1399-1481
    
    so if we would do such a change it will break a real user.
    
    Add another flag (FOPEN_STREAM) for filesystem servers to indicate that the
    opened handler is having stream-like semantics; does not use file position
    and thus the kernel is free to issue simultaneous read and write request on
    opened file handle.
    
    This patch together with stream_open() should be added to stable kernels
    starting from v3.14+. This will allow to patch OSSPD and other FUSE
    filesystems that provide stream-like files to return FOPEN_STREAM |
    FOPEN_NONSEEKABLE in open handler and this way avoid the deadlock on all
    kernel versions. This should work because fuse_finish_open ignores unknown
    open flags returned from a filesystem and so passing FOPEN_STREAM to a
    kernel that is not aware of this flag cannot hurt. In turn the kernel that
    is not aware of FOPEN_STREAM will be < v3.14 where just FOPEN_NONSEEKABLE
    is sufficient to implement streams without read vs write deadlock.
    
    Cc: stable@vger.kernel.org # v3.14+
    Signed-off-by: Kirill Smelkov <kirr@nexedi.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bf0c459615ab0db33638cc64613bf682ffe9436
Author: Kirill Smelkov <kirr@nexedi.com>
Date:   Tue Mar 26 22:20:43 2019 +0000

    fs: stream_open - opener for stream-like files so that read and write can run simultaneously without deadlock
    
    commit 10dce8af34226d90fa56746a934f8da5dcdba3df upstream.
    
    Commit 9c225f2655e3 ("vfs: atomic f_pos accesses as per POSIX") added
    locking for file.f_pos access and in particular made concurrent read and
    write not possible - now both those functions take f_pos lock for the
    whole run, and so if e.g. a read is blocked waiting for data, write will
    deadlock waiting for that read to complete.
    
    This caused regression for stream-like files where previously read and
    write could run simultaneously, but after that patch could not do so
    anymore. See e.g. commit 581d21a2d02a ("xenbus: fix deadlock on writes
    to /proc/xen/xenbus") which fixes such regression for particular case of
    /proc/xen/xenbus.
    
    The patch that added f_pos lock in 2014 did so to guarantee POSIX thread
    safety for read/write/lseek and added the locking to file descriptors of
    all regular files. In 2014 that thread-safety problem was not new as it
    was already discussed earlier in 2006.
    
    However even though 2006'th version of Linus's patch was adding f_pos
    locking "only for files that are marked seekable with FMODE_LSEEK (thus
    avoiding the stream-like objects like pipes and sockets)", the 2014
    version - the one that actually made it into the tree as 9c225f2655e3 -
    is doing so irregardless of whether a file is seekable or not.
    
    See
    
        https://lore.kernel.org/lkml/53022DB1.4070805@gmail.com/
        https://lwn.net/Articles/180387
        https://lwn.net/Articles/180396
    
    for historic context.
    
    The reason that it did so is, probably, that there are many files that
    are marked non-seekable, but e.g. their read implementation actually
    depends on knowing current position to correctly handle the read. Some
    examples:
    
            kernel/power/user.c             snapshot_read
            fs/debugfs/file.c               u32_array_read
            fs/fuse/control.c               fuse_conn_waiting_read + ...
            drivers/hwmon/asus_atk0110.c    atk_debugfs_ggrp_read
            arch/s390/hypfs/inode.c         hypfs_read_iter
            ...
    
    Despite that, many nonseekable_open users implement read and write with
    pure stream semantics - they don't depend on passed ppos at all. And for
    those cases where read could wait for something inside, it creates a
    situation similar to xenbus - the write could be never made to go until
    read is done, and read is waiting for some, potentially external, event,
    for potentially unbounded time -> deadlock.
    
    Besides xenbus, there are 14 such places in the kernel that I've found
    with semantic patch (see below):
    
            drivers/xen/evtchn.c:667:8-24: ERROR: evtchn_fops: .read() can deadlock .write()
            drivers/isdn/capi/capi.c:963:8-24: ERROR: capi_fops: .read() can deadlock .write()
            drivers/input/evdev.c:527:1-17: ERROR: evdev_fops: .read() can deadlock .write()
            drivers/char/pcmcia/cm4000_cs.c:1685:7-23: ERROR: cm4000_fops: .read() can deadlock .write()
            net/rfkill/core.c:1146:8-24: ERROR: rfkill_fops: .read() can deadlock .write()
            drivers/s390/char/fs3270.c:488:1-17: ERROR: fs3270_fops: .read() can deadlock .write()
            drivers/usb/misc/ldusb.c:310:1-17: ERROR: ld_usb_fops: .read() can deadlock .write()
            drivers/hid/uhid.c:635:1-17: ERROR: uhid_fops: .read() can deadlock .write()
            net/batman-adv/icmp_socket.c:80:1-17: ERROR: batadv_fops: .read() can deadlock .write()
            drivers/media/rc/lirc_dev.c:198:1-17: ERROR: lirc_fops: .read() can deadlock .write()
            drivers/leds/uleds.c:77:1-17: ERROR: uleds_fops: .read() can deadlock .write()
            drivers/input/misc/uinput.c:400:1-17: ERROR: uinput_fops: .read() can deadlock .write()
            drivers/infiniband/core/user_mad.c:985:7-23: ERROR: umad_fops: .read() can deadlock .write()
            drivers/gnss/core.c:45:1-17: ERROR: gnss_fops: .read() can deadlock .write()
    
    In addition to the cases above another regression caused by f_pos
    locking is that now FUSE filesystems that implement open with
    FOPEN_NONSEEKABLE flag, can no longer implement bidirectional
    stream-like files - for the same reason as above e.g. read can deadlock
    write locking on file.f_pos in the kernel.
    
    FUSE's FOPEN_NONSEEKABLE was added in 2008 in a7c1b990f715 ("fuse:
    implement nonseekable open") to support OSSPD. OSSPD implements /dev/dsp
    in userspace with FOPEN_NONSEEKABLE flag, with corresponding read and
    write routines not depending on current position at all, and with both
    read and write being potentially blocking operations:
    
    See
    
        https://github.com/libfuse/osspd
        https://lwn.net/Articles/308445
    
        https://github.com/libfuse/osspd/blob/14a9cff0/osspd.c#L1406
        https://github.com/libfuse/osspd/blob/14a9cff0/osspd.c#L1438-L1477
        https://github.com/libfuse/osspd/blob/14a9cff0/osspd.c#L1479-L1510
    
    Corresponding libfuse example/test also describes FOPEN_NONSEEKABLE as
    "somewhat pipe-like files ..." with read handler not using offset.
    However that test implements only read without write and cannot exercise
    the deadlock scenario:
    
        https://github.com/libfuse/libfuse/blob/fuse-3.4.2-3-ga1bff7d/example/poll.c#L124-L131
        https://github.com/libfuse/libfuse/blob/fuse-3.4.2-3-ga1bff7d/example/poll.c#L146-L163
        https://github.com/libfuse/libfuse/blob/fuse-3.4.2-3-ga1bff7d/example/poll.c#L209-L216
    
    I've actually hit the read vs write deadlock for real while implementing
    my FUSE filesystem where there is /head/watch file, for which open
    creates separate bidirectional socket-like stream in between filesystem
    and its user with both read and write being later performed
    simultaneously. And there it is semantically not easy to split the
    stream into two separate read-only and write-only channels:
    
        https://lab.nexedi.com/kirr/wendelin.core/blob/f13aa600/wcfs/wcfs.go#L88-169
    
    Let's fix this regression. The plan is:
    
    1. We can't change nonseekable_open to include &~FMODE_ATOMIC_POS -
       doing so would break many in-kernel nonseekable_open users which
       actually use ppos in read/write handlers.
    
    2. Add stream_open() to kernel to open stream-like non-seekable file
       descriptors. Read and write on such file descriptors would never use
       nor change ppos. And with that property on stream-like files read and
       write will be running without taking f_pos lock - i.e. read and write
       could be running simultaneously.
    
    3. With semantic patch search and convert to stream_open all in-kernel
       nonseekable_open users for which read and write actually do not
       depend on ppos and where there is no other methods in file_operations
       which assume @offset access.
    
    4. Add FOPEN_STREAM to fs/fuse/ and open in-kernel file-descriptors via
       steam_open if that bit is present in filesystem open reply.
    
       It was tempting to change fs/fuse/ open handler to use stream_open
       instead of nonseekable_open on just FOPEN_NONSEEKABLE flags, but
       grepping through Debian codesearch shows users of FOPEN_NONSEEKABLE,
       and in particular GVFS which actually uses offset in its read and
       write handlers
    
            https://codesearch.debian.net/search?q=-%3Enonseekable+%3D
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1080
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1247-1346
            https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1399-1481
    
       so if we would do such a change it will break a real user.
    
    5. Add stream_open and FOPEN_STREAM handling to stable kernels starting
       from v3.14+ (the kernel where 9c225f2655 first appeared).
    
       This will allow to patch OSSPD and other FUSE filesystems that
       provide stream-like files to return FOPEN_STREAM | FOPEN_NONSEEKABLE
       in their open handler and this way avoid the deadlock on all kernel
       versions. This should work because fs/fuse/ ignores unknown open
       flags returned from a filesystem and so passing FOPEN_STREAM to a
       kernel that is not aware of this flag cannot hurt. In turn the kernel
       that is not aware of FOPEN_STREAM will be < v3.14 where just
       FOPEN_NONSEEKABLE is sufficient to implement streams without read vs
       write deadlock.
    
    This patch adds stream_open, converts /proc/xen/xenbus to it and adds
    semantic patch to automatically locate in-kernel places that are either
    required to be converted due to read vs write deadlock, or that are just
    safe to be converted because read and write do not use ppos and there
    are no other funky methods in file_operations.
    
    Regarding semantic patch I've verified each generated change manually -
    that it is correct to convert - and each other nonseekable_open instance
    left - that it is either not correct to convert there, or that it is not
    converted due to current stream_open.cocci limitations.
    
    The script also does not convert files that should be valid to convert,
    but that currently have .llseek = noop_llseek or generic_file_llseek for
    unknown reason despite file being opened with nonseekable_open (e.g.
    drivers/input/mousedev.c)
    
    Cc: Michael Kerrisk <mtk.manpages@gmail.com>
    Cc: Yongzhi Pan <panyongzhi@gmail.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Miklos Szeredi <miklos@szeredi.hu>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Kirill Tkhai <ktkhai@virtuozzo.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Julia Lawall <Julia.Lawall@lip6.fr>
    Cc: Nikolaus Rath <Nikolaus@rath.org>
    Cc: Han-Wen Nienhuys <hanwen@google.com>
    [ backport to 4.4: actually fixed deadlock on /proc/xen/xenbus as 581d21a2d02a was not backported to 4.4 ]
    Signed-off-by: Kirill Smelkov <kirr@nexedi.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f5fab865ae9b1969dbefa9f0f8bc96d16fd900f
Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Date:   Tue Apr 16 13:46:07 2019 +0200

    drm/gma500/cdv: Check vbt config bits when detecting lvds panels
    
    commit 7c420636860a719049fae9403e2c87804f53bdde upstream.
    
    Some machines have an lvds child device in vbt even though a panel is
    not attached. To make detection more reliable we now also check the lvds
    config bits available in the vbt.
    
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1665766
    Cc: stable@vger.kernel.org
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190416114607.1072-1-patrik.r.jakobsson@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e087f751911482594e24ed795fd46b555356279f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue May 7 11:36:34 2019 +0300

    genwqe: Prevent an integer overflow in the ioctl
    
    commit 110080cea0d0e4dfdb0b536e7f8a5633ead6a781 upstream.
    
    There are a couple potential integer overflows here.
    
            round_up(m->size + (m->addr & ~PAGE_MASK), PAGE_SIZE);
    
    The first thing is that the "m->size + (...)" addition could overflow,
    and the second is that round_up() overflows to zero if the result is
    within PAGE_SIZE of the type max.
    
    In this code, the "m->size" variable is an u64 but we're saving the
    result in "map_size" which is an unsigned long and genwqe_user_vmap()
    takes an unsigned long as well.  So I have used ULONG_MAX as the upper
    bound.  From a practical perspective unsigned long is fine/better than
    trying to change all the types to u64.
    
    Fixes: eaf4722d4645 ("GenWQE Character device and DDCB queue")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59565e8945185d194ede8b19f79e1824e1c2b4c7
Author: Paul Burton <paul.burton@mips.com>
Date:   Tue May 28 17:21:26 2019 +0000

    MIPS: pistachio: Build uImage.gz by default
    
    commit e4f2d1af7163becb181419af9dece9206001e0a6 upstream.
    
    The pistachio platform uses the U-Boot bootloader & generally boots a
    kernel in the uImage format. As such it's useful to build one when
    building the kernel, but to do so currently requires the user to
    manually specify a uImage target on the make command line.
    
    Make uImage.gz the pistachio platform's default build target, so that
    the default is to build a kernel image that we can actually boot on a
    board such as the MIPS Creator Ci40.
    
    Marked for stable backport as far as v4.1 where pistachio support was
    introduced. This is primarily useful for CI systems such as kernelci.org
    which will benefit from us building a suitable image which can then be
    booted as part of automated testing, extending our test coverage to the
    affected stable branches.
    
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
    Reviewed-by: Kevin Hilman <khilman@baylibre.com>
    Tested-by: Kevin Hilman <khilman@baylibre.com>
    URL: https://groups.io/g/kernelci/message/388
    Cc: stable@vger.kernel.org # v4.1+
    Cc: linux-mips@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8061c23f5378282ce1eedd4a42f04ddf8b685e87
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Mon May 27 11:42:07 2019 +0200

    fuse: fallocate: fix return with locked inode
    
    commit 35d6fcbb7c3e296a52136347346a698a35af3fda upstream.
    
    Do the proper cleanup in case the size check fails.
    
    Tested with xfstests:generic/228
    
    Reported-by: kbuild test robot <lkp@intel.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Fixes: 0cbade024ba5 ("fuse: honor RLIMIT_FSIZE in fuse_file_fallocate")
    Cc: Liu Bo <bo.liu@linux.alibaba.com>
    Cc: <stable@vger.kernel.org> # v3.5
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf30c19534676189ba7aa84fe78780a1030d78ca
Author: John David Anglin <dave.anglin@bell.net>
Date:   Mon May 27 20:15:14 2019 -0400

    parisc: Use implicit space register selection for loading the coherence index of I/O pdirs
    
    commit 63923d2c3800919774f5c651d503d1dd2adaddd5 upstream.
    
    We only support I/O to kernel space. Using %sr1 to load the coherence
    index may be racy unless interrupts are disabled. This patch changes the
    code used to load the coherence index to use implicit space register
    selection. This saves one instruction and eliminates the race.
    
    Tested on rp3440, c8000 and c3750.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0d1e74c8120fe0a682a1caacca47333d95ba043
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Jun 3 13:26:20 2019 -0700

    rcu: locking and unlocking need to always be at least barriers
    
    commit 66be4e66a7f422128748e3c3ef6ee72b20a6197b upstream.
    
    Herbert Xu pointed out that commit bb73c52bad36 ("rcu: Don't disable
    preemption for Tiny and Tree RCU readers") was incorrect in making the
    preempt_disable/enable() be conditional on CONFIG_PREEMPT_COUNT.
    
    If CONFIG_PREEMPT_COUNT isn't enabled, the preemption enable/disable is
    a no-op, but still is a compiler barrier.
    
    And RCU locking still _needs_ that compiler barrier.
    
    It is simply fundamentally not true that RCU locking would be a complete
    no-op: we still need to guarantee (for example) that things that can
    trap and cause preemption cannot migrate into the RCU locked region.
    
    The way we do that is by making it a barrier.
    
    See for example commit 386afc91144b ("spinlocks and preemption points
    need to be at least compiler barriers") from back in 2013 that had
    similar issues with spinlocks that become no-ops on UP: they must still
    constrain the compiler from moving other operations into the critical
    region.
    
    Now, it is true that a lot of RCU operations already use READ_ONCE() and
    WRITE_ONCE() (which in practice likely would never be re-ordered wrt
    anything remotely interesting), but it is also true that that is not
    globally the case, and that it's not even necessarily always possible
    (ie bitfields etc).
    
    Reported-by: Herbert Xu <herbert@gondor.apana.org.au>
    Fixes: bb73c52bad36 ("rcu: Don't disable preemption for Tiny and Tree RCU readers")
    Cc: stable@kernel.org
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44657dbba7c4d176bf813998cd937e6987a3cac6
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Jun 6 15:45:03 2019 +0200

    pktgen: do not sleep with the thread lock held.
    
    [ Upstream commit 720f1de4021f09898b8c8443f3b3e995991b6e3a ]
    
    Currently, the process issuing a "start" command on the pktgen procfs
    interface, acquires the pktgen thread lock and never release it, until
    all pktgen threads are completed. The above can blocks indefinitely any
    other pktgen command and any (even unrelated) netdevice removal - as
    the pktgen netdev notifier acquires the same lock.
    
    The issue is demonstrated by the following script, reported by Matteo:
    
    ip -b - <<'EOF'
            link add type dummy
            link add type veth
            link set dummy0 up
    EOF
    modprobe pktgen
    echo reset >/proc/net/pktgen/pgctrl
    {
            echo rem_device_all
            echo add_device dummy0
    } >/proc/net/pktgen/kpktgend_0
    echo count 0 >/proc/net/pktgen/dummy0
    echo start >/proc/net/pktgen/pgctrl &
    sleep 1
    rmmod veth
    
    Fix the above releasing the thread lock around the sleep call.
    
    Additionally we must prevent racing with forcefull rmmod - as the
    thread lock no more protects from them. Instead, acquire a self-reference
    before waiting for any thread. As a side effect, running
    
    rmmod pktgen
    
    while some thread is running now fails with "module in use" error,
    before this patch such command hanged indefinitely.
    
    Note: the issue predates the commit reported in the fixes tag, but
    this fix can't be applied before the mentioned commit.
    
    v1 -> v2:
     - no need to check for thread existence after flipping the lock,
       pktgen threads are freed only at net exit time
     -
    
    Fixes: 6146e6a43b35 ("[PKTGEN]: Removes thread_{un,}lock() macros.")
    Reported-and-tested-by: Matteo Croce <mcroce@redhat.com>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eded0b11c7a398c6f57e449f02f9d682964335fd
Author: Zhu Yanjun <yanjun.zhu@oracle.com>
Date:   Thu Jun 6 04:00:03 2019 -0400

    net: rds: fix memory leak in rds_ib_flush_mr_pool
    
    [ Upstream commit 85cb928787eab6a2f4ca9d2a798b6f3bed53ced1 ]
    
    When the following tests last for several hours, the problem will occur.
    
    Server:
        rds-stress -r 1.1.1.16 -D 1M
    Client:
        rds-stress -r 1.1.1.14 -s 1.1.1.16 -D 1M -T 30
    
    The following will occur.
    
    "
    Starting up....
    tsks   tx/s   rx/s  tx+rx K/s    mbi K/s    mbo K/s tx us/c   rtt us cpu
    %
      1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
      1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
      1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
      1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
    "
    >From vmcore, we can find that clean_list is NULL.
    
    >From the source code, rds_mr_flushd calls rds_ib_mr_pool_flush_worker.
    Then rds_ib_mr_pool_flush_worker calls
    "
     rds_ib_flush_mr_pool(pool, 0, NULL);
    "
    Then in function
    "
    int rds_ib_flush_mr_pool(struct rds_ib_mr_pool *pool,
                             int free_all, struct rds_ib_mr **ibmr_ret)
    "
    ibmr_ret is NULL.
    
    In the source code,
    "
    ...
    list_to_llist_nodes(pool, &unmap_list, &clean_nodes, &clean_tail);
    if (ibmr_ret)
            *ibmr_ret = llist_entry(clean_nodes, struct rds_ib_mr, llnode);
    
    /* more than one entry in llist nodes */
    if (clean_nodes->next)
            llist_add_batch(clean_nodes->next, clean_tail, &pool->clean_list);
    ...
    "
    When ibmr_ret is NULL, llist_entry is not executed. clean_nodes->next
    instead of clean_nodes is added in clean_list.
    So clean_nodes is discarded. It can not be used again.
    The workqueue is executed periodically. So more and more clean_nodes are
    discarded. Finally the clean_list is NULL.
    Then this problem will occur.
    
    Fixes: 1bc144b62524 ("net, rds, Replace xlist in net/rds/xlist.h with llist")
    Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54dd5e352cf72193cdab8b05d3d123abec4cc4bd
Author: Erez Alfasi <ereza@mellanox.com>
Date:   Mon May 20 17:42:52 2019 +0300

    net/mlx4_en: ethtool, Remove unsupported SFP EEPROM high pages query
    
    [ Upstream commit 135dd9594f127c8a82d141c3c8430e9e2143216a ]
    
    Querying EEPROM high pages data for SFP module is currently
    not supported by our driver but is still tried, resulting in
    invalid FW queries.
    
    Set the EEPROM ethtool data length to 256 for SFP module to
    limit the reading for page 0 only and prevent invalid FW queries.
    
    Fixes: 7202da8b7f71 ("ethtool, net/mlx4_en: Cable info, get_module_info/eeprom ethtool support")
    Signed-off-by: Erez Alfasi <ereza@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc475966e5f704f36ccc74575640e743fec248ad
Author: David Ahern <dsahern@gmail.com>
Date:   Wed May 1 18:18:42 2019 -0700

    neighbor: Call __ipv4_neigh_lookup_noref in neigh_xmit
    
    [ Upstream commit 4b2a2bfeb3f056461a90bd621e8bd7d03fa47f60 ]
    
    Commit cd9ff4de0107 changed the key for IFF_POINTOPOINT devices to
    INADDR_ANY but neigh_xmit which is used for MPLS encapsulations was not
    updated to use the altered key. The result is that every packet Tx does
    a lookup on the gateway address which does not find an entry, a new one
    is created only to find the existing one in the table right before the
    insert since arp_constructor was updated to reset the primary key. This
    is seen in the allocs and destroys counters:
        ip -s -4 ntable show | head -10 | grep alloc
    
    which increase for each packet showing the unnecessary overhread.
    
    Fix by having neigh_xmit use __ipv4_neigh_lookup_noref for NEIGH_ARP_TABLE.
    
    Fixes: cd9ff4de0107 ("ipv4: Make neigh lookup keys for loopback/point-to-point devices be INADDR_ANY")
    Reported-by: Alan Maguire <alan.maguire@oracle.com>
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Tested-by: Alan Maguire <alan.maguire@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5c6de6694ed690ffa64f996b7488eb3776b12a6
Author: Vivien Didelot <vivien.didelot@gmail.com>
Date:   Mon Jun 3 16:57:13 2019 -0400

    ethtool: fix potential userspace buffer overflow
    
    [ Upstream commit 0ee4e76937d69128a6a66861ba393ebdc2ffc8a2 ]
    
    ethtool_get_regs() allocates a buffer of size ops->get_regs_len(),
    and pass it to the kernel driver via ops->get_regs() for filling.
    
    There is no restriction about what the kernel drivers can or cannot do
    with the open ethtool_regs structure. They usually set regs->version
    and ignore regs->len or set it to the same size as ops->get_regs_len().
    
    But if userspace allocates a smaller buffer for the registers dump,
    we would cause a userspace buffer overflow in the final copy_to_user()
    call, which uses the regs.len value potentially reset by the driver.
    
    To fix this, make this case obvious and store regs.len before calling
    ops->get_regs(), to only copy as much data as requested by userspace,
    up to the value returned by ops->get_regs_len().
    
    While at it, remove the redundant check for non-null regbuf.
    
    Signed-off-by: Vivien Didelot <vivien.didelot@gmail.com>
    Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8795708bc9393885a43573c9bf41ca6d322dfd5f
Author: Nadav Amit <namit@vmware.com>
Date:   Mon Jun 4 09:47:13 2018 -0400

    media: uvcvideo: Fix uvc_alloc_entity() allocation alignment
    
    commit 89dd34caf73e28018c58cd193751e41b1f8bdc56 upstream.
    
    The use of ALIGN() in uvc_alloc_entity() is incorrect, since the size of
    (entity->pads) is not a power of two. As a stop-gap, until a better
    solution is adapted, use roundup() instead.
    
    Found by a static assertion. Compile-tested only.
    
    Fixes: 4ffc2d89f38a ("uvcvideo: Register subdevices for each entity")
    
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Cc: Doug Anderson <dianders@chromium.org>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b13a9580ef982393396968a27a2dad50dc42df2
Author: Peter Chen <peter.chen@nxp.com>
Date:   Tue Nov 8 10:08:24 2016 +0800

    usb: gadget: fix request length error for isoc transfer
    
    commit 982555fc26f9d8bcdbd5f9db0378fe0682eb4188 upstream.
    
    For isoc endpoint descriptor, the wMaxPacketSize is not real max packet
    size (see Table 9-13. Standard Endpoint Descriptor, USB 2.0 specifcation),
    it may contain the number of packet, so the real max packet should be
    ep->desc->wMaxPacketSize && 0x7ff.
    
    Cc: Felipe F. Tonello <eu@felipetonello.com>
    Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
    Fixes: 16b114a6d797 ("usb: gadget: fix usb_ep_align_maybe
      endianness and new usb_ep_aligna")
    
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b15aae1baa20e17fc153c21c269fed8c16f2853
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed Nov 15 09:35:02 2017 +0100

    net: cdc_ncm: GetNtbFormat endian fix
    
    commit 6314dab4b8fb8493d810e175cb340376052c69b6 upstream.
    
    The GetNtbFormat and SetNtbFormat requests operate on 16 bit little
    endian values. We get away with ignoring this most of the time, because
    we only care about USB_CDC_NCM_NTB16_FORMAT which is 0x0000.  This
    fails for USB_CDC_NCM_NTB32_FORMAT.
    
    Fix comparison between LE value from device and constant by converting
    the constant to LE.
    
    Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Fixes: 2b02c20ce0c2 ("cdc_ncm: Set NTB format again after altsetting switch for Huawei devices")
    Cc: Enrico Mioso <mrkiko.rs@gmail.com>
    Cc: Christian Panton <christian@panton.org>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Acked-By: Enrico Mioso <mrkiko.rs@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 613b4bc1951d8e91d720562ffa9451c007d31044
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jun 5 20:40:30 2019 +0200

    Revert "x86/build: Move _etext to actual end of .text"
    
    This reverts commit 392bef709659abea614abfe53cf228e7a59876a4.
    
    It seems to cause lots of problems when using the gold linker, and no
    one really needs this at the moment, so just revert it from the stable
    trees.
    
    Cc: Sami Tolvanen <samitolvanen@google.com>
    Reported-by: Kees Cook <keescook@chromium.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Reported-by: Alec Ari <neotheuser@gmail.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ad730b831780ba5532b6cbccc475852400d5e7c
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Fri May 20 16:58:36 2016 -0700

    userfaultfd: don't pin the user memory in userfaultfd_file_create()
    
    commit d2005e3f41d4f9299e2df6a967c8beb5086967a9 upstream.
    
    userfaultfd_file_create() increments mm->mm_users; this means that the
    memory won't be unmapped/freed if mm owner exits/execs, and UFFDIO_COPY
    after that can populate the orphaned mm more.
    
    Change userfaultfd_file_create() and userfaultfd_ctx_put() to use
    mm->mm_count to pin mm_struct.  This means that
    atomic_inc_not_zero(mm->mm_users) is needed when we are going to
    actually play with this memory.  Except handle_userfault() path doesn't
    need this, the caller must already have a reference.
    
    The patch adds the new trivial helper, mmget_not_zero(), it can have
    more users.
    
    Link: http://lkml.kernel.org/r/20160516172254.GA8595@redhat.com
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e06554db5e5c3d693141b84aba3a4f29b7d9ef5
Author: Arend van Spriel <arend.vanspriel@broadcom.com>
Date:   Thu Feb 14 13:43:48 2019 +0100

    brcmfmac: add subtype check for event handling in data path
    
    commit a4176ec356c73a46c07c181c6d04039fafa34a9f upstream.
    
    For USB there is no separate channel being used to pass events
    from firmware to the host driver and as such are passed over the
    data path. In order to detect mock event messages an additional
    check is needed on event subtype. This check is added conditionally
    using unlikely() keyword.
    
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Reviewed-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 4.4: adjust filenames]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 993b68aa3ef775f800cbc580846e1ba7cc82411c
Author: Arend Van Spriel <arend.vanspriel@broadcom.com>
Date:   Thu Apr 6 13:14:40 2017 +0100

    brcmfmac: add length checks in scheduled scan result handler
    
    commit 4835f37e3bafc138f8bfa3cbed2920dd56fed283 upstream.
    
    Assure the event data buffer is long enough to hold the array
    of netinfo items and that SSID length does not exceed the maximum
    of 32 characters as per 802.11 spec.
    
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Reviewed-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 4.4:
     - Move the assignment to "data" along with the assignment to "netinfo_start"
       that depends on it
     - Adjust filename, context, indentation]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35bcfbad5d946a50e2b29409e129ac673f7ce085
Author: Gavin Li <git@thegavinli.com>
Date:   Tue Jan 17 15:24:05 2017 -0800

    brcmfmac: fix incorrect event channel deduction
    
    commit 8e290cecdd0178f3d4cf7d463c51dc7e462843b4 upstream.
    
    brcmf_sdio_fromevntchan() was being called on the the data frame
    rather than the software header, causing some frames to be
    mischaracterized as on the event channel rather than the data channel.
    
    This fixes a major performance regression (due to dropped packets). With
    this patch the download speed jumped from 1Mbit/s back up to 40MBit/s due
    to the sheer amount of packets being incorrectly processed.
    
    Fixes: c56caa9db8ab ("brcmfmac: screening firmware event packet")
    Signed-off-by: Gavin Li <git@thegavinli.com>
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    [kvalo@codeaurora.org: improve commit logs based on email discussion]
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 4.4: adjust filename]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c12de962667bdb53816f7b552dbfd9344981085
Author: Arend van Spriel <arend@broadcom.com>
Date:   Mon Apr 11 11:35:27 2016 +0200

    brcmfmac: revise handling events in receive path
    
    commit 9c349892ccc90c6de2baaa69cc78449f58082273 upstream.
    
    Move event handling out of brcmf_netif_rx() avoiding the need
    to pass a flag. This flag is only ever true for USB hosts as
    other interface use separate brcmf_rx_event() function.
    
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Reviewed-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Arend van Spriel <arend@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 4.4 as dependency of commit a4176ec356c7
     "brcmfmac: add subtype check for event handling in data path"
     - Adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f4688a15c2481108f1bfb9e0e3b44214c1ea618
Author: Franky Lin <franky.lin@broadcom.com>
Date:   Mon Apr 11 11:35:25 2016 +0200

    brcmfmac: screening firmware event packet
    
    commit c56caa9db8abbbfb9e31325e0897705aa897db37 upstream.
    
    Firmware uses asynchronized events as a communication method to the
    host. The event packets are marked as ETH_P_LINK_CTL protocol type. For
    SDIO and PCIe bus, this kind of packets are delivered through virtual
    event channel not data channel. This patch adds a screening logic to
    make sure the event handler only processes the events coming from the
    correct channel.
    
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Signed-off-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Arend van Spriel <arend@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 4.4 adjust filenames]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6da841e9ae8736c87d684babdd0140c45e3d2a06
Author: Hante Meuleman <meuleman@broadcom.com>
Date:   Wed Feb 17 11:26:54 2016 +0100

    brcmfmac: Add length checks on firmware events
    
    commit 0aedbcaf6f182690790d98d90d5fe1e64c846c34 upstream.
    
    Add additional length checks on firmware events to create more
    robust code.
    
    Reviewed-by: Arend Van Spriel <arend@broadcom.com>
    Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
    Reviewed-by: Lei Zhang <leizh@broadcom.com>
    Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
    Signed-off-by: Arend van Spriel <arend@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 4.4:
     - Drop changes to brcmf_wowl_nd_results()
     - Adjust filenames]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c55a2cffa5caaf72db415558f8058f995578a773
Author: Daniel Axtens <dja@axtens.net>
Date:   Wed Jan 31 14:15:34 2018 +1100

    bnx2x: disable GSO where gso_size is too big for hardware
    
    commit 8914a595110a6eca69a5e275b323f5d09e18f4f9 upstream.
    
    If a bnx2x card is passed a GSO packet with a gso_size larger than
    ~9700 bytes, it will cause a firmware error that will bring the card
    down:
    
    bnx2x: [bnx2x_attn_int_deasserted3:4323(enP24p1s0f0)]MC assert!
    bnx2x: [bnx2x_mc_assert:720(enP24p1s0f0)]XSTORM_ASSERT_LIST_INDEX 0x2
    bnx2x: [bnx2x_mc_assert:736(enP24p1s0f0)]XSTORM_ASSERT_INDEX 0x0 = 0x00000000 0x25e43e47 0x00463e01 0x00010052
    bnx2x: [bnx2x_mc_assert:750(enP24p1s0f0)]Chip Revision: everest3, FW Version: 7_13_1
    ... (dump of values continues) ...
    
    Detect when the mac length of a GSO packet is greater than the maximum
    packet size (9700 bytes) and disable GSO.
    
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a33b6d4c8bc7ba93f9d1dc77826724e4df8da662
Author: Daniel Axtens <dja@axtens.net>
Date:   Wed Jan 31 14:15:33 2018 +1100

    net: create skb_gso_validate_mac_len()
    
    commit 2b16f048729bf35e6c28a40cbfad07239f9dcd90 upstream.
    
    If you take a GSO skb, and split it into packets, will the MAC
    length (L2 + L3 + L4 headers + payload) of those packets be small
    enough to fit within a given length?
    
    Move skb_gso_mac_seglen() to skbuff.h with other related functions
    like skb_gso_network_seglen() so we can use it, and then create
    skb_gso_validate_mac_len to do the full calculation.
    
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 4.4: There is no GSO_BY_FRAGS case to handle, so
     skb_gso_validate_mac_len() becomes a trivial comparison. Put it inline in
     <linux/skbuff.h>.]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c53c1a821d62eb8476425ebe79c0c0054ab45315
Author: Todd Kjos <tkjos@android.com>
Date:   Wed Feb 7 13:57:37 2018 -0800

    binder: replace "%p" with "%pK"
    
    commit 8ca86f1639ec5890d400fff9211aca22d0a392eb upstream.
    
    The format specifier "%p" can leak kernel addresses. Use
    "%pK" instead. There were 4 remaining cases in binder.c.
    
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 4.4: adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5280efe442b26f03028daccb775cafd3eda32517
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Wed May 29 18:02:44 2019 +0100

    binder: Replace "%p" with "%pK" for stable
    
    This was done as part of upstream commits fdfb4a99b6ab "8inder:
    separate binder allocator structure from binder proc", 19c987241ca1
    "binder: separate out binder_alloc functions", and 7a4408c6bd3e
    "binder: make sure accesses to proc/thread are safe".  However, those
    commits made lots of other changes that are not suitable for stable.
    
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 336c1662178544c2782da96ea9858676695c103d
Author: Roberto Bergantinos Corpas <rbergant@redhat.com>
Date:   Tue May 28 09:38:14 2019 +0200

    CIFS: cifs_read_allocate_pages: don't iterate through whole page array on ENOMEM
    
    commit 31fad7d41e73731f05b8053d17078638cf850fa6 upstream.
    
     In cifs_read_allocate_pages, in case of ENOMEM, we go through
    whole rdata->pages array but we have failed the allocation before
    nr_pages, therefore we may end up calling put_page with NULL
    pointer, causing oops
    
    Signed-off-by: Roberto Bergantinos Corpas <rbergant@redhat.com>
    Acked-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 360f8fe46f74cdbcc62304749aa940b474f4e879
Author: Zhenliang Wei <weizhenliang@huawei.com>
Date:   Fri May 31 22:30:52 2019 -0700

    kernel/signal.c: trace_signal_deliver when signal_group_exit
    
    commit 98af37d624ed8c83f1953b1b6b2f6866011fc064 upstream.
    
    In the fixes commit, removing SIGKILL from each thread signal mask and
    executing "goto fatal" directly will skip the call to
    "trace_signal_deliver".  At this point, the delivery tracking of the
    SIGKILL signal will be inaccurate.
    
    Therefore, we need to add trace_signal_deliver before "goto fatal" after
    executing sigdelset.
    
    Note: SEND_SIG_NOINFO matches the fact that SIGKILL doesn't have any info.
    
    Link: http://lkml.kernel.org/r/20190425025812.91424-1-weizhenliang@huawei.com
    Fixes: cf43a757fd4944 ("signal: Restore the stop PTRACE_EVENT_EXIT")
    Signed-off-by: Zhenliang Wei <weizhenliang@huawei.com>
    Reviewed-by: Christian Brauner <christian@brauner.io>
    Reviewed-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Ivan Delalande <colona@arista.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Deepa Dinamani <deepa.kernel@gmail.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a47d18731205a1659359083ef75e001e20cd648
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Fri May 31 22:30:26 2019 -0700

    memcg: make it work on sparse non-0-node systems
    
    commit 3e8589963773a5c23e2f1fe4bcad0e9a90b7f471 upstream.
    
    We have a single node system with node 0 disabled:
      Scanning NUMA topology in Northbridge 24
      Number of physical nodes 2
      Skipping disabled node 0
      Node 1 MemBase 0000000000000000 Limit 00000000fbff0000
      NODE_DATA(1) allocated [mem 0xfbfda000-0xfbfeffff]
    
    This causes crashes in memcg when system boots:
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
      #PF error: [normal kernel read fault]
    ...
      RIP: 0010:list_lru_add+0x94/0x170
    ...
      Call Trace:
       d_lru_add+0x44/0x50
       dput.part.34+0xfc/0x110
       __fput+0x108/0x230
       task_work_run+0x9f/0xc0
       exit_to_usermode_loop+0xf5/0x100
    
    It is reproducible as far as 4.12.  I did not try older kernels.  You have
    to have a new enough systemd, e.g.  241 (the reason is unknown -- was not
    investigated).  Cannot be reproduced with systemd 234.
    
    The system crashes because the size of lru array is never updated in
    memcg_update_all_list_lrus and the reads are past the zero-sized array,
    causing dereferences of random memory.
    
    The root cause are list_lru_memcg_aware checks in the list_lru code.  The
    test in list_lru_memcg_aware is broken: it assumes node 0 is always
    present, but it is not true on some systems as can be seen above.
    
    So fix this by avoiding checks on node 0.  Remember the memcg-awareness by
    a bool flag in struct list_lru.
    
    Link: http://lkml.kernel.org/r/20190522091940.3615-1-jslaby@suse.cz
    Fixes: 60d3fd32a7a9 ("list_lru: introduce per-memcg lists")
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Suggested-by: Vladimir Davydov <vdavydov.dev@gmail.com>
    Acked-by: Vladimir Davydov <vdavydov.dev@gmail.com>
    Reviewed-by: Shakeel Butt <shakeelb@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5db0a9c3cc525a57e0caa0f8d4d29ca845adc9e6
Author: Joe Burmeister <joe.burmeister@devtank.co.uk>
Date:   Mon May 13 11:23:57 2019 +0100

    tty: max310x: Fix external crystal register setup
    
    commit 5d24f455c182d5116dd5db8e1dc501115ecc9c2c upstream.
    
    The datasheet states:
    
      Bit 4: ClockEnSet the ClockEn bit high to enable an external clocking
    (crystal or clock generator at XIN). Set the ClockEn bit to 0 to disable
    clocking
      Bit 1: CrystalEnSet the CrystalEn bit high to enable the crystal
    oscillator. When using an external clock source at XIN, CrystalEn must
    be set low.
    
    The bit 4, MAX310X_CLKSRC_EXTCLK_BIT, should be set and was not.
    
    This was required to make the MAX3107 with an external crystal on our
    board able to send or receive data.
    
    Signed-off-by: Joe Burmeister <joe.burmeister@devtank.co.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e498745310d08eb08b5f48a7094df009579f1838
Author: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Date:   Mon May 20 20:38:48 2019 +0200

    tty: serial: msm_serial: Fix XON/XOFF
    
    commit 61c0e37950b88bad590056286c1d766b1f167f4e upstream.
    
    When the tty layer requests the uart to throttle, the current code
    executing in msm_serial will trigger "Bad mode in Error Handler" and
    generate an invalid stack frame in pstore before rebooting (that is if
    pstore is indeed configured: otherwise the user shall just notice a
    reboot with no further information dumped to the console).
    
    This patch replaces the PIO byte accessor with the word accessor
    already used in PIO mode.
    
    Fixes: 68252424a7c7 ("tty: serial: msm: Support big-endian CPUs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 986adddb9d8f4f5a18aa78e46d4e4303746146e6
Author: Lyude Paul <lyude@redhat.com>
Date:   Tue Apr 9 16:23:30 2019 -0400

    drm/nouveau/i2c: Disable i2c bus access after ->fini()
    
    commit 342406e4fbba9a174125fbfe6aeac3d64ef90f76 upstream.
    
    For a while, we've had the problem of i2c bus access not grabbing
    a runtime PM ref when it's being used in userspace by i2c-dev, resulting
    in nouveau spamming the kernel log with errors if anything attempts to
    access the i2c bus while the GPU is in runtime suspend. An example:
    
    [  130.078386] nouveau 0000:01:00.0: i2c: aux 000d: begin idle timeout ffffffff
    
    Since the GPU is in runtime suspend, the MMIO region that the i2c bus is
    on isn't accessible. On x86, the standard behavior for accessing an
    unavailable MMIO region is to just return ~0.
    
    Except, that turned out to be a lie. While computers with a clean
    concious will return ~0 in this scenario, some machines will actually
    completely hang a CPU on certian bad MMIO accesses. This was witnessed
    with someone's Lenovo ThinkPad P50, where sensors-detect attempting to
    access the i2c bus while the GPU was suspended would result in a CPU
    hang:
    
      CPU: 5 PID: 12438 Comm: sensors-detect Not tainted 5.0.0-0.rc4.git3.1.fc30.x86_64 #1
      Hardware name: LENOVO 20EQS64N17/20EQS64N17, BIOS N1EET74W (1.47 ) 11/21/2017
      RIP: 0010:ioread32+0x2b/0x30
      Code: 81 ff ff ff 03 00 77 20 48 81 ff 00 00 01 00 76 05 0f b7 d7 ed c3
      48 c7 c6 e1 0c 36 96 e8 2d ff ff ff b8 ff ff ff ff c3 8b 07 <c3> 0f 1f
      40 00 49 89 f0 48 81 fe ff ff 03 00 76 04 40 88 3e c3 48
      RSP: 0018:ffffaac3c5007b48 EFLAGS: 00000292 ORIG_RAX: ffffffffffffff13
      RAX: 0000000001111000 RBX: 0000000001111000 RCX: 0000043017a97186
      RDX: 0000000000000aaa RSI: 0000000000000005 RDI: ffffaac3c400e4e4
      RBP: ffff9e6443902c00 R08: ffffaac3c400e4e4 R09: ffffaac3c5007be7
      R10: 0000000000000004 R11: 0000000000000001 R12: ffff9e6445dd0000
      R13: 000000000000e4e4 R14: 00000000000003c4 R15: 0000000000000000
      FS:  00007f253155a740(0000) GS:ffff9e644f600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00005630d1500358 CR3: 0000000417c44006 CR4: 00000000003606e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       g94_i2c_aux_xfer+0x326/0x850 [nouveau]
       nvkm_i2c_aux_i2c_xfer+0x9e/0x140 [nouveau]
       __i2c_transfer+0x14b/0x620
       i2c_smbus_xfer_emulated+0x159/0x680
       ? _raw_spin_unlock_irqrestore+0x1/0x60
       ? rt_mutex_slowlock.constprop.0+0x13d/0x1e0
       ? __lock_is_held+0x59/0xa0
       __i2c_smbus_xfer+0x138/0x5a0
       i2c_smbus_xfer+0x4f/0x80
       i2cdev_ioctl_smbus+0x162/0x2d0 [i2c_dev]
       i2cdev_ioctl+0x1db/0x2c0 [i2c_dev]
       do_vfs_ioctl+0x408/0x750
       ksys_ioctl+0x5e/0x90
       __x64_sys_ioctl+0x16/0x20
       do_syscall_64+0x60/0x1e0
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      RIP: 0033:0x7f25317f546b
      Code: 0f 1e fa 48 8b 05 1d da 0c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff
      ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d 01
      f0 ff ff 73 01 c3 48 8b 0d ed d9 0c 00 f7 d8 64 89 01 48
      RSP: 002b:00007ffc88caab68 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 00005630d0fe7260 RCX: 00007f25317f546b
      RDX: 00005630d1598e80 RSI: 0000000000000720 RDI: 0000000000000003
      RBP: 00005630d155b968 R08: 0000000000000001 R09: 00005630d15a1da0
      R10: 0000000000000070 R11: 0000000000000246 R12: 00005630d1598e80
      R13: 00005630d12f3d28 R14: 0000000000000720 R15: 00005630d12f3ce0
      watchdog: BUG: soft lockup - CPU#5 stuck for 23s! [sensors-detect:12438]
    
    Yikes! While I wanted to try to make it so that accessing an i2c bus on
    nouveau would wake up the GPU as needed, airlied pointed out that pretty
    much any usecase for userspace accessing an i2c bus on a GPU (mainly for
    the DDC brightness control that some displays have) is going to only be
    useful while there's at least one display enabled on the GPU anyway, and
    the GPU never sleeps while there's displays running.
    
    Since teaching the i2c bus to wake up the GPU on userspace accesses is a
    good deal more difficult than it might seem, mostly due to the fact that
    we have to use the i2c bus during runtime resume of the GPU, we instead
    opt for the easiest solution: don't let userspace access i2c busses on
    the GPU at all while it's in runtime suspend.
    
    Changes since v1:
    * Also disable i2c busses that run over DP AUX
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf8f6b43c2e75c2332279f9c61b405ba10e9c6f4
Author: Kailang Yang <kailang@realtek.com>
Date:   Thu May 23 14:43:04 2019 +0800

    ALSA: hda/realtek - Set default power save node to 0
    
    commit 317d9313925cd8388304286c0d3c8dda7f060a2d upstream.
    
    I measured power consumption between power_save_node=1 and power_save_node=0.
    It's almost the same.
    Codec will enter to runtime suspend and suspend.
    That pin also will enter to D3. Don't need to enter to D3 by single pin.
    So, Disable power_save_node as default. It will avoid more issues.
    Windows Driver also has not this option at runtime PM.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 494447b90d6d73b854a1b9b4b91a8dcfab96b0d9
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed May 15 16:03:17 2019 +0100

    Btrfs: fix race updating log root item during fsync
    
    commit 06989c799f04810f6876900d4760c0edda369cf7 upstream.
    
    When syncing the log, the final phase of a fsync operation, we need to
    either create a log root's item or update the existing item in the log
    tree of log roots, and that depends on the current value of the log
    root's log_transid - if it's 1 we need to create the log root item,
    otherwise it must exist already and we update it. Since there is no
    synchronization between updating the log_transid and checking it for
    deciding whether the log root's item needs to be created or updated, we
    end up with a tiny race window that results in attempts to update the
    item to fail because the item was not yet created:
    
                  CPU 1                                    CPU 2
    
      btrfs_sync_log()
    
        lock root->log_mutex
    
        set log root's log_transid to 1
    
        unlock root->log_mutex
    
                                                   btrfs_sync_log()
    
                                                     lock root->log_mutex
    
                                                     sets log root's
                                                     log_transid to 2
    
                                                     unlock root->log_mutex
    
        update_log_root()
    
          sees log root's log_transid
          with a value of 2
    
            calls btrfs_update_root(),
            which fails with -EUCLEAN
            and causes transaction abort
    
    Until recently the race lead to a BUG_ON at btrfs_update_root(), but after
    the recent commit 7ac1e464c4d47 ("btrfs: Don't panic when we can't find a
    root key") we just abort the current transaction.
    
    A sample trace of the BUG_ON() on a SLE12 kernel:
    
      ------------[ cut here ]------------
      kernel BUG at ../fs/btrfs/root-tree.c:157!
      Oops: Exception in kernel mode, sig: 5 [#1]
      SMP NR_CPUS=2048 NUMA pSeries
      (...)
      Supported: Yes, External
      CPU: 78 PID: 76303 Comm: rtas_errd Tainted: G                 X 4.4.156-94.57-default #1
      task: c00000ffa906d010 ti: c00000ff42b08000 task.ti: c00000ff42b08000
      NIP: d000000036ae5cdc LR: d000000036ae5cd8 CTR: 0000000000000000
      REGS: c00000ff42b0b860 TRAP: 0700   Tainted: G                 X  (4.4.156-94.57-default)
      MSR: 8000000002029033 <SF,VEC,EE,ME,IR,DR,RI,LE>  CR: 22444484  XER: 20000000
      CFAR: d000000036aba66c SOFTE: 1
      GPR00: d000000036ae5cd8 c00000ff42b0bae0 d000000036bda220 0000000000000054
      GPR04: 0000000000000001 0000000000000000 c00007ffff8d37c8 0000000000000000
      GPR08: c000000000e19c00 0000000000000000 0000000000000000 3736343438312079
      GPR12: 3930373337303434 c000000007a3a800 00000000007fffff 0000000000000023
      GPR16: c00000ffa9d26028 c00000ffa9d261f8 0000000000000010 c00000ffa9d2ab28
      GPR20: c00000ff42b0bc48 0000000000000001 c00000ff9f0d9888 0000000000000001
      GPR24: c00000ffa9d26000 c00000ffa9d261e8 c00000ffa9d2a800 c00000ff9f0d9888
      GPR28: c00000ffa9d26028 c00000ffa9d2aa98 0000000000000001 c00000ffa98f5b20
      NIP [d000000036ae5cdc] btrfs_update_root+0x25c/0x4e0 [btrfs]
      LR [d000000036ae5cd8] btrfs_update_root+0x258/0x4e0 [btrfs]
      Call Trace:
      [c00000ff42b0bae0] [d000000036ae5cd8] btrfs_update_root+0x258/0x4e0 [btrfs] (unreliable)
      [c00000ff42b0bba0] [d000000036b53610] btrfs_sync_log+0x2d0/0xc60 [btrfs]
      [c00000ff42b0bce0] [d000000036b1785c] btrfs_sync_file+0x44c/0x4e0 [btrfs]
      [c00000ff42b0bd80] [c00000000032e300] vfs_fsync_range+0x70/0x120
      [c00000ff42b0bdd0] [c00000000032e44c] do_fsync+0x5c/0xb0
      [c00000ff42b0be10] [c00000000032e8dc] SyS_fdatasync+0x2c/0x40
      [c00000ff42b0be30] [c000000000009488] system_call+0x3c/0x100
      Instruction dump:
      7f43d378 4bffebb9 60000000 88d90008 3d220000 e8b90000 3b390009 e87a01f0
      e8898e08 e8f90000 4bfd48e5 60000000 <0fe00000> e95b0060 39200004 394a0ea0
      ---[ end trace 8f2dc8f919cabab8 ]---
    
    So fix this by doing the check of log_transid and updating or creating the
    log root's item while holding the root's log_mutex.
    
    Fixes: 7237f1833601d ("Btrfs: fix tree logs parallel sync")
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af34de02a6a7f77d2b06406a5b3001d27e05a644
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 23 15:23:46 2019 +0200

    scsi: zfcp: fix to prevent port_remove with pure auto scan LUNs (only sdevs)
    
    commit ef4021fe5fd77ced0323cede27979d80a56211ca upstream.
    
    When the user tries to remove a zfcp port via sysfs, we only rejected it if
    there are zfcp unit children under the port. With purely automatically
    scanned LUNs there are no zfcp units but only SCSI devices. In such cases,
    the port_remove erroneously continued. We close the port and this
    implicitly closes all LUNs under the port. The SCSI devices survive with
    their private zfcp_scsi_dev still holding a reference to the "removed"
    zfcp_port (still allocated but invisible in sysfs) [zfcp_get_port_by_wwpn
    in zfcp_scsi_slave_alloc]. This is not a problem as long as the fc_rport
    stays blocked. Once (auto) port scan brings back the removed port, we
    unblock its fc_rport again by design.  However, there is no mechanism that
    would recover (open) the LUNs under the port (no "ersfs_3" without
    zfcp_unit [zfcp_erp_strategy_followup_success]).  Any pending or new I/O to
    such LUN leads to repeated:
    
      Done: NEEDS_RETRY Result: hostbyte=DID_IMM_RETRY driverbyte=DRIVER_OK
    
    See also v4.10 commit 6f2ce1c6af37 ("scsi: zfcp: fix rport unblock race
    with LUN recovery"). Even a manual LUN recovery
    (echo 0 > /sys/bus/scsi/devices/H:C:T:L/zfcp_failed)
    does not help, as the LUN links to the old "removed" port which remains
    to lack ZFCP_STATUS_COMMON_RUNNING [zfcp_erp_required_act].
    The only workaround is to first ensure that the fc_rport is blocked
    (e.g. port_remove again in case it was re-discovered by (auto) port scan),
    then delete the SCSI devices, and finally re-discover by (auto) port scan.
    The port scan includes an fc_rport unblock, which in turn triggers
    a new scan on the scsi target to freshly get new pure auto scan LUNs.
    
    Fix this by rejecting port_remove also if there are SCSI devices
    (even without any zfcp_unit) under this port. Re-use mechanics from v3.7
    commit d99b601b6338 ("[SCSI] zfcp: restore refcount check on port_remove").
    However, we have to give up zfcp_sysfs_port_units_mutex earlier in unit_add
    to prevent a deadlock with scsi_host scan taking shost->scan_mutex first
    and then zfcp_sysfs_port_units_mutex now in our zfcp_scsi_slave_alloc().
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Fixes: b62a8d9b45b9 ("[SCSI] zfcp: Use SCSI device data zfcp scsi dev instead of zfcp unit")
    Fixes: f8210e34887e ("[SCSI] zfcp: Allow midlayer to scan for LUNs when running in NPIV mode")
    Cc: <stable@vger.kernel.org> #2.6.37+
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e85d002556ea14baa487a8bef2174f5b7ed8e404
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu May 23 15:23:45 2019 +0200

    scsi: zfcp: fix missing zfcp_port reference put on -EBUSY from port_remove
    
    commit d27e5e07f9c49bf2a6a4ef254ce531c1b4fb5a38 upstream.
    
    With this early return due to zfcp_unit child(ren), we don't use the
    zfcp_port reference from the earlier zfcp_get_port_by_wwpn() anymore and
    need to put it.
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Fixes: d99b601b6338 ("[SCSI] zfcp: restore refcount check on port_remove")
    Cc: <stable@vger.kernel.org> #3.7+
    Reviewed-by: Jens Remus <jremus@linux.ibm.com>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8282730a0afa5a788f1482aea998e1e0588cdf04
Author: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Date:   Fri May 24 10:59:43 2019 -0400

    media: smsusb: better handle optional alignment
    
    commit a47686636d84eaec5c9c6e84bd5f96bed34d526d upstream.
    
    Most Siano devices require an alignment for the response.
    
    Changeset f3be52b0056a ("media: usb: siano: Fix general protection fault in smsusb")
    changed the logic with gets such aligment, but it now produces a
    sparce warning:
    
    drivers/media/usb/siano/smsusb.c: In function 'smsusb_init_device':
    drivers/media/usb/siano/smsusb.c:447:37: warning: 'in_maxp' may be used uninitialized in this function [-Wmaybe-uninitialized]
      447 |   dev->response_alignment = in_maxp - sizeof(struct sms_msg_hdr);
          |                             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    The sparse message itself is bogus, but a broken (or fake) USB
    eeprom could produce a negative value for response_alignment.
    
    So, change the code in order to check if the result is not
    negative.
    
    Fixes: 31e0456de5be ("media: usb: siano: Fix general protection fault in smsusb")
    CC: <stable@vger.kernel.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bce1ea897120c1a627b6a45a58d025188ffe8c8
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue May 21 11:38:07 2019 -0400

    media: usb: siano: Fix false-positive "uninitialized variable" warning
    
    commit 45457c01171fd1488a7000d1751c06ed8560ee38 upstream.
    
    GCC complains about an apparently uninitialized variable recently
    added to smsusb_init_device().  It's a false positive, but to silence
    the warning this patch adds a trivial initialization.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: kbuild test robot <lkp@intel.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1782be70e1e281216f58ba283a0e55ad6364aaf
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue May 7 12:39:47 2019 -0400

    media: usb: siano: Fix general protection fault in smsusb
    
    commit 31e0456de5be379b10fea0fa94a681057114a96e upstream.
    
    The syzkaller USB fuzzer found a general-protection-fault bug in the
    smsusb part of the Siano DVB driver.  The fault occurs during probe
    because the driver assumes without checking that the device has both
    IN and OUT endpoints and the IN endpoint is ep1.
    
    By slightly rearranging the driver's initialization code, we can make
    the appropriate checks early on and thus avoid the problem.  If the
    expected endpoints aren't present, the new code safely returns -ENODEV
    from the probe routine.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: syzbot+53f029db71c19a47325a@syzkaller.appspotmail.com
    CC: <stable@vger.kernel.org>
    Reviewed-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d52c0ffb383f04e4ff62d25fe0537dce953b7f58
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu May 9 11:30:59 2019 +0200

    USB: rio500: fix memory leak in close after disconnect
    
    commit e0feb73428b69322dd5caae90b0207de369b5575 upstream.
    
    If a disconnected device is closed, rio_close() must free
    the buffers.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b92be99a0c8b2c1c66fe37f1fb21ef069c7732f1
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu May 9 11:30:58 2019 +0200

    USB: rio500: refuse more than one device at a time
    
    commit 3864d33943b4a76c6e64616280e98d2410b1190f upstream.
    
    This driver is using a global variable. It cannot handle more than
    one device at a time. The issue has been existing since the dawn
    of the driver.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Reported-by: syzbot+35f04d136fc975a70da4@syzkaller.appspotmail.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee9d750e9ac8a9a20215e81f22d302daa5b39196
Author: Maximilian Luz <luzmaximilian@gmail.com>
Date:   Thu May 16 17:08:31 2019 +0200

    USB: Add LPM quirk for Surface Dock GigE adapter
    
    commit ea261113385ac0a71c2838185f39e8452d54b152 upstream.
    
    Without USB_QUIRK_NO_LPM ethernet will not work and rtl8152 will
    complain with
    
        r8152 <device...>: Stop submitting intr, status -71
    
    Adding the quirk resolves this. As the dock is externally powered, this
    should not have any drawbacks.
    
    Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30e66d7d2fb978f7b59fbf6106bdc1092acbb7ef
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu May 9 14:41:50 2019 +0200

    USB: sisusbvga: fix oops in error path of sisusb_probe
    
    commit 9a5729f68d3a82786aea110b1bfe610be318f80a upstream.
    
    The pointer used to log a failure of usb_register_dev() must
    be set before the error is logged.
    
    v2: fix that minor is not available before registration
    
    Signed-off-by: oliver Neukum <oneukum@suse.com>
    Reported-by: syzbot+a0cbdbd6d169020c8959@syzkaller.appspotmail.com
    Fixes: 7b5cd5fefbe02 ("USB: SisUSB2VGA: Convert printk to dev_* macros")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 018b7ea9ca2492ed098ab7c3df6b450a457dbde9
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon May 13 13:14:29 2019 -0400

    USB: Fix slab-out-of-bounds write in usb_get_bos_descriptor
    
    commit a03ff54460817c76105f81f3aa8ef655759ccc9a upstream.
    
    The syzkaller USB fuzzer found a slab-out-of-bounds write bug in the
    USB core, caused by a failure to check the actual size of a BOS
    descriptor.  This patch adds a check to make sure the descriptor is at
    least as large as it is supposed to be, so that the code doesn't
    inadvertently access memory beyond the end of the allocated region
    when assigning to dev->bos->desc->bNumDeviceCaps later on.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: syzbot+71f1e64501a309fcc012@syzkaller.appspotmail.com
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5e1ec93b2084fdecf622a45c98439c3f6364a47
Author: Carsten Schmid <carsten_schmid@mentor.com>
Date:   Wed May 22 14:33:59 2019 +0300

    usb: xhci: avoid null pointer deref when bos field is NULL
    
    commit 7aa1bb2ffd84d6b9b5f546b079bb15cd0ab6e76e upstream.
    
    With defective USB sticks we see the following error happen:
    usb 1-3: new high-speed USB device number 6 using xhci_hcd
    usb 1-3: device descriptor read/64, error -71
    usb 1-3: device descriptor read/64, error -71
    usb 1-3: new high-speed USB device number 7 using xhci_hcd
    usb 1-3: device descriptor read/64, error -71
    usb 1-3: unable to get BOS descriptor set
    usb 1-3: New USB device found, idVendor=0781, idProduct=5581
    usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    ...
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
    
    This comes from the following place:
    [ 1660.215380] IP: xhci_set_usb2_hardware_lpm+0xdf/0x3d0 [xhci_hcd]
    [ 1660.222092] PGD 0 P4D 0
    [ 1660.224918] Oops: 0000 [#1] PREEMPT SMP NOPTI
    [ 1660.425520] CPU: 1 PID: 38 Comm: kworker/1:1 Tainted: P     U  W  O    4.14.67-apl #1
    [ 1660.434277] Workqueue: usb_hub_wq hub_event [usbcore]
    [ 1660.439918] task: ffffa295b6ae4c80 task.stack: ffffad4580150000
    [ 1660.446532] RIP: 0010:xhci_set_usb2_hardware_lpm+0xdf/0x3d0 [xhci_hcd]
    [ 1660.453821] RSP: 0018:ffffad4580153c70 EFLAGS: 00010046
    [ 1660.459655] RAX: 0000000000000000 RBX: ffffa295b4d7c000 RCX: 0000000000000002
    [ 1660.467625] RDX: 0000000000000002 RSI: ffffffff984a55b2 RDI: ffffffff984a55b2
    [ 1660.475586] RBP: ffffad4580153cc8 R08: 0000000000d6520a R09: 0000000000000001
    [ 1660.483556] R10: ffffad4580a004a0 R11: 0000000000000286 R12: ffffa295b4d7c000
    [ 1660.491525] R13: 0000000000010648 R14: ffffa295a84e1800 R15: 0000000000000000
    [ 1660.499494] FS:  0000000000000000(0000) GS:ffffa295bfc80000(0000) knlGS:0000000000000000
    [ 1660.508530] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1660.514947] CR2: 0000000000000008 CR3: 000000025a114000 CR4: 00000000003406a0
    [ 1660.522917] Call Trace:
    [ 1660.525657]  usb_set_usb2_hardware_lpm+0x3d/0x70 [usbcore]
    [ 1660.531792]  usb_disable_device+0x242/0x260 [usbcore]
    [ 1660.537439]  usb_disconnect+0xc1/0x2b0 [usbcore]
    [ 1660.542600]  hub_event+0x596/0x18f0 [usbcore]
    [ 1660.547467]  ? trace_preempt_on+0xdf/0x100
    [ 1660.552040]  ? process_one_work+0x1c1/0x410
    [ 1660.556708]  process_one_work+0x1d2/0x410
    [ 1660.561184]  ? preempt_count_add.part.3+0x21/0x60
    [ 1660.566436]  worker_thread+0x2d/0x3f0
    [ 1660.570522]  kthread+0x122/0x140
    [ 1660.574123]  ? process_one_work+0x410/0x410
    [ 1660.578792]  ? kthread_create_on_node+0x60/0x60
    [ 1660.583849]  ret_from_fork+0x3a/0x50
    [ 1660.587839] Code: 00 49 89 c3 49 8b 84 24 50 16 00 00 8d 4a ff 48 8d 04 c8 48 89 ca 4c 8b 10 45 8b 6a 04 48 8b 00 48 89 45 c0 49 8b 86 80 03 00 00 <48> 8b 40 08 8b 40 03 0f 1f 44 00 00 45 85 ff 0f 84 81 01 00 00
    [ 1660.608980] RIP: xhci_set_usb2_hardware_lpm+0xdf/0x3d0 [xhci_hcd] RSP: ffffad4580153c70
    [ 1660.617921] CR2: 0000000000000008
    
    Tracking this down shows that udev->bos is NULL in the following code:
    (xhci.c, in xhci_set_usb2_hardware_lpm)
            field = le32_to_cpu(udev->bos->ext_cap->bmAttributes);  <<<<<<< here
    
            xhci_dbg(xhci, "%s port %d USB2 hardware LPM\n",
                            enable ? "enable" : "disable", port_num + 1);
    
            if (enable) {
                    /* Host supports BESL timeout instead of HIRD */
                    if (udev->usb2_hw_lpm_besl_capable) {
                            /* if device doesn't have a preferred BESL value use a
                             * default one which works with mixed HIRD and BESL
                             * systems. See XHCI_DEFAULT_BESL definition in xhci.h
                             */
                            if ((field & USB_BESL_SUPPORT) &&
                                (field & USB_BESL_BASELINE_VALID))
                                    hird = USB_GET_BESL_BASELINE(field);
                            else
                                    hird = udev->l1_params.besl;
    
    The failing case is when disabling LPM. So it is sufficient to avoid
    access to udev->bos by moving the instruction into the "enable" clause.
    
    Cc: Stable <stable@vger.kernel.org>
    Signed-off-by: Carsten Schmid <carsten_schmid@mentor.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 017e6726a4fb08ee04c6653d759009f9939b4297
Author: Andrey Smirnov <andrew.smirnov@gmail.com>
Date:   Wed May 22 14:34:01 2019 +0300

    xhci: Convert xhci_handshake() to use readl_poll_timeout_atomic()
    
    commit f7fac17ca925faa03fc5eb854c081a24075f8bad upstream.
    
    Xhci_handshake() implements the algorithm already captured by
    readl_poll_timeout_atomic(). Convert the former to use the latter to
    avoid repetition.
    
    Turned out this patch also fixes a bug on the AMD Stoneyridge platform
    where usleep(1) sometimes takes over 10ms.
    This means a 5 second timeout can easily take over 15 seconds which will
    trigger the watchdog and reboot the system.
    
    [Add info about patch fixing a bug to commit message -Mathias]
    Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
    Tested-by: Raul E Rangel <rrangel@chromium.org>
    Reviewed-by: Raul E Rangel <rrangel@chromium.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec70e2c130d6b48f6b84fde6b47700ff3012ca4a
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Tue May 14 15:43:27 2019 -0700

    include/linux/bitops.h: sanitize rotate primitives
    
    commit ef4d6f6b275c498f8e5626c99dbeefdc5027f843 upstream.
    
    The ror32 implementation (word >> shift) | (word << (32 - shift) has
    undefined behaviour if shift is outside the [1, 31] range.  Similarly
    for the 64 bit variants.  Most callers pass a compile-time constant
    (naturally in that range), but there's an UBSAN report that these may
    actually be called with a shift count of 0.
    
    Instead of special-casing that, we can make them DTRT for all values of
    shift while also avoiding UB.  For some reason, this was already partly
    done for rol32 (which was well-defined for [0, 31]).  gcc 8 recognizes
    these patterns as rotates, so for example
    
      __u32 rol32(__u32 word, unsigned int shift)
      {
            return (word << (shift & 31)) | (word >> ((-shift) & 31));
      }
    
    compiles to
    
    0000000000000020 <rol32>:
      20:   89 f8                   mov    %edi,%eax
      22:   89 f1                   mov    %esi,%ecx
      24:   d3 c0                   rol    %cl,%eax
      26:   c3                      retq
    
    Older compilers unfortunately do not do as well, but this only affects
    the small minority of users that don't pass constants.
    
    Due to integer promotions, ro[lr]8 were already well-defined for shifts
    in [0, 8], and ro[lr]16 were mostly well-defined for shifts in [0, 16]
    (only mostly - u16 gets promoted to _signed_ int, so if bit 15 is set,
    word << 16 is undefined).  For consistency, update those as well.
    
    Link: http://lkml.kernel.org/r/20190410211906.2190-1-linux@rasmusvillemoes.dk
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Reported-by: Ido Schimmel <idosch@mellanox.com>
    Tested-by: Ido Schimmel <idosch@mellanox.com>
    Reviewed-by: Will Deacon <will.deacon@arm.com>
    Cc: Vadim Pasternak <vadimp@mellanox.com>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Cc: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbbc4fe02a31087d3c9d4ceb1503ab98c855df04
Author: James Clarke <jrtc27@jrtc27.com>
Date:   Wed May 29 22:31:31 2019 +0100

    sparc64: Fix regression in non-hypervisor TLB flush xcall
    
    commit d3c976c14ad8af421134c428b0a89ff8dd3bd8f8 upstream.
    
    Previously, %g2 would end up with the value PAGE_SIZE, but after the
    commit mentioned below it ends up with the value 1 due to being reused
    for a different purpose. We need it to be PAGE_SIZE as we use it to step
    through pages in our demap loop, otherwise we set different flags in the
    low 12 bits of the address written to, thereby doing things other than a
    nucleus page flush.
    
    Fixes: a74ad5e660a9 ("sparc64: Handle extremely large kernel TLB range flushes more gracefully.")
    Reported-by: Meelis Roos <mroos@linux.ee>
    Tested-by: Meelis Roos <mroos@linux.ee>
    Signed-off-by: James Clarke <jrtc27@jrtc27.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5bce46edeb723f7e731aa57ca18a723f2adf63f5
Author: Junwei Hu <hujunwei4@huawei.com>
Date:   Mon May 20 14:43:59 2019 +0800

    tipc: fix modprobe tipc failed after switch order of device registration -v2
    
    commit 526f5b851a96566803ee4bee60d0a34df56c77f8 upstream.
    
    Error message printed:
    modprobe: ERROR: could not insert 'tipc': Address family not
    supported by protocol.
    when modprobe tipc after the following patch: switch order of
    device registration, commit 7e27e8d6130c
    ("tipc: switch order of device registration to fix a crash")
    
    Because sock_create_kern(net, AF_TIPC, ...) called by
    tipc_topsrv_create_listener() in the initialization process
    of tipc_init_net(), so tipc_socket_init() must be execute before that.
    Meanwhile, tipc_net_id need to be initialized when sock_create()
    called, and tipc_socket_init() is no need to be called for each namespace.
    
    I add a variable tipc_topsrv_net_ops, and split the
    register_pernet_subsys() of tipc into two parts, and split
    tipc_socket_init() with initialization of pernet params.
    
    By the way, I fixed resources rollback error when tipc_bcast_init()
    failed in tipc_init_net().
    
    Fixes: 7e27e8d6130c ("tipc: switch order of device registration to fix a crash")
    Signed-off-by: Junwei Hu <hujunwei4@huawei.com>
    Reported-by: Wang Wang <wangwang2@huawei.com>
    Reported-by: syzbot+1e8114b61079bfe9cbc5@syzkaller.appspotmail.com
    Reviewed-by: Kang Zhou <zhoukang7@huawei.com>
    Reviewed-by: Suanming Mou <mousuanming@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 416d252ba926e6d4691d90402cd8cf5043236809
Author: David S. Miller <davem@davemloft.net>
Date:   Fri May 17 12:15:05 2019 -0700

    Revert "tipc: fix modprobe tipc failed after switch order of device registration"
    
    commit 5593530e56943182ebb6d81eca8a3be6db6dbba4 upstream.
    
    This reverts commit 532b0f7ece4cb2ffd24dc723ddf55242d1188e5e.
    
    More revisions coming up.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1613a9e1bdc3d6bb71b6390ed5d6c8d5f4d7f56
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Wed Feb 13 18:21:31 2019 -0500

    xen/pciback: Don't disable PCI_COMMAND on PCI device reset.
    
    commit 7681f31ec9cdacab4fd10570be924f2cef6669ba upstream.
    
    There is no need for this at all. Worst it means that if
    the guest tries to write to BARs it could lead (on certain
    platforms) to PCI SERR errors.
    
    Please note that with af6fc858a35b90e89ea7a7ee58e66628c55c776b
    "xen-pciback: limit guest control of command register"
    a guest is still allowed to enable those control bits (safely), but
    is not allowed to disable them and that therefore a well behaved
    frontend which enables things before using them will still
    function correctly.
    
    This is done via an write to the configuration register 0x4 which
    triggers on the backend side:
    command_write
      \- pci_enable_device
         \- pci_enable_device_flags
            \- do_pci_enable_device
               \- pcibios_enable_device
                  \-pci_enable_resourcess
                    [which enables the PCI_COMMAND_MEMORY|PCI_COMMAND_IO]
    
    However guests (and drivers) which don't do this could cause
    problems, including the security issues which XSA-120 sought
    to address.
    
    Reported-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Prarit Bhargava <prarit@redhat.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 383687e15cd0b7fbad502928e4917957cfd63020
Author: Daniel Axtens <dja@axtens.net>
Date:   Fri May 17 01:40:02 2019 +1000

    crypto: vmx - ghash: do nosimd fallback manually
    
    commit 357d065a44cdd77ed5ff35155a989f2a763e96ef upstream.
    
    VMX ghash was using a fallback that did not support interleaving simd
    and nosimd operations, leading to failures in the extended test suite.
    
    If I understood correctly, Eric's suggestion was to use the same
    data format that the generic code uses, allowing us to call into it
    with the same contexts. I wasn't able to get that to work - I think
    there's a very different key structure and data layout being used.
    
    So instead steal the arm64 approach and perform the fallback
    operations directly if required.
    
    Fixes: cc333cd68dfa ("crypto: vmx - Adding GHASH routines for VMX module")
    Cc: stable@vger.kernel.org # v4.1+
    Reported-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Tested-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61ba8e9f51b340262f1540f97d171312489eee12
Author: Antoine Tenart <antoine.tenart@bootlin.com>
Date:   Wed May 29 15:59:48 2019 +0200

    net: mvpp2: fix bad MVPP2_TXQ_SCHED_TOKEN_CNTR_REG queue value
    
    [ Upstream commit 21808437214637952b61beaba6034d97880fbeb3 ]
    
    MVPP2_TXQ_SCHED_TOKEN_CNTR_REG() expects the logical queue id but
    the current code is passing the global tx queue offset, so it ends
    up writing to unknown registers (between 0x8280 and 0x82fc, which
    seemed to be unused by the hardware). This fixes the issue by using
    the logical queue id instead.
    
    Fixes: 3f518509dedc ("ethernet: Add new driver for Marvell Armada 375 network unit")
    Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d33a3ebd9451f2540ad2bb6425b8e7cc883f2ca
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Wed May 22 19:12:54 2019 -0400

    bnxt_en: Fix aggregation buffer leak under OOM condition.
    
    [ Upstream commit 296d5b54163964b7ae536b8b57dfbd21d4e868e1 ]
    
    For every RX packet, the driver replenishes all buffers used for that
    packet and puts them back into the RX ring and RX aggregation ring.
    In one code path where the RX packet has one RX buffer and one or more
    aggregation buffers, we missed recycling the aggregation buffer(s) if
    we are unable to allocate a new SKB buffer.  This leads to the
    aggregation ring slowly running out of buffers over time.  Fix it
    by properly recycling the aggregation buffers.
    
    Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
    Reported-by: Rakesh Hemnani <rhemnani@fb.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d423301240b3621200a4517be4e4073cf3528cf
Author: Chris Packham <chris.packham@alliedtelesis.co.nz>
Date:   Mon May 20 15:45:36 2019 +1200

    tipc: Avoid copying bytes beyond the supplied data
    
    TLV_SET is called with a data pointer and a len parameter that tells us
    how many bytes are pointed to by data. When invoking memcpy() we need
    to careful to only copy len bytes.
    
    Previously we would copy TLV_LENGTH(len) bytes which would copy an extra
    4 bytes past the end of the data pointer which newer GCC versions
    complain about.
    
     In file included from test.c:17:
     In function 'TLV_SET',
         inlined from 'test' at test.c:186:5:
     /usr/include/linux/tipc_config.h:317:3:
     warning: 'memcpy' forming offset [33, 36] is out of the bounds [0, 32]
     of object 'bearer_name' with type 'char[32]' [-Warray-bounds]
         memcpy(TLV_DATA(tlv_ptr), data, tlv_len);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     test.c: In function 'test':
     test.c::161:10: note:
     'bearer_name' declared here
         char bearer_name[TIPC_MAX_BEARER_NAME];
              ^~~~~~~~~~~
    
    We still want to ensure any padding bytes at the end are initialised, do
    this with a explicit memset() rather than copy bytes past the end of
    data. Apply the same logic to TCM_SET.
    
    Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 332bff9d9a08e0af8a0044e9120662ff72f6a946
Author: Kloetzke Jan <Jan.Kloetzke@preh.de>
Date:   Tue May 21 13:18:40 2019 +0000

    usbnet: fix kernel crash after disconnect
    
    [ Upstream commit ad70411a978d1e6e97b1e341a7bde9a79af0c93d ]
    
    When disconnecting cdc_ncm the kernel sporadically crashes shortly
    after the disconnect:
    
      [   57.868812] Unable to handle kernel NULL pointer dereference at virtual address 00000000
      ...
      [   58.006653] PC is at 0x0
      [   58.009202] LR is at call_timer_fn+0xec/0x1b4
      [   58.013567] pc : [<0000000000000000>] lr : [<ffffff80080f5130>] pstate: 00000145
      [   58.020976] sp : ffffff8008003da0
      [   58.024295] x29: ffffff8008003da0 x28: 0000000000000001
      [   58.029618] x27: 000000000000000a x26: 0000000000000100
      [   58.034941] x25: 0000000000000000 x24: ffffff8008003e68
      [   58.040263] x23: 0000000000000000 x22: 0000000000000000
      [   58.045587] x21: 0000000000000000 x20: ffffffc68fac1808
      [   58.050910] x19: 0000000000000100 x18: 0000000000000000
      [   58.056232] x17: 0000007f885aff8c x16: 0000007f883a9f10
      [   58.061556] x15: 0000000000000001 x14: 000000000000006e
      [   58.066878] x13: 0000000000000000 x12: 00000000000000ba
      [   58.072201] x11: ffffffc69ff1db30 x10: 0000000000000020
      [   58.077524] x9 : 8000100008001000 x8 : 0000000000000001
      [   58.082847] x7 : 0000000000000800 x6 : ffffff8008003e70
      [   58.088169] x5 : ffffffc69ff17a28 x4 : 00000000ffff138b
      [   58.093492] x3 : 0000000000000000 x2 : 0000000000000000
      [   58.098814] x1 : 0000000000000000 x0 : 0000000000000000
      ...
      [   58.205800] [<          (null)>]           (null)
      [   58.210521] [<ffffff80080f5298>] expire_timers+0xa0/0x14c
      [   58.215937] [<ffffff80080f542c>] run_timer_softirq+0xe8/0x128
      [   58.221702] [<ffffff8008081120>] __do_softirq+0x298/0x348
      [   58.227118] [<ffffff80080a6304>] irq_exit+0x74/0xbc
      [   58.232009] [<ffffff80080e17dc>] __handle_domain_irq+0x78/0xac
      [   58.237857] [<ffffff8008080cf4>] gic_handle_irq+0x80/0xac
      ...
    
    The crash happens roughly 125..130ms after the disconnect. This
    correlates with the 'delay' timer that is started on certain USB tx/rx
    errors in the URB completion handler.
    
    The problem is a race of usbnet_stop() with usbnet_start_xmit(). In
    usbnet_stop() we call usbnet_terminate_urbs() to cancel all URBs in
    flight. This only makes sense if no new URBs are submitted
    concurrently, though. But the usbnet_start_xmit() can run at the same
    time on another CPU which almost unconditionally submits an URB. The
    error callback of the new URB will then schedule the timer after it was
    already stopped.
    
    The fix adds a check if the tx queue is stopped after the tx list lock
    has been taken. This should reliably prevent the submission of new URBs
    while usbnet_terminate_urbs() does its job. The same thing is done on
    the rx side even though it might be safe due to other flags that are
    checked there.
    
    Signed-off-by: Jan Klötzke <Jan.Kloetzke@preh.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16ffb5f7c335d7d42777f48be9893989dc5a5620
Author: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Date:   Wed May 22 10:05:09 2019 +0000

    net: stmmac: fix reset gpio free missing
    
    [ Upstream commit 49ce881c0d4c4a7a35358d9dccd5f26d0e56fc61 ]
    
    Commit 984203ceff27 ("net: stmmac: mdio: remove reset gpio free")
    removed the reset gpio free, when the driver is unbinded or rmmod,
    we miss the gpio free.
    
    This patch uses managed API to request the reset gpio, so that the
    gpio could be freed properly.
    
    Fixes: 984203ceff27 ("net: stmmac: mdio: remove reset gpio free")
    Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f9c73aa293051359ef1f2f6d816895ab50c9f3e
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed May 29 15:36:10 2019 -0700

    net-gro: fix use-after-free read in napi_gro_frags()
    
    [ Upstream commit a4270d6795b0580287453ea55974d948393e66ef ]
    
    If a network driver provides to napi_gro_frags() an
    skb with a page fragment of exactly 14 bytes, the call
    to gro_pull_from_frag0() will 'consume' the fragment
    by calling skb_frag_unref(skb, 0), and the page might
    be freed and reused.
    
    Reading eth->h_proto at the end of napi_frags_skb() might
    read mangled data, or crash under specific debugging features.
    
    BUG: KASAN: use-after-free in napi_frags_skb net/core/dev.c:5833 [inline]
    BUG: KASAN: use-after-free in napi_gro_frags+0xc6f/0xd10 net/core/dev.c:5841
    Read of size 2 at addr ffff88809366840c by task syz-executor599/8957
    
    CPU: 1 PID: 8957 Comm: syz-executor599 Not tainted 5.2.0-rc1+ #32
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x172/0x1f0 lib/dump_stack.c:113
     print_address_description.cold+0x7c/0x20d mm/kasan/report.c:188
     __kasan_report.cold+0x1b/0x40 mm/kasan/report.c:317
     kasan_report+0x12/0x20 mm/kasan/common.c:614
     __asan_report_load_n_noabort+0xf/0x20 mm/kasan/generic_report.c:142
     napi_frags_skb net/core/dev.c:5833 [inline]
     napi_gro_frags+0xc6f/0xd10 net/core/dev.c:5841
     tun_get_user+0x2f3c/0x3ff0 drivers/net/tun.c:1991
     tun_chr_write_iter+0xbd/0x156 drivers/net/tun.c:2037
     call_write_iter include/linux/fs.h:1872 [inline]
     do_iter_readv_writev+0x5f8/0x8f0 fs/read_write.c:693
     do_iter_write fs/read_write.c:970 [inline]
     do_iter_write+0x184/0x610 fs/read_write.c:951
     vfs_writev+0x1b3/0x2f0 fs/read_write.c:1015
     do_writev+0x15b/0x330 fs/read_write.c:1058
    
    Fixes: a50e233c50db ("net-gro: restore frag0 optimization")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cbaa135a0e129aee7080f476fffbea9164d9188
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon May 27 17:35:52 2019 -0700

    llc: fix skb leak in llc_build_and_send_ui_pkt()
    
    [ Upstream commit 8fb44d60d4142cd2a440620cd291d346e23c131e ]
    
    If llc_mac_hdr_init() returns an error, we must drop the skb
    since no llc_build_and_send_ui_pkt() caller will take care of this.
    
    BUG: memory leak
    unreferenced object 0xffff8881202b6800 (size 2048):
      comm "syz-executor907", pid 7074, jiffies 4294943781 (age 8.590s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        1a 00 07 40 00 00 00 00 00 00 00 00 00 00 00 00  ...@............
      backtrace:
        [<00000000e25b5abe>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
        [<00000000e25b5abe>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<00000000e25b5abe>] slab_alloc mm/slab.c:3326 [inline]
        [<00000000e25b5abe>] __do_kmalloc mm/slab.c:3658 [inline]
        [<00000000e25b5abe>] __kmalloc+0x161/0x2c0 mm/slab.c:3669
        [<00000000a1ae188a>] kmalloc include/linux/slab.h:552 [inline]
        [<00000000a1ae188a>] sk_prot_alloc+0xd6/0x170 net/core/sock.c:1608
        [<00000000ded25bbe>] sk_alloc+0x35/0x2f0 net/core/sock.c:1662
        [<000000002ecae075>] llc_sk_alloc+0x35/0x170 net/llc/llc_conn.c:950
        [<00000000551f7c47>] llc_ui_create+0x7b/0x140 net/llc/af_llc.c:173
        [<0000000029027f0e>] __sock_create+0x164/0x250 net/socket.c:1430
        [<000000008bdec225>] sock_create net/socket.c:1481 [inline]
        [<000000008bdec225>] __sys_socket+0x69/0x110 net/socket.c:1523
        [<00000000b6439228>] __do_sys_socket net/socket.c:1532 [inline]
        [<00000000b6439228>] __se_sys_socket net/socket.c:1530 [inline]
        [<00000000b6439228>] __x64_sys_socket+0x1e/0x30 net/socket.c:1530
        [<00000000cec820c1>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:301
        [<000000000c32554f>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    BUG: memory leak
    unreferenced object 0xffff88811d750d00 (size 224):
      comm "syz-executor907", pid 7074, jiffies 4294943781 (age 8.600s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 f0 0c 24 81 88 ff ff 00 68 2b 20 81 88 ff ff  ...$.....h+ ....
      backtrace:
        [<0000000053026172>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
        [<0000000053026172>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<0000000053026172>] slab_alloc_node mm/slab.c:3269 [inline]
        [<0000000053026172>] kmem_cache_alloc_node+0x153/0x2a0 mm/slab.c:3579
        [<00000000fa8f3c30>] __alloc_skb+0x6e/0x210 net/core/skbuff.c:198
        [<00000000d96fdafb>] alloc_skb include/linux/skbuff.h:1058 [inline]
        [<00000000d96fdafb>] alloc_skb_with_frags+0x5f/0x250 net/core/skbuff.c:5327
        [<000000000a34a2e7>] sock_alloc_send_pskb+0x269/0x2a0 net/core/sock.c:2225
        [<00000000ee39999b>] sock_alloc_send_skb+0x32/0x40 net/core/sock.c:2242
        [<00000000e034d810>] llc_ui_sendmsg+0x10a/0x540 net/llc/af_llc.c:933
        [<00000000c0bc8445>] sock_sendmsg_nosec net/socket.c:652 [inline]
        [<00000000c0bc8445>] sock_sendmsg+0x54/0x70 net/socket.c:671
        [<000000003b687167>] __sys_sendto+0x148/0x1f0 net/socket.c:1964
        [<00000000922d78d9>] __do_sys_sendto net/socket.c:1976 [inline]
        [<00000000922d78d9>] __se_sys_sendto net/socket.c:1972 [inline]
        [<00000000922d78d9>] __x64_sys_sendto+0x2a/0x30 net/socket.c:1972
        [<00000000cec820c1>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:301
        [<000000000c32554f>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36a7222071d1a9ae2c0e633951ffc143c88b8025
Author: Mike Manning <mmanning@vyatta.att-mail.com>
Date:   Mon May 20 19:57:17 2019 +0100

    ipv6: Consider sk_bound_dev_if when binding a raw socket to an address
    
    [ Upstream commit 72f7cfab6f93a8ea825fab8ccfb016d064269f7f ]
    
    IPv6 does not consider if the socket is bound to a device when binding
    to an address. The result is that a socket can be bound to eth0 and
    then bound to the address of eth1. If the device is a VRF, the result
    is that a socket can only be bound to an address in the default VRF.
    
    Resolve by considering the device if sk_bound_dev_if is set.
    
    Signed-off-by: Mike Manning <mmanning@vyatta.att-mail.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Tested-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fbf1ac57c7a815a7ee1a373fe0335b70602bc2c
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Mar 7 11:11:30 2019 +0100

    ASoC: davinci-mcasp: Fix clang warning without CONFIG_PM
    
    [ Upstream commit 8ca5104715cfd14254ea5aecc390ae583b707607 ]
    
    Building with clang shows a variable that is only used by the
    suspend/resume functions but defined outside of their #ifdef block:
    
    sound/soc/ti/davinci-mcasp.c:48:12: error: variable 'context_regs' is not needed and will not be emitted
    
    We commonly fix these by marking the PM functions as __maybe_unused,
    but here that would grow the davinci_mcasp structure, so instead
    add another #ifdef here.
    
    Fixes: 1cc0c054f380 ("ASoC: davinci-mcasp: Convert the context save/restore to use array")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0984cb76d2942dd0bf6da77799b931802d8af678
Author: Chris Lesiak <chris.lesiak@licor.com>
Date:   Thu Mar 7 20:39:00 2019 +0000

    spi: Fix zero length xfer bug
    
    [ Upstream commit 5442dcaa0d90fc376bdfc179a018931a8f43dea4 ]
    
    This fixes a bug for messages containing both zero length and
    unidirectional xfers.
    
    The function spi_map_msg will allocate dummy tx and/or rx buffers
    for use with unidirectional transfers when the hardware can only do
    a bidirectional transfer.  That dummy buffer will be used in place
    of a NULL buffer even when the xfer length is 0.
    
    Then in the function __spi_map_msg, if he hardware can dma,
    the zero length xfer will have spi_map_buf called on the dummy
    buffer.
    
    Eventually, __sg_alloc_table is called and returns -EINVAL
    because nents == 0.
    
    This fix prevents the error by not using the dummy buffer when
    the xfer length is zero.
    
    Signed-off-by: Chris Lesiak <chris.lesiak@licor.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 854415f37aae8631e7fdf1a2aab70281b4177248
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Mar 12 19:45:13 2019 +0100

    spi: rspi: Fix sequencer reset during initialization
    
    [ Upstream commit 26843bb128590edd7eba1ad7ce22e4b9f1066ce3 ]
    
    While the sequencer is reset after each SPI message since commit
    880c6d114fd79a69 ("spi: rspi: Add support for Quad and Dual SPI
    Transfers on QSPI"), it was never reset for the first message, thus
    relying on reset state or bootloader settings.
    
    Fix this by initializing it explicitly during configuration.
    
    Fixes: 0b2182ddac4b8837 ("spi: add support for Renesas RSPI")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c927451887c1abdb480ee77f17ba2b20c55285b6
Author: Aditya Pakki <pakki001@umn.edu>
Date:   Wed Mar 13 11:55:41 2019 -0500

    spi : spi-topcliff-pch: Fix to handle empty DMA buffers
    
    [ Upstream commit f37d8e67f39e6d3eaf4cc5471e8a3d21209843c6 ]
    
    pch_alloc_dma_buf allocated tx, rx DMA buffers which can fail. Further,
    these buffers are used without a check. The patch checks for these
    failures and sends the error upstream.
    
    Signed-off-by: Aditya Pakki <pakki001@umn.edu>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 445c07409179239bc726b115a0318f6c9a185d63
Author: James Smart <jsmart2021@gmail.com>
Date:   Tue Mar 12 16:30:07 2019 -0700

    scsi: lpfc: Fix SLI3 commands being issued on SLI4 devices
    
    [ Upstream commit c95a3b4b0fb8d351e2329a96f87c4fc96a149505 ]
    
    During debug, it was seen that the driver is issuing commands specific to
    SLI3 on SLI4 devices. Although the adapter correctly rejected the command,
    this should not be done.
    
    Revise the code to stop sending these commands on a SLI4 adapter.
    
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3a5d1133289653cfc818223258d1a501063c200e
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Feb 19 12:01:56 2019 -0500

    media: saa7146: avoid high stack usage with clang
    
    [ Upstream commit 03aa4f191a36f33fce015387f84efa0eee94408e ]
    
    Two saa7146/hexium files contain a construct that causes a warning
    when built with clang:
    
    drivers/media/pci/saa7146/hexium_orion.c:210:12: error: stack frame size of 2272 bytes in function 'hexium_probe'
          [-Werror,-Wframe-larger-than=]
    static int hexium_probe(struct saa7146_dev *dev)
               ^
    drivers/media/pci/saa7146/hexium_gemini.c:257:12: error: stack frame size of 2304 bytes in function 'hexium_attach'
          [-Werror,-Wframe-larger-than=]
    static int hexium_attach(struct saa7146_dev *dev, struct saa7146_pci_extension_data *info)
               ^
    
    This one happens regardless of KASAN, and the problem is that a
    constructor to initialize a dynamically allocated structure leads
    to a copy of that structure on the stack, whereas gcc initializes
    it in place.
    
    Link: https://bugs.llvm.org/show_bug.cgi?id=40776
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    [hverkuil-cisco@xs4all.nl: fix checkpatch warnings]
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a96cf10dc5cf88afd59fdfc796aecf4193a6a69
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Feb 19 12:01:58 2019 -0500

    media: go7007: avoid clang frame overflow warning with KASAN
    
    [ Upstream commit ed713a4a1367aca5c0f2f329579465db00c17995 ]
    
    clang-8 warns about one function here when KASAN is enabled, even
    without the 'asan-stack' option:
    
    drivers/media/usb/go7007/go7007-fw.c:1551:5: warning: stack frame size of 2656 bytes in function
    
    I have reported this issue in the llvm bugzilla, but to make
    it work with the clang-8 release, a small annotation is still
    needed.
    
    Link: https://bugs.llvm.org/show_bug.cgi?id=38809
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    [hverkuil-cisco@xs4all.nl: fix checkpatch warning]
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0e9f0805eeea985fd252fa285edbe67248974233
Author: James Hutchinson <jahutchinson99@googlemail.com>
Date:   Sun Jan 13 16:13:47 2019 -0500

    media: m88ds3103: serialize reset messages in m88ds3103_set_frontend
    
    [ Upstream commit 981fbe3da20a6f35f17977453bce7dfc1664d74f ]
    
    Ref: https://bugzilla.kernel.org/show_bug.cgi?id=199323
    
    Users are experiencing problems with the DVBSky S960/S960C USB devices
    since the following commit:
    
    9d659ae: ("locking/mutex: Add lock handoff to avoid starvation")
    
    The device malfunctions after running for an indeterminable period of
    time, and the problem can only be cleared by rebooting the machine.
    
    It is possible to encourage the problem to surface by blocking the
    signal to the LNB.
    
    Further debugging revealed the cause of the problem.
    
    In the following capture:
    - thread #1325 is running m88ds3103_set_frontend
    - thread #42 is running ts2020_stat_work
    
    a> [1325] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 07 80
       [1325] usb 1-1: dvb_usb_v2_generic_io: <<< 08
       [42] usb 1-1: dvb_usb_v2_generic_io: >>> 09 01 01 68 3f
       [42] usb 1-1: dvb_usb_v2_generic_io: <<< 08 ff
       [42] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 03 11
       [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07
       [42] usb 1-1: dvb_usb_v2_generic_io: >>> 09 01 01 60 3d
       [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07 ff
    b> [1325] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 07 00
       [1325] usb 1-1: dvb_usb_v2_generic_io: <<< 07
       [42] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 03 11
       [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07
       [42] usb 1-1: dvb_usb_v2_generic_io: >>> 09 01 01 60 21
       [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07 ff
       [42] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 03 11
       [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07
       [42] usb 1-1: dvb_usb_v2_generic_io: >>> 09 01 01 60 66
       [42] usb 1-1: dvb_usb_v2_generic_io: <<< 07 ff
       [1325] usb 1-1: dvb_usb_v2_generic_io: >>> 08 68 02 03 11
       [1325] usb 1-1: dvb_usb_v2_generic_io: <<< 07
       [1325] usb 1-1: dvb_usb_v2_generic_io: >>> 08 60 02 10 0b
       [1325] usb 1-1: dvb_usb_v2_generic_io: <<< 07
    
    Two i2c messages are sent to perform a reset in m88ds3103_set_frontend:
    
      a. 0x07, 0x80
      b. 0x07, 0x00
    
    However, as shown in the capture, the regmap mutex is being handed over
    to another thread (ts2020_stat_work) in between these two messages.
    
    >From here, the device responds to every i2c message with an 07 message,
    and will only return to normal operation following a power cycle.
    
    Use regmap_multi_reg_write to group the two reset messages, ensuring
    both are processed before the regmap mutex is unlocked.
    
    Signed-off-by: James Hutchinson <jahutchinson99@googlemail.com>
    Reviewed-by: Antti Palosaari <crope@iki.fi>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9effa38946b6b6ff6e1cf9ae5da6e6162d769b69
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Mar 22 15:25:03 2019 +0100

    scsi: qla4xxx: avoid freeing unallocated dma memory
    
    [ Upstream commit 608f729c31d4caf52216ea00d20092a80959256d ]
    
    Clang -Wuninitialized notices that on is_qla40XX we never allocate any DMA
    memory in get_fw_boot_info() but attempt to free it anyway:
    
    drivers/scsi/qla4xxx/ql4_os.c:5915:7: error: variable 'buf_dma' is used uninitialized whenever 'if' condition is false
          [-Werror,-Wsometimes-uninitialized]
                    if (!(val & 0x07)) {
                        ^~~~~~~~~~~~~
    drivers/scsi/qla4xxx/ql4_os.c:5985:47: note: uninitialized use occurs here
            dma_free_coherent(&ha->pdev->dev, size, buf, buf_dma);
                                                         ^~~~~~~
    drivers/scsi/qla4xxx/ql4_os.c:5915:3: note: remove the 'if' if its condition is always true
                    if (!(val & 0x07)) {
                    ^~~~~~~~~~~~~~~~~~~
    drivers/scsi/qla4xxx/ql4_os.c:5885:20: note: initialize the variable 'buf_dma' to silence this warning
            dma_addr_t buf_dma;
                              ^
                               = 0
    
    Skip the call to dma_free_coherent() here.
    
    Fixes: 2a991c215978 ("[SCSI] qla4xxx: Boot from SAN support for open-iscsi")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 95f0bb0a6c839f3562c02212da5c54af1800e02b
Author: Tony Lindgren <tony@atomide.com>
Date:   Fri Mar 22 14:54:05 2019 -0700

    usb: core: Add PM runtime calls to usb_hcd_platform_shutdown
    
    [ Upstream commit 8ead7e817224d7832fe51a19783cb8fcadc79467 ]
    
    If ohci-platform is runtime suspended, we can currently get an "imprecise
    external abort" on reboot with ohci-platform loaded when PM runtime
    is implemented for the SoC.
    
    Let's fix this by adding PM runtime support to usb_hcd_platform_shutdown.
    
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1909121a6192008911974c259b7e87f89d8782ef
Author: Paul E. McKenney <paulmck@linux.ibm.com>
Date:   Thu Mar 21 09:27:28 2019 -0700

    rcutorture: Fix cleanup path for invalid torture_type strings
    
    [ Upstream commit b813afae7ab6a5e91b4e16cc567331d9c2ae1f04 ]
    
    If the specified rcutorture.torture_type is not in the rcu_torture_init()
    function's torture_ops[] array, rcutorture prints some console messages
    and then invokes rcu_torture_cleanup() to set state so that a future
    torture test can run.  However, rcu_torture_cleanup() also attempts to
    end the test that didn't actually start, and in doing so relies on the
    value of cur_ops, a value that is not particularly relevant in this case.
    This can result in confusing output or even follow-on failures due to
    attempts to use facilities that have not been properly initialized.
    
    This commit therefore sets the value of cur_ops to NULL in this case
    and inserts a check near the beginning of rcu_torture_cleanup(),
    thus avoiding relying on an irrelevant cur_ops value.
    
    Reported-by: kernel test robot <rong.a.chen@intel.com>
    Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1081d04a0443c67af9eaed624deb73388896439e
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Fri Mar 15 02:07:12 2019 -0500

    tty: ipwireless: fix missing checks for ioremap
    
    [ Upstream commit 1bbb1c318cd8a3a39e8c3e2e83d5e90542d6c3e3 ]
    
    ipw->attr_memory and ipw->common_memory are assigned with the
    return value of ioremap. ioremap may fail, but no checks
    are enforced. The fix inserts the checks to avoid potential
    NULL pointer dereferences.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c05b2ed7bc1b03887b34d2f4d6d5cdfef206d9be
Author: Pankaj Gupta <pagupta@redhat.com>
Date:   Tue Mar 19 11:34:06 2019 +0530

    virtio_console: initialize vtermno value for ports
    
    [ Upstream commit 4b0a2c5ff7215206ea6135a405f17c5f6fca7d00 ]
    
    For regular serial ports we do not initialize value of vtermno
    variable. A garbage value is assigned for non console ports.
    The value can be observed as a random integer with [1].
    
    [1] vim /sys/kernel/debug/virtio-ports/vport*p*
    
    This patch initialize the value of vtermno for console serial
    ports to '1' and regular serial ports are initiaized to '0'.
    
    Reported-by: siliu@redhat.com
    Signed-off-by: Pankaj Gupta <pagupta@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 348ec7b9a1c1c6f93911cf7b164ec870ee4c027a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Mar 26 01:12:07 2019 -0400

    media: wl128x: prevent two potential buffer overflows
    
    [ Upstream commit 9c2ccc324b3a6cbc865ab8b3e1a09e93d3c8ade9 ]
    
    Smatch marks skb->data as untrusted so it warns that "evt_hdr->dlen"
    can copy up to 255 bytes and we only have room for two bytes.  Even
    if this comes from the firmware and we trust it, the new policy
    generally is just to fix it as kernel hardenning.
    
    I can't test this code so I tried to be very conservative.  I considered
    not allowing "evt_hdr->dlen == 1" because it doesn't initialize the
    whole variable but in the end I decided to allow it and manually
    initialized "asic_id" and "asic_ver" to zero.
    
    Fixes: e8454ff7b9a4 ("[media] drivers:media:radio: wl128x: FM Driver Common sources")
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 557ae685914b5bfdedc61c3d41b188f0f47d3353
Author: Sowjanya Komatineni <skomatineni@nvidia.com>
Date:   Tue Mar 26 22:56:32 2019 -0700

    spi: tegra114: reset controller on probe
    
    [ Upstream commit 019194933339b3e9b486639c8cb3692020844d65 ]
    
    Fixes: SPI driver can be built as module so perform SPI controller reset
    on probe to make sure it is in valid state before initiating transfer.
    
    Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e75d5e2cd0c4cef1530edf97705166550b60321
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Fri Mar 29 10:27:26 2019 -0500

    cxgb3/l2t: Fix undefined behaviour
    
    [ Upstream commit 76497732932f15e7323dc805e8ea8dc11bb587cf ]
    
    The use of zero-sized array causes undefined behaviour when it is not
    the last member in a structure. As it happens to be in this case.
    
    Also, the current code makes use of a language extension to the C90
    standard, but the preferred mechanism to declare variable-length
    types such as this one is a flexible array member, introduced in
    C99:
    
    struct foo {
            int stuff;
            struct boo array[];
    };
    
    By making use of the mechanism above, we will get a compiler warning
    in case the flexible array does not occur last. Which is beneficial
    to cultivate a high-quality code.
    
    Fixes: e48f129c2f20 ("[SCSI] cxgb3i: convert cdev->l2opt to use rcu to prevent NULL dereference")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dc2a8861fdb8936504501df59d68e7224a48a837
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Tue Feb 26 16:17:50 2019 +0800

    ASoC: fsl_utils: fix a leaked reference by adding missing of_node_put
    
    [ Upstream commit c705247136a523488eac806bd357c3e5d79a7acd ]
    
    The call to of_parse_phandle returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    ./sound/soc/fsl/fsl_utils.c:74:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 38, but without a corresponding     object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: Timur Tabi <timur@kernel.org>
    Cc: Nicolin Chen <nicoleotsuka@gmail.com>
    Cc: Xiubo Li <Xiubo.Lee@gmail.com>
    Cc: Fabio Estevam <festevam@gmail.com>
    Cc: Liam Girdwood <lgirdwood@gmail.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: alsa-devel@alsa-project.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 971e4a273242ad6e314139a27253663e73acfb80
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Tue Feb 26 16:17:51 2019 +0800

    ASoC: eukrea-tlv320: fix a leaked reference by adding missing of_node_put
    
    [ Upstream commit b820d52e7eed7b30b2dfef5f4213a2bc3cbea6f3 ]
    
    The call to of_parse_phandle returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    ./sound/soc/fsl/eukrea-tlv320.c:121:3-9: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 102, but without a correspo    nding object release within this function.
    ./sound/soc/fsl/eukrea-tlv320.c:127:3-9: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 102, but without a correspo    nding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: Liam Girdwood <lgirdwood@gmail.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: alsa-devel@alsa-project.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5db3c5adf44ad3166472b009b122df5ef1144c9c
Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Date:   Wed Mar 27 11:18:48 2019 +0100

    HID: core: move Usage Page concatenation to Main item
    
    [ Upstream commit 58e75155009cc800005629955d3482f36a1e0eec ]
    
    As seen on some USB wireless keyboards manufactured by Primax, the HID
    parser was using some assumptions that are not always true. In this case
    it's s the fact that, inside the scope of a main item, an Usage Page
    will always precede an Usage.
    
    The spec is not pretty clear as 6.2.2.7 states "Any usage that follows
    is interpreted as a Usage ID and concatenated with the Usage Page".
    While 6.2.2.8 states "When the parser encounters a main item it
    concatenates the last declared Usage Page with a Usage to form a
    complete usage value." Being somewhat contradictory it was decided to
    match Window's implementation, which follows 6.2.2.8.
    
    In summary, the patch moves the Usage Page concatenation from the local
    item parsing function to the main item parsing function.
    
    Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
    Reviewed-by: Terry Junge <terry.junge@poly.com>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb7872f128359b7ef982780703411eb2a68a2390
Author: Chengguang Xu <cgxu519@gmx.com>
Date:   Fri Feb 15 20:27:11 2019 +0800

    chardev: add additional check for minor range overlap
    
    [ Upstream commit de36e16d1557a0b6eb328bc3516359a12ba5c25c ]
    
    Current overlap checking cannot correctly handle
    a case which is baseminor < existing baseminor &&
    baseminor + minorct > existing baseminor + minorct.
    
    Signed-off-by: Chengguang Xu <cgxu519@gmx.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5680f59f0f151ff22faa1351f15f0d0351266e71
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Mon Feb 25 12:56:35 2019 +0100

    x86/ia32: Fix ia32_restore_sigcontext() AC leak
    
    [ Upstream commit 67a0514afdbb8b2fc70b771b8c77661a9cb9d3a9 ]
    
    Objtool spotted that we call native_load_gs_index() with AC set.
    Re-arrange the code to avoid that.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Borislav Petkov <bp@alien8.de>
    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>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 94032b2e05c94e7d6babd438b2341c1510c213ee
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Tue Mar 5 19:34:05 2019 +0800

    arm64: cpu_ops: fix a leaked reference by adding missing of_node_put
    
    [ Upstream commit 92606ec9285fb84cd9b5943df23f07d741384bfc ]
    
    The call to of_get_next_child returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
      ./arch/arm64/kernel/cpu_ops.c:102:1-7: ERROR: missing of_node_put;
      acquired a node pointer with refcount incremented on line 69, but
      without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04f45a555ec3f9f3df362b7318a701fc2ece911a
Author: Stanley Chu <stanley.chu@mediatek.com>
Date:   Thu Mar 28 17:16:24 2019 +0800

    scsi: ufs: Avoid configuring regulator with undefined voltage range
    
    [ Upstream commit 3b141e8cfd54ba3e5c610717295b2a02aab26a05 ]
    
    For regulators used by UFS, vcc, vccq and vccq2 will have voltage range
    initialized by ufshcd_populate_vreg(), however other regulators may have
    undefined voltage range if dt-bindings have no such definition.
    
    In above undefined case, both "min_uV" and "max_uV" fields in ufs_vreg
    struct will be zero values and these values will be configured on
    regulators in different power modes.
    
    Currently this may have no harm if both "min_uV" and "max_uV" always keep
    "zero values" because regulator_set_voltage() will always bypass such
    invalid values and return "good" results.
    
    However improper values shall be fixed to avoid potential bugs.  Simply
    bypass voltage configuration if voltage range is not defined.
    
    Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Acked-by: Alim Akhtar <alim.akhtar@samsung.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 60bcfed2ad6067c569063f706dc4d4664a0d39a2
Author: Stanley Chu <stanley.chu@mediatek.com>
Date:   Thu Mar 28 17:16:25 2019 +0800

    scsi: ufs: Fix regulator load and icc-level configuration
    
    [ Upstream commit 0487fff76632ec023d394a05b82e87a971db8c03 ]
    
    Currently if a regulator has "<name>-fixed-regulator" property in device
    tree, it will skip current limit initialization.  This lead to a zero
    "max_uA" value in struct ufs_vreg.
    
    However, "regulator_set_load" operation shall be required on regulators
    which have valid current limits, otherwise a zero "max_uA" set by
    "regulator_set_load" may cause unexpected behavior when this regulator is
    enabled or set as high power mode.
    
    Similarly, in device's icc_level configuration flow, the target icc_level
    shall be updated if regulator also has valid current limit, otherwise a
    wrong icc_level will be calculated by zero "max_uA" and thus causes
    unexpected results after it is written to device.
    
    Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Acked-by: Alim Akhtar <alim.akhtar@samsung.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a597d2badef458be4fa717af55c4b9347fed9e6
Author: Piotr Figiel <p.figiel@camlintechnologies.com>
Date:   Fri Mar 8 15:25:04 2019 +0000

    brcmfmac: fix race during disconnect when USB completion is in progress
    
    [ Upstream commit db3b9e2e1d58080d0754bdf9293dabf8c6491b67 ]
    
    It was observed that rarely during USB disconnect happening shortly after
    connect (before full initialization completes) usb_hub_wq would wait
    forever for the dev_init_lock to be unlocked. dev_init_lock would remain
    locked though because of infinite wait during usb_kill_urb:
    
    [ 2730.656472] kworker/0:2     D    0   260      2 0x00000000
    [ 2730.660700] Workqueue: events request_firmware_work_func
    [ 2730.664807] [<809dca20>] (__schedule) from [<809dd164>] (schedule+0x4c/0xac)
    [ 2730.670587] [<809dd164>] (schedule) from [<8069af44>] (usb_kill_urb+0xdc/0x114)
    [ 2730.676815] [<8069af44>] (usb_kill_urb) from [<7f258b50>] (brcmf_usb_free_q+0x34/0xa8 [brcmfmac])
    [ 2730.684833] [<7f258b50>] (brcmf_usb_free_q [brcmfmac]) from [<7f2517d4>] (brcmf_detach+0xa0/0xb8 [brcmfmac])
    [ 2730.693557] [<7f2517d4>] (brcmf_detach [brcmfmac]) from [<7f251a34>] (brcmf_attach+0xac/0x3d8 [brcmfmac])
    [ 2730.702094] [<7f251a34>] (brcmf_attach [brcmfmac]) from [<7f2587ac>] (brcmf_usb_probe_phase2+0x468/0x4a0 [brcmfmac])
    [ 2730.711601] [<7f2587ac>] (brcmf_usb_probe_phase2 [brcmfmac]) from [<7f252888>] (brcmf_fw_request_done+0x194/0x220 [brcmfmac])
    [ 2730.721795] [<7f252888>] (brcmf_fw_request_done [brcmfmac]) from [<805748e4>] (request_firmware_work_func+0x4c/0x88)
    [ 2730.731125] [<805748e4>] (request_firmware_work_func) from [<80141474>] (process_one_work+0x228/0x808)
    [ 2730.739223] [<80141474>] (process_one_work) from [<80141a80>] (worker_thread+0x2c/0x564)
    [ 2730.746105] [<80141a80>] (worker_thread) from [<80147bcc>] (kthread+0x13c/0x16c)
    [ 2730.752227] [<80147bcc>] (kthread) from [<801010b4>] (ret_from_fork+0x14/0x20)
    
    [ 2733.099695] kworker/0:3     D    0  1065      2 0x00000000
    [ 2733.103926] Workqueue: usb_hub_wq hub_event
    [ 2733.106914] [<809dca20>] (__schedule) from [<809dd164>] (schedule+0x4c/0xac)
    [ 2733.112693] [<809dd164>] (schedule) from [<809e2a8c>] (schedule_timeout+0x214/0x3e4)
    [ 2733.119621] [<809e2a8c>] (schedule_timeout) from [<809dde2c>] (wait_for_common+0xc4/0x1c0)
    [ 2733.126810] [<809dde2c>] (wait_for_common) from [<7f258d00>] (brcmf_usb_disconnect+0x1c/0x4c [brcmfmac])
    [ 2733.135206] [<7f258d00>] (brcmf_usb_disconnect [brcmfmac]) from [<8069e0c8>] (usb_unbind_interface+0x5c/0x1e4)
    [ 2733.143943] [<8069e0c8>] (usb_unbind_interface) from [<8056d3e8>] (device_release_driver_internal+0x164/0x1fc)
    [ 2733.152769] [<8056d3e8>] (device_release_driver_internal) from [<8056c078>] (bus_remove_device+0xd0/0xfc)
    [ 2733.161138] [<8056c078>] (bus_remove_device) from [<8056977c>] (device_del+0x11c/0x310)
    [ 2733.167939] [<8056977c>] (device_del) from [<8069cba8>] (usb_disable_device+0xa0/0x1cc)
    [ 2733.174743] [<8069cba8>] (usb_disable_device) from [<8069507c>] (usb_disconnect+0x74/0x1dc)
    [ 2733.181823] [<8069507c>] (usb_disconnect) from [<80695e88>] (hub_event+0x478/0xf88)
    [ 2733.188278] [<80695e88>] (hub_event) from [<80141474>] (process_one_work+0x228/0x808)
    [ 2733.194905] [<80141474>] (process_one_work) from [<80141a80>] (worker_thread+0x2c/0x564)
    [ 2733.201724] [<80141a80>] (worker_thread) from [<80147bcc>] (kthread+0x13c/0x16c)
    [ 2733.207913] [<80147bcc>] (kthread) from [<801010b4>] (ret_from_fork+0x14/0x20)
    
    It was traced down to a case where usb_kill_urb would be called on an URB
    structure containing more or less random data, including large number in
    its use_count. During the debugging it appeared that in brcmf_usb_free_q()
    the traversal over URBs' lists is not synchronized with operations on those
    lists in brcmf_usb_rx_complete() leading to handling
    brcmf_usbdev_info structure (holding lists' head) as lists' element and in
    result causing above problem.
    
    Fix it by walking through all URBs during brcmf_cancel_all_urbs using the
    arrays of requests instead of linked lists.
    
    Signed-off-by: Piotr Figiel <p.figiel@camlintechnologies.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f95ab00ab455fa8f3022dd9ddaf128ea2c841bba
Author: Piotr Figiel <p.figiel@camlintechnologies.com>
Date:   Wed Mar 13 09:52:42 2019 +0000

    brcmfmac: convert dev_init_lock mutex to completion
    
    [ Upstream commit a9fd0953fa4a62887306be28641b4b0809f3b2fd ]
    
    Leaving dev_init_lock mutex locked in probe causes BUG and a WARNING when
    kernel is compiled with CONFIG_PROVE_LOCKING. Convert mutex to completion
    which silences those warnings and improves code readability.
    
    Fix below errors when connecting the USB WiFi dongle:
    
    brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43143 for chip BCM43143/2
    BUG: workqueue leaked lock or atomic: kworker/0:2/0x00000000/434
         last function: hub_event
    1 lock held by kworker/0:2/434:
     #0: 18d5dcdf (&devinfo->dev_init_lock){+.+.}, at: brcmf_usb_probe+0x78/0x550 [brcmfmac]
    CPU: 0 PID: 434 Comm: kworker/0:2 Not tainted 4.19.23-00084-g454a789-dirty #123
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    Workqueue: usb_hub_wq hub_event
    [<8011237c>] (unwind_backtrace) from [<8010d74c>] (show_stack+0x10/0x14)
    [<8010d74c>] (show_stack) from [<809c4324>] (dump_stack+0xa8/0xd4)
    [<809c4324>] (dump_stack) from [<8014195c>] (process_one_work+0x710/0x808)
    [<8014195c>] (process_one_work) from [<80141a80>] (worker_thread+0x2c/0x564)
    [<80141a80>] (worker_thread) from [<80147bcc>] (kthread+0x13c/0x16c)
    [<80147bcc>] (kthread) from [<801010b4>] (ret_from_fork+0x14/0x20)
    Exception stack(0xed1d9fb0 to 0xed1d9ff8)
    9fa0:                                     00000000 00000000 00000000 00000000
    9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
    
    ======================================================
    WARNING: possible circular locking dependency detected
    4.19.23-00084-g454a789-dirty #123 Not tainted
    ------------------------------------------------------
    kworker/0:2/434 is trying to acquire lock:
    e29cf799 ((wq_completion)"events"){+.+.}, at: process_one_work+0x174/0x808
    
    but task is already holding lock:
    18d5dcdf (&devinfo->dev_init_lock){+.+.}, at: brcmf_usb_probe+0x78/0x550 [brcmfmac]
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #2 (&devinfo->dev_init_lock){+.+.}:
           mutex_lock_nested+0x1c/0x24
           brcmf_usb_probe+0x78/0x550 [brcmfmac]
           usb_probe_interface+0xc0/0x1bc
           really_probe+0x228/0x2c0
           __driver_attach+0xe4/0xe8
           bus_for_each_dev+0x68/0xb4
           bus_add_driver+0x19c/0x214
           driver_register+0x78/0x110
           usb_register_driver+0x84/0x148
           process_one_work+0x228/0x808
           worker_thread+0x2c/0x564
           kthread+0x13c/0x16c
           ret_from_fork+0x14/0x20
             (null)
    
    -> #1 (brcmf_driver_work){+.+.}:
           worker_thread+0x2c/0x564
           kthread+0x13c/0x16c
           ret_from_fork+0x14/0x20
             (null)
    
    -> #0 ((wq_completion)"events"){+.+.}:
           process_one_work+0x1b8/0x808
           worker_thread+0x2c/0x564
           kthread+0x13c/0x16c
           ret_from_fork+0x14/0x20
             (null)
    
    other info that might help us debug this:
    
    Chain exists of:
      (wq_completion)"events" --> brcmf_driver_work --> &devinfo->dev_init_lock
    
     Possible unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(&devinfo->dev_init_lock);
                                   lock(brcmf_driver_work);
                                   lock(&devinfo->dev_init_lock);
      lock((wq_completion)"events");
    
     *** DEADLOCK ***
    
    1 lock held by kworker/0:2/434:
     #0: 18d5dcdf (&devinfo->dev_init_lock){+.+.}, at: brcmf_usb_probe+0x78/0x550 [brcmfmac]
    
    stack backtrace:
    CPU: 0 PID: 434 Comm: kworker/0:2 Not tainted 4.19.23-00084-g454a789-dirty #123
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    Workqueue: events request_firmware_work_func
    [<8011237c>] (unwind_backtrace) from [<8010d74c>] (show_stack+0x10/0x14)
    [<8010d74c>] (show_stack) from [<809c4324>] (dump_stack+0xa8/0xd4)
    [<809c4324>] (dump_stack) from [<80172838>] (print_circular_bug+0x210/0x330)
    [<80172838>] (print_circular_bug) from [<80175940>] (__lock_acquire+0x160c/0x1a30)
    [<80175940>] (__lock_acquire) from [<8017671c>] (lock_acquire+0xe0/0x268)
    [<8017671c>] (lock_acquire) from [<80141404>] (process_one_work+0x1b8/0x808)
    [<80141404>] (process_one_work) from [<80141a80>] (worker_thread+0x2c/0x564)
    [<80141a80>] (worker_thread) from [<80147bcc>] (kthread+0x13c/0x16c)
    [<80147bcc>] (kthread) from [<801010b4>] (ret_from_fork+0x14/0x20)
    Exception stack(0xed1d9fb0 to 0xed1d9ff8)
    9fa0:                                     00000000 00000000 00000000 00000000
    9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
    
    Signed-off-by: Piotr Figiel <p.figiel@camlintechnologies.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db74ef82ca8b21a4b007dbecbd3eace3f17ee894
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Mar 22 15:37:02 2019 +0100

    b43: shut up clang -Wuninitialized variable warning
    
    [ Upstream commit d825db346270dbceef83b7b750dbc29f1d7dcc0e ]
    
    Clang warns about what is clearly a case of passing an uninitalized
    variable into a static function:
    
    drivers/net/wireless/broadcom/b43/phy_lp.c:1852:23: error: variable 'gains' is uninitialized when used here
          [-Werror,-Wuninitialized]
                    lpphy_papd_cal(dev, gains, 0, 1, 30);
                                        ^~~~~
    drivers/net/wireless/broadcom/b43/phy_lp.c:1838:2: note: variable 'gains' is declared here
            struct lpphy_tx_gains gains, oldgains;
            ^
    1 error generated.
    
    However, this function is empty, and its arguments are never evaluated,
    so gcc in contrast does not warn here. Both compilers behave in a
    reasonable way as far as I can tell, so we should change the code
    to avoid the warning everywhere.
    
    We could just eliminate the lpphy_papd_cal() function entirely,
    given that it has had the TODO comment in it for 10 years now
    and is rather unlikely to ever get done. I'm doing a simpler
    change here, and just pass the 'oldgains' variable in that has
    been initialized, based on the guess that this is what was
    originally meant.
    
    Fixes: 2c0d6100da3e ("b43: LP-PHY: Begin implementing calibration & software RFKILL support")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 951fbf92381a08651f2519832d0ed0f3bf83254d
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Fri Mar 15 12:04:32 2019 -0500

    brcmfmac: fix missing checks for kmemdup
    
    [ Upstream commit 46953f97224d56a12ccbe9c6acaa84ca0dab2780 ]
    
    In case kmemdup fails, the fix sets conn_info->req_ie_len and
    conn_info->resp_ie_len to zero to avoid buffer overflows.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d3ee4d7fc6ab2effa809b7c4e4ef134a1e11465
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Tue Mar 12 02:56:33 2019 -0500

    rtlwifi: fix a potential NULL pointer dereference
    
    [ Upstream commit 765976285a8c8db3f0eb7f033829a899d0c2786e ]
    
    In case alloc_workqueue fails, the fix reports the error and
    returns to avoid NULL pointer dereference.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d7b052d84665bf29315d081966c29a0b2b97500
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Thu Mar 7 14:45:46 2019 -0700

    iio: common: ssp_sensors: Initialize calculated_time in ssp_common_process_data
    
    [ Upstream commit 6f9ca1d3eb74b81f811a87002de2d51640d135b1 ]
    
    When building with -Wsometimes-uninitialized, Clang warns:
    
    drivers/iio/common/ssp_sensors/ssp_iio.c:95:6: warning: variable
    'calculated_time' is used uninitialized whenever 'if' condition is false
    [-Wsometimes-uninitialized]
    
    While it isn't wrong, this will never be a problem because
    iio_push_to_buffers_with_timestamp only uses calculated_time
    on the same condition that it is assigned (when scan_timestamp
    is not zero). While iio_push_to_buffers_with_timestamp is marked
    as inline, Clang does inlining in the optimization stage, which
    happens after the semantic analysis phase (plus inline is merely
    a hint to the compiler).
    
    Fix this by just zero initializing calculated_time.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/394
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e98ef6767e41a4bf98356963e01cecda1a88c6f6
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Sat Mar 16 17:08:33 2019 -0500

    iio: hmc5843: fix potential NULL pointer dereferences
    
    [ Upstream commit 536cc27deade8f1ec3c1beefa60d5fbe0f6fcb28 ]
    
    devm_regmap_init_i2c may fail and return NULL. The fix returns
    the error when it fails.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a86d06179423b3ff13ad6752d88aee6d3b9ec47f
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Tue Mar 19 13:37:55 2019 +0200

    iio: ad_sigma_delta: Properly handle SPI bus locking vs CS assertion
    
    [ Upstream commit df1d80aee963480c5c2938c64ec0ac3e4a0df2e0 ]
    
    For devices from the SigmaDelta family we need to keep CS low when doing a
    conversion, since the device will use the MISO line as a interrupt to
    indicate that the conversion is complete.
    
    This is why the driver locks the SPI bus and when the SPI bus is locked
    keeps as long as a conversion is going on. The current implementation gets
    one small detail wrong though. CS is only de-asserted after the SPI bus is
    unlocked. This means it is possible for a different SPI device on the same
    bus to send a message which would be wrongfully be addressed to the
    SigmaDelta device as well. Make sure that the last SPI transfer that is
    done while holding the SPI bus lock de-asserts the CS signal.
    
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Alexandru Ardelean <Alexandru.Ardelean@analog.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4400dcd6947887ed56500dd9303a7c7db366c8df
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Apr 4 14:40:27 2019 -0700

    x86/build: Keep local relocations with ld.lld
    
    [ Upstream commit 7c21383f3429dd70da39c0c7f1efa12377a47ab6 ]
    
    The LLVM linker (ld.lld) defaults to removing local relocations, which
    causes KASLR boot failures. ld.bfd and ld.gold already handle this
    correctly. This adds the explicit instruction "--discard-none" during
    the link phase. There is no change in output for ld.bfd and ld.gold,
    but ld.lld now produces an image with all the needed relocations.
    
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: clang-built-linux@googlegroups.com
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20190404214027.GA7324@beast
    Link: https://github.com/ClangBuiltLinux/linux/issues/404
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 75ffb58460e3b52ba2589eb4a46b32f12e38e409
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Mon Apr 1 09:37:53 2019 +0800

    cpufreq: pmac32: fix possible object reference leak
    
    [ Upstream commit 8d10dc28a9ea6e8c02e825dab28699f3c72b02d9 ]
    
    The call to of_find_node_by_name returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    ./drivers/cpufreq/pmac32-cpufreq.c:557:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 552, but without a corresponding object release within this function.
    ./drivers/cpufreq/pmac32-cpufreq.c:569:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 552, but without a corresponding object release within this function.
    ./drivers/cpufreq/pmac32-cpufreq.c:598:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 587, but without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    Cc: Viresh Kumar <viresh.kumar@linaro.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: linux-pm@vger.kernel.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3d041608fd4b5ac852c7449423f3d267db84c0e4
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Mon Apr 1 09:37:52 2019 +0800

    cpufreq/pasemi: fix possible object reference leak
    
    [ Upstream commit a9acc26b75f652f697e02a9febe2ab0da648a571 ]
    
    The call to of_get_cpu_node returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    ./drivers/cpufreq/pasemi-cpufreq.c:212:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 147, but without a corresponding object release within this function.
    ./drivers/cpufreq/pasemi-cpufreq.c:220:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 147, but without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    Cc: Viresh Kumar <viresh.kumar@linaro.org>
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d02f33a4f42f4366221f8afe45756a4837f27cf
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Mon Apr 1 09:37:54 2019 +0800

    cpufreq: ppc_cbe: fix possible object reference leak
    
    [ Upstream commit 233298032803f2802fe99892d0de4ab653bfece4 ]
    
    The call to of_get_cpu_node returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    ./drivers/cpufreq/ppc_cbe_cpufreq.c:89:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 76, but without a corresponding object release within this function.
    ./drivers/cpufreq/ppc_cbe_cpufreq.c:89:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 76, but without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    Cc: Viresh Kumar <viresh.kumar@linaro.org>
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6be923556aadbfaed2acba5bb1cb71ffe360c564
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Apr 8 23:26:20 2019 +0200

    s390: cio: fix cio_irb declaration
    
    [ Upstream commit e91012ee855ad9f5ef2ab106a3de51db93fe4d0c ]
    
    clang points out that the declaration of cio_irb does not match the
    definition exactly, it is missing the alignment attribute:
    
    ../drivers/s390/cio/cio.c:50:1: warning: section does not match previous declaration [-Wsection]
    DEFINE_PER_CPU_ALIGNED(struct irb, cio_irb);
    ^
    ../include/linux/percpu-defs.h:150:2: note: expanded from macro 'DEFINE_PER_CPU_ALIGNED'
            DEFINE_PER_CPU_SECTION(type, name, PER_CPU_ALIGNED_SECTION)     \
            ^
    ../include/linux/percpu-defs.h:93:9: note: expanded from macro 'DEFINE_PER_CPU_SECTION'
            extern __PCPU_ATTRS(sec) __typeof__(type) name;                 \
                   ^
    ../include/linux/percpu-defs.h:49:26: note: expanded from macro '__PCPU_ATTRS'
            __percpu __attribute__((section(PER_CPU_BASE_SECTION sec)))     \
                                    ^
    ../drivers/s390/cio/cio.h:118:1: note: previous attribute is here
    DECLARE_PER_CPU(struct irb, cio_irb);
    ^
    ../include/linux/percpu-defs.h:111:2: note: expanded from macro 'DECLARE_PER_CPU'
            DECLARE_PER_CPU_SECTION(type, name, "")
            ^
    ../include/linux/percpu-defs.h:87:9: note: expanded from macro 'DECLARE_PER_CPU_SECTION'
            extern __PCPU_ATTRS(sec) __typeof__(type) name
                   ^
    ../include/linux/percpu-defs.h:49:26: note: expanded from macro '__PCPU_ATTRS'
            __percpu __attribute__((section(PER_CPU_BASE_SECTION sec)))     \
                                    ^
    Use DECLARE_PER_CPU_ALIGNED() here, to make the two match.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Sebastian Ott <sebott@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65e3cb04a5a23f883aeb11e53c314c06a5e3349b
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Thu Apr 4 17:33:56 2019 +0100

    extcon: arizona: Disable mic detect if running when driver is removed
    
    [ Upstream commit 00053de52231117ddc154042549f2256183ffb86 ]
    
    Microphone detection provides the button detection features on the
    Arizona CODECs as such it will be running if the jack is currently
    inserted. If the driver is unbound whilst the jack is still inserted
    this will cause warnings from the regulator framework as the MICVDD
    regulator is put but was never disabled.
    
    Correct this by disabling microphone detection on driver removal and if
    the microphone detection was running disable the regulator and put the
    runtime reference that was currently held.
    
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db7eb206560c0d177a035b246437e87d08396a6f
Author: Ulf Hansson <ulf.hansson@linaro.org>
Date:   Wed Apr 10 11:55:16 2019 +0200

    PM / core: Propagate dev->power.wakeup_path when no callbacks
    
    [ Upstream commit dc351d4c5f4fe4d0f274d6d660227be0c3a03317 ]
    
    The dev->power.direct_complete flag may become set in device_prepare() in
    case the device don't have any PM callbacks (dev->power.no_pm_callbacks is
    set). This leads to a broken behaviour, when there is child having wakeup
    enabled and relies on its parent to be used in the wakeup path.
    
    More precisely, when the direct complete path becomes selected for the
    child in __device_suspend(), the propagation of the dev->power.wakeup_path
    becomes skipped as well.
    
    Let's address this problem, by checking if the device is a part the wakeup
    path or has wakeup enabled, then prevent the direct complete path from
    being used.
    
    Reported-by: Loic Pallardy <loic.pallardy@st.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    [ rjw: Comment cleanup ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 066a286679b4da9974e5f9a9ade84078966b1d55
Author: Yinbo Zhu <yinbo.zhu@nxp.com>
Date:   Mon Mar 11 02:16:40 2019 +0000

    mmc: sdhci-of-esdhc: add erratum eSDHC-A001 and A-008358 support
    
    [ Upstream commit 05cb6b2a66fa7837211a060878e91be5eb10cb07 ]
    
    eSDHC-A001: The data timeout counter (SYSCTL[DTOCV]) is not
    reliable for DTOCV values 0x4(2^17 SD clock), 0x8(2^21 SD clock),
    and 0xC(2^25 SD clock). The data timeout counter can count from
    2^13–2^27, but for values 2^17, 2^21, and 2^25, the timeout
    counter counts for only 2^13 SD clocks.
    A-008358: The data timeout counter value loaded into the timeout
    counter is less than expected and can result into early timeout
    error in case of eSDHC data transactions. The table below shows
    the expected vs actual timeout period for different values of
    SYSCTL[DTOCV]:
    these two erratum has the same quirk to control it, and set
    SDHCI_QUIRK_RESET_AFTER_REQUEST to fix above issue.
    
    Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a783be705bada2d76580be3ecd2f0b8a013c3ef
Author: Yinbo Zhu <yinbo.zhu@nxp.com>
Date:   Mon Mar 11 02:16:36 2019 +0000

    mmc: sdhci-of-esdhc: add erratum eSDHC5 support
    
    [ Upstream commit a46e42712596b51874f04c73f1cdf1017f88df52 ]
    
    Software writing to the Transfer Type configuration register
    (system clock domain) can cause a setup/hold violation in the
    CRC flops (card clock domain), which can cause write accesses
    to be sent with corrupt CRC values. This issue occurs only for
    write preceded by read. this erratum is to fix this issue.
    
    Signed-off-by: Yinbo Zhu <yinbo.zhu@nxp.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8b0e6af16ae690e3f497a91def4d52cd72c66fc3
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Mon Mar 11 00:53:33 2019 -0500

    mmc_spi: add a status check for spi_sync_locked
    
    [ Upstream commit 611025983b7976df0183390a63a2166411d177f1 ]
    
    In case spi_sync_locked fails, the fix reports the error and
    returns the error code upstream.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a30e90a8eb3ac873754a5873284d34216cbda2ab
Author: John Garry <john.garry@huawei.com>
Date:   Fri Apr 12 16:57:56 2019 +0800

    scsi: libsas: Do discovery on empty PHY to update PHY info
    
    [ Upstream commit d8649fc1c5e40e691d589ed825998c36a947491c ]
    
    When we discover the PHY is empty in sas_rediscover_dev(), the PHY
    information (like negotiated linkrate) is not updated.
    
    As such, for a user examining sysfs for that PHY, they would see
    incorrect values:
    
    root@(none)$ cd /sys/class/sas_phy/phy-0:0:20
    root@(none)$ more negotiated_linkrate
    3.0 Gbit
    root@(none)$ echo 0 > enable
    root@(none)$ more negotiated_linkrate
    3.0 Gbit
    
    So fix this, simply discover the PHY again, even though we know it's empty;
    in the above example, this gives us:
    
    root@(none)$ more negotiated_linkrate
    Phy disabled
    
    We must do this after unregistering the device associated with the PHY
    (in sas_unregister_devs_sas_addr()).
    
    Signed-off-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 915defac2a9a48b28b160accab952f8a9122b0ca
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Apr 4 10:52:43 2019 -0700

    hwmon: (f71805f) Use request_muxed_region for Super-IO accesses
    
    [ Upstream commit 73e6ff71a7ea924fb7121d576a2d41e3be3fc6b5 ]
    
    Super-IO accesses may fail on a system with no or unmapped LPC bus.
    
    Unable to handle kernel paging request at virtual address ffffffbffee0002e
    pgd = ffffffc1d68d4000
    [ffffffbffee0002e] *pgd=0000000000000000, *pud=0000000000000000
    Internal error: Oops: 94000046 [#1] PREEMPT SMP
    Modules linked in: f71805f(+) hwmon
    CPU: 3 PID: 1659 Comm: insmod Not tainted 4.5.0+ #88
    Hardware name: linux,dummy-virt (DT)
    task: ffffffc1f6665400 ti: ffffffc1d6418000 task.ti: ffffffc1d6418000
    PC is at f71805f_find+0x6c/0x358 [f71805f]
    
    Also, other drivers may attempt to access the LPC bus at the same time,
    resulting in undefined behavior.
    
    Use request_muxed_region() to ensure that IO access on the requested
    address space is supported, and to ensure that access by multiple
    drivers is synchronized.
    
    Fixes: e53004e20a58e ("hwmon: New f71805f driver")
    Reported-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Reported-by: John Garry <john.garry@huawei.com>
    Cc: John Garry <john.garry@huawei.com>
    Acked-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0eb8a476ffc5310c4e406270a1df7432a88cc5b7
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Apr 4 11:16:20 2019 -0700

    hwmon: (pc87427) Use request_muxed_region for Super-IO accesses
    
    [ Upstream commit 755a9b0f8aaa5639ba5671ca50080852babb89ce ]
    
    Super-IO accesses may fail on a system with no or unmapped LPC bus.
    
    Also, other drivers may attempt to access the LPC bus at the same time,
    resulting in undefined behavior.
    
    Use request_muxed_region() to ensure that IO access on the requested
    address space is supported, and to ensure that access by multiple drivers
    is synchronized.
    
    Fixes: ba224e2c4f0a7 ("hwmon: New PC87427 hardware monitoring driver")
    Reported-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Reported-by: John Garry <john.garry@huawei.com>
    Cc: John Garry <john.garry@huawei.com>
    Acked-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79deb6abd1f5bdb3e5e2d5c2bda67d2c75baa411
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Apr 4 11:22:42 2019 -0700

    hwmon: (smsc47b397) Use request_muxed_region for Super-IO accesses
    
    [ Upstream commit 8c0826756744c0ac1df600a5e4cca1a341b13101 ]
    
    Super-IO accesses may fail on a system with no or unmapped LPC bus.
    
    Also, other drivers may attempt to access the LPC bus at the same time,
    resulting in undefined behavior.
    
    Use request_muxed_region() to ensure that IO access on the requested
    address space is supported, and to ensure that access by multiple drivers
    is synchronized.
    
    Fixes: 8d5d45fb1468 ("I2C: Move hwmon drivers (2/3)")
    Reported-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Reported-by: John Garry <john.garry@huawei.com>
    Cc: John Garry <john.garry@huawei.com>
    Acked-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 92b4d16997c40e1c86e19fb0f657d917b5b6f997
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Apr 4 11:28:37 2019 -0700

    hwmon: (smsc47m1) Use request_muxed_region for Super-IO accesses
    
    [ Upstream commit d6410408ad2a798c4cc685252c1baa713be0ad69 ]
    
    Super-IO accesses may fail on a system with no or unmapped LPC bus.
    
    Also, other drivers may attempt to access the LPC bus at the same time,
    resulting in undefined behavior.
    
    Use request_muxed_region() to ensure that IO access on the requested
    address space is supported, and to ensure that access by multiple drivers
    is synchronized.
    
    Fixes: 8d5d45fb1468 ("I2C: Move hwmon drivers (2/3)")
    Reported-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Reported-by: John Garry <john.garry@huawei.com>
    Cc: John Garry <john.garry@huawei.com>
    Acked-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3e58378c678bf12b1aa5be1e141aba29b9e2e58
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Fri Apr 5 08:53:08 2019 -0700

    hwmon: (vt1211) Use request_muxed_region for Super-IO accesses
    
    [ Upstream commit 14b97ba5c20056102b3dd22696bf17b057e60976 ]
    
    Super-IO accesses may fail on a system with no or unmapped LPC bus.
    
    Also, other drivers may attempt to access the LPC bus at the same time,
    resulting in undefined behavior.
    
    Use request_muxed_region() to ensure that IO access on the requested
    address space is supported, and to ensure that access by multiple drivers
    is synchronized.
    
    Fixes: 2219cd81a6cd ("hwmon/vt1211: Add probing of alternate config index port")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 488920af3bb37153c5f446c969a3e578d1484b18
Author: Colin Ian King <colin.king@canonical.com>
Date:   Sat Apr 13 17:00:26 2019 +0100

    RDMA/cxgb4: Fix null pointer dereference on alloc_skb failure
    
    [ Upstream commit a6d2a5a92e67d151c98886babdc86d530d27111c ]
    
    Currently if alloc_skb fails to allocate the skb a null skb is passed to
    t4_set_arp_err_handler and this ends up dereferencing the null skb.  Avoid
    the NULL pointer dereference by checking for a NULL skb and returning
    early.
    
    Addresses-Coverity: ("Dereference null return")
    Fixes: b38a0ad8ec11 ("RDMA/cxgb4: Set arp error handler for PASS_ACCEPT_RPL messages")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Acked-by: Potnuri Bharat Teja <bharat@chelsio.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2ff310e6dae25b762884801b7b529679c8871608
Author: Nicholas Nunley <nicholas.d.nunley@intel.com>
Date:   Wed Feb 6 15:08:17 2019 -0800

    i40e: don't allow changes to HW VLAN stripping on active port VLANs
    
    [ Upstream commit bfb0ebed53857cfc57f11c63fa3689940d71c1c8 ]
    
    Modifying the VLAN stripping options when a port VLAN is configured
    will break traffic for the VSI, and conceptually doesn't make sense,
    so don't allow this.
    
    Signed-off-by: Nicholas Nunley <nicholas.d.nunley@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc791e819503eefa624d2e728322861f959c5061
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sun Apr 14 17:59:38 2019 +0200

    x86/irq/64: Limit IST stack overflow check to #DB stack
    
    [ Upstream commit 7dbcf2b0b770eeb803a416ee8dcbef78e6389d40 ]
    
    Commit
    
      37fe6a42b343 ("x86: Check stack overflow in detail")
    
    added a broad check for the full exception stack area, i.e. it considers
    the full exception stack area as valid.
    
    That's wrong in two aspects:
    
     1) It does not check the individual areas one by one
    
     2) #DF, NMI and #MCE are not enabling interrupts which means that a
        regular device interrupt cannot happen in their context. In fact if a
        device interrupt hits one of those IST stacks that's a bug because some
        code path enabled interrupts while handling the exception.
    
    Limit the check to the #DB stack and consider all other IST stacks as
    'overflow' or invalid.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com>
    Cc: Nicolai Stange <nstange@suse.de>
    Cc: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20190414160143.682135110@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3557f085776753c99aa0509e15c398288002273d
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Apr 16 10:50:01 2019 -0400

    USB: core: Don't unbind interfaces following device reset failure
    
    [ Upstream commit 381419fa720060ba48b7bbc483be787d5b1dca6f ]
    
    The SCSI core does not like to have devices or hosts unregistered
    while error recovery is in progress.  Trying to do so can lead to
    self-deadlock: Part of the removal code tries to obtain a lock already
    held by the error handler.
    
    This can cause problems for the usb-storage and uas drivers, because
    their error handler routines perform a USB reset, and if the reset
    fails then the USB core automatically goes on to unbind all drivers
    from the device's interfaces -- all while still in the context of the
    SCSI error handler.
    
    As it turns out, practically all the scenarios leading to a USB reset
    failure end up causing a device disconnect (the main error pathway in
    usb_reset_and_verify_device(), at the end of the routine, calls
    hub_port_logical_disconnect() before returning).  As a result, the
    hub_wq thread will soon become aware of the problem and will unbind
    all the device's drivers in its own context, not in the
    error-handler's context.
    
    This means that usb_reset_device() does not need to call
    usb_unbind_and_rebind_marked_interfaces() in cases where
    usb_reset_and_verify_device() has returned an error, because hub_wq
    will take care of everything anyway.
    
    This particular problem was observed in somewhat artificial
    circumstances, by using usbfs to tell a hub to power-down a port
    connected to a USB-3 mass storage device using the UAS protocol.  With
    the port turned off, the currently executing command timed out and the
    error handler started running.  The USB reset naturally failed,
    because the hub port was off, and the error handler deadlocked as
    described above.  Not carrying out the call to
    usb_unbind_and_rebind_marked_interfaces() fixes this issue.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Kento Kobayashi <Kento.A.Kobayashi@sony.com>
    Tested-by: Kento Kobayashi <Kento.A.Kobayashi@sony.com>
    CC: Bart Van Assche <bvanassche@acm.org>
    CC: Martin K. Petersen <martin.petersen@oracle.com>
    CC: Jacky Cao <Jacky.Cao@sony.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6f5e198878fb4826b16be17d925e97bae2e57f5e
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Wed Feb 27 11:10:18 2019 +0300

    sched/core: Handle overflow in cpu_shares_write_u64
    
    [ Upstream commit 5b61d50ab4ef590f5e1d4df15cd2cea5f5715308 ]
    
    Bit shift in scale_load() could overflow shares. This patch saturates
    it to MAX_SHARES like following sched_group_set_shares().
    
    Example:
    
     # echo 9223372036854776832 > cpu.shares
     # cat cpu.shares
    
    Before patch: 1024
    After pattch: 262144
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/155125501891.293431.3345233332801109696.stgit@buzz
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9812286a63a1d9b953d723b972b0e0241ae0c47c
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Wed Feb 27 11:10:20 2019 +0300

    sched/core: Check quota and period overflow at usec to nsec conversion
    
    [ Upstream commit 1a8b4540db732ca16c9e43ac7c08b1b8f0b252d8 ]
    
    Large values could overflow u64 and pass following sanity checks.
    
     # echo 18446744073750000 > cpu.cfs_period_us
     # cat cpu.cfs_period_us
     40448
    
     # echo 18446744073750000 > cpu.cfs_quota_us
     # cat cpu.cfs_quota_us
     40448
    
    After this patch they will fail with -EINVAL.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/155125502079.293431.3947497929372138600.stgit@buzz
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d4961a415ed8f79ae7c73ad951a3a311fa0bd2d
Author: Nathan Lynch <nathanl@linux.ibm.com>
Date:   Thu Apr 18 13:56:57 2019 -0500

    powerpc/numa: improve control of topology updates
    
    [ Upstream commit 2d4d9b308f8f8dec68f6dbbff18c68ec7c6bd26f ]
    
    When booted with "topology_updates=no", or when "off" is written to
    /proc/powerpc/topology_updates, NUMA reassignments are inhibited for
    PRRN and VPHN events. However, migration and suspend unconditionally
    re-enable reassignments via start_topology_update(). This is
    incoherent.
    
    Check the topology_updates_enabled flag in
    start/stop_topology_update() so that callers of those APIs need not be
    aware of whether reassignments are enabled. This allows the
    administrative decision on reassignments to remain in force across
    migrations and suspensions.
    
    Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 82077215ed253ede17a84608289317f6b0ab8022
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Apr 8 05:52:38 2019 -0400

    media: pvrusb2: Prevent a buffer overflow
    
    [ Upstream commit c1ced46c7b49ad7bc064e68d966e0ad303f917fb ]
    
    The ctrl_check_input() function is called from pvr2_ctrl_range_check().
    It's supposed to validate user supplied input and return true or false
    depending on whether the input is valid or not.  The problem is that
    negative shifts or shifts greater than 31 are undefined in C.  In
    practice with GCC they result in shift wrapping so this function returns
    true for some inputs which are not valid and this could result in a
    buffer overflow:
    
        drivers/media/usb/pvrusb2/pvrusb2-ctrl.c:205 pvr2_ctrl_get_valname()
        warn: uncapped user index 'names[val]'
    
    The cptr->hdw->input_allowed_mask mask is configured in pvr2_hdw_create()
    and the highest valid bit is BIT(4).
    
    Fixes: 7fb20fa38caa ("V4L/DVB (7299): pvrusb2: Improve logic which handles input choice availability")
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ca865598abf148eb3f67db3b22007cb01266879e
Author: Shuah Khan <shuah@kernel.org>
Date:   Mon Apr 1 20:43:17 2019 -0400

    media: au0828: Fix NULL pointer dereference in au0828_analog_stream_enable()
    
    [ Upstream commit 898bc40bfcc26abb6e06e960d6d4754c36c58b50 ]
    
    Fix au0828_analog_stream_enable() to check if device is in the right
    state first. When unbind happens while bind is in progress, usbdev
    pointer could be invalid in au0828_analog_stream_enable() and a call
    to usb_ifnum_to_if() will result in the null pointer dereference.
    
    This problem is found with the new media_dev_allocator.sh test.
    
    kernel: [  590.359623] BUG: unable to handle kernel NULL pointer dereference at 00000000000004e8
    kernel: [  590.359627] #PF error: [normal kernel read fault]
    kernel: [  590.359629] PGD 0 P4D 0
    kernel: [  590.359632] Oops: 0000 [#1] SMP PTI
    kernel: [  590.359634] CPU: 3 PID: 1458 Comm: v4l_id Not tainted 5.1.0-rc2+ #30
    kernel: [  590.359636] Hardware name: Dell Inc. OptiPlex 7 90/0HY9JP, BIOS A18 09/24/2013
    kernel: [  590.359641] RIP: 0010:usb_ifnum_to_if+0x6/0x60
    kernel: [  590.359643] Code: 5d 41 5e 41 5f 5d c3 48 83 c4
     10 b8 fa ff ff ff 5b 41 5c 41 5d 41 5e 41 5f 5d c3 b8 fa ff ff ff c3 0f 1f 00 6
    6 66 66 66 90 55 <48> 8b 97 e8 04 00 00 48 89 e5 48 85 d2 74 41 0f b6 4a 04 84 c
    9 74
    kernel: [  590.359645] RSP: 0018:ffffad3cc3c1fc00 EFLAGS: 00010246
    kernel: [  590.359646] RAX: 0000000000000000 RBX: ffff8ded b1f3c000 RCX: 1f377e4500000000
    kernel: [  590.359648] RDX: ffff8dedfa3a6b50 RSI: 00000000 00000000 RDI: 0000000000000000
    kernel: [  590.359649] RBP: ffffad3cc3c1fc28 R08: 00000000 8574acc2 R09: ffff8dedfa3a6b50
    kernel: [  590.359650] R10: 0000000000000001 R11: 00000000 00000000 R12: 0000000000000000
    kernel: [  590.359652] R13: ffff8dedb1f3f0f0 R14: ffffffff adcf7ec0 R15: 0000000000000000
    kernel: [  590.359654] FS:  00007f7917198540(0000) GS:ffff 8dee258c0000(0000) knlGS:0000000000000000
    kernel: [  590.359655] CS:  0010 DS: 0000 ES: 0000 CR0: 00 00000080050033
    kernel: [  590.359657] CR2: 00000000000004e8 CR3: 00000001 a388e002 CR4: 00000000000606e0
    kernel: [  590.359658] Call Trace:
    kernel: [  590.359664]  ? au0828_analog_stream_enable+0x2c/0x180
    kernel: [  590.359666]  au0828_v4l2_open+0xa4/0x110
    kernel: [  590.359670]  v4l2_open+0x8b/0x120
    kernel: [  590.359674]  chrdev_open+0xa6/0x1c0
    kernel: [  590.359676]  ? cdev_put.part.3+0x20/0x20
    kernel: [  590.359678]  do_dentry_open+0x1f6/0x360
    kernel: [  590.359681]  vfs_open+0x2f/0x40
    kernel: [  590.359684]  path_openat+0x299/0xc20
    kernel: [  590.359688]  do_filp_open+0x9b/0x110
    kernel: [  590.359695]  ? _raw_spin_unlock+0x27/0x40
    kernel: [  590.359697]  ? __alloc_fd+0xb2/0x160
    kernel: [  590.359700]  do_sys_open+0x1ba/0x260
    kernel: [  590.359702]  ? do_sys_open+0x1ba/0x260
    kernel: [  590.359712]  __x64_sys_openat+0x20/0x30
    kernel: [  590.359715]  do_syscall_64+0x5a/0x120
    kernel: [  590.359718]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Signed-off-by: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a8e0739d465eecf1645506754f888db05c32840c
Author: Wenwen Wang <wang6495@umn.edu>
Date:   Fri Apr 19 20:49:29 2019 -0500

    audit: fix a memory leak bug
    
    [ Upstream commit 70c4cf17e445264453bc5323db3e50aa0ac9e81f ]
    
    In audit_rule_change(), audit_data_to_entry() is firstly invoked to
    translate the payload data to the kernel's rule representation. In
    audit_data_to_entry(), depending on the audit field type, an audit tree may
    be created in audit_make_tree(), which eventually invokes kmalloc() to
    allocate the tree.  Since this tree is a temporary tree, it will be then
    freed in the following execution, e.g., audit_add_rule() if the message
    type is AUDIT_ADD_RULE or audit_del_rule() if the message type is
    AUDIT_DEL_RULE. However, if the message type is neither AUDIT_ADD_RULE nor
    AUDIT_DEL_RULE, i.e., the default case of the switch statement, this
    temporary tree is not freed.
    
    To fix this issue, only allocate the tree when the type is AUDIT_ADD_RULE
    or AUDIT_DEL_RULE.
    
    Signed-off-by: Wenwen Wang <wang6495@umn.edu>
    Reviewed-by: Richard Guy Briggs <rgb@redhat.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff3038fe657d9822c7dfef1ce9e3c937e2411acb
Author: Akinobu Mita <akinobu.mita@gmail.com>
Date:   Sat Mar 30 10:01:31 2019 -0400

    media: ov2659: make S_FMT succeed even if requested format doesn't match
    
    [ Upstream commit bccb89cf9cd07a0690d519696a00c00a973b3fe4 ]
    
    This driver returns an error if unsupported media bus pixel code is
    requested by VIDIOC_SUBDEV_S_FMT.
    
    But according to Documentation/media/uapi/v4l/vidioc-subdev-g-fmt.rst,
    
    Drivers must not return an error solely because the requested format
    doesn't match the device capabilities. They must instead modify the
    format to match what the hardware can provide.
    
    So select default format code and return success in that case.
    
    This is detected by v4l2-compliance.
    
    Cc: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
    Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
    Acked-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d97a3abcf2f4a8fbeaa426c08a8a9930df006ae
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Tue Apr 2 03:24:15 2019 -0400

    media: au0828: stop video streaming only when last user stops
    
    [ Upstream commit f604f0f5afb88045944567f604409951b5eb6af8 ]
    
    If the application was streaming from both videoX and vbiX, and streaming
    from videoX was stopped, then the vbi streaming also stopped.
    
    The cause being that stop_streaming for video stopped the subdevs as well,
    instead of only doing that if dev->streaming_users reached 0.
    
    au0828_stop_vbi_streaming was also wrong since it didn't stop the subdevs
    at all when dev->streaming_users reached 0.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Tested-by: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 115ccd9ca776c99cf007999d5ac2954f89ade78e
Author: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Date:   Fri Mar 29 21:06:09 2019 -0400

    media: ov6650: Move v4l2_clk_get() to ov6650_video_probe() helper
    
    [ Upstream commit ccdd85d518d8b9320ace1d87271f0ba2175f21fa ]
    
    In preparation for adding asynchronous subdevice support to the driver,
    don't acquire v4l2_clk from the driver .probe() callback as that may
    fail if the clock is provided by a bridge driver which may be not yet
    initialized.  Move the v4l2_clk_get() to ov6650_video_probe() helper
    which is going to be converted to v4l2_subdev_internal_ops.registered()
    callback, executed only when the bridge driver is ready.
    
    Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1433d7a0937bae7e556e6f77bbb72caa63a510b4
Author: Philipp Zabel <p.zabel@pengutronix.de>
Date:   Mon Apr 8 08:32:49 2019 -0400

    media: coda: clear error return value before picture run
    
    [ Upstream commit bbeefa7357a648afe70e7183914c87c3878d528d ]
    
    The error return value is not written by some firmware codecs, such as
    MPEG-2 decode on CodaHx4. Clear the error return value before starting
    the picture run to avoid misinterpreting unrelated values returned by
    sequence initialization as error return value.
    
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5cadb7ae715fa9c78f371a476f66570af0b5e4d1
Author: Nicolas Ferre <nicolas.ferre@microchip.com>
Date:   Wed Apr 3 12:23:57 2019 +0200

    dmaengine: at_xdmac: remove BUG_ON macro in tasklet
    
    [ Upstream commit e2c114c06da2d9ffad5b16690abf008d6696f689 ]
    
    Even if this case shouldn't happen when controller is properly programmed,
    it's still better to avoid dumping a kernel Oops for this.
    As the sequence may happen only for debugging purposes, log the error and
    just finish the tasklet call.
    
    Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit af8b5d7d947730681bb44492c1a224f975c3541a
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Fri Apr 12 14:02:19 2019 +0800

    pinctrl: pistachio: fix leaked of_node references
    
    [ Upstream commit 44a4455ac2c6b0981eace683a2b6eccf47689022 ]
    
    The call to of_get_child_by_name returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    ./drivers/pinctrl/pinctrl-pistachio.c:1422:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 1360, but without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: linux-gpio@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 74dd38a5a447814cd49780ef9d1f88fe578f04f7
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Apr 20 13:22:10 2019 +0200

    HID: logitech-hidpp: use RAP instead of FAP to get the protocol version
    
    [ Upstream commit 096377525cdb8251e4656085efc988bdf733fb4c ]
    
    According to the logitech_hidpp_2.0_specification_draft_2012-06-04.pdf doc:
    https://lekensteyn.nl/files/logitech/logitech_hidpp_2.0_specification_draft_2012-06-04.pdf
    
    We should use a register-access-protocol request using the short input /
    output report ids. This is necessary because 27MHz HID++ receivers have
    a max-packetsize on their HIP++ endpoint of 8, so they cannot support
    long reports. Using a feature-access-protocol request (which is always
    long or very-long) with these will cause a timeout error, followed by
    the hidpp driver treating the device as not being HID++ capable.
    
    This commit fixes this by switching to using a rap request to get the
    protocol version.
    
    Besides being tested with a (046d:c517) 27MHz receiver with various
    27MHz keyboards and mice, this has also been tested to not cause
    regressions on a non-unifying dual-HID++ nano receiver (046d:c534) with
    k270 and m185 HID++-2.0 devices connected and on a unifying/dj receiver
    (046d:c52b) with a HID++-2.0 Logitech Rechargeable Touchpad T650.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9bffc62051a92f923264cbc99cb634e0be95c2aa
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Apr 24 09:19:25 2019 +0200

    mm/uaccess: Use 'unsigned long' to placate UBSAN warnings on older GCC versions
    
    [ Upstream commit 29da93fea3ea39ab9b12270cc6be1b70ef201c9e ]
    
    Randy reported objtool triggered on his (GCC-7.4) build:
    
      lib/strncpy_from_user.o: warning: objtool: strncpy_from_user()+0x315: call to __ubsan_handle_add_overflow() with UACCESS enabled
      lib/strnlen_user.o: warning: objtool: strnlen_user()+0x337: call to __ubsan_handle_sub_overflow() with UACCESS enabled
    
    This is due to UBSAN generating signed-overflow-UB warnings where it
    should not. Prior to GCC-8 UBSAN ignored -fwrapv (which the kernel
    uses through -fno-strict-overflow).
    
    Make the functions use 'unsigned long' throughout.
    
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Randy Dunlap <rdunlap@infradead.org> # build-tested
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: luto@kernel.org
    Link: http://lkml.kernel.org/r/20190424072208.754094071@infradead.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae6b1f7611802fdfe946b4d1694189387135e459
Author: Jiri Kosina <jkosina@suse.cz>
Date:   Wed Apr 24 09:04:57 2019 +0200

    x86/mm: Remove in_nmi() warning from 64-bit implementation of vmalloc_fault()
    
    [ Upstream commit a65c88e16f32aa9ef2e8caa68ea5c29bd5eb0ff0 ]
    
    In-NMI warnings have been added to vmalloc_fault() via:
    
      ebc8827f75 ("x86: Barf when vmalloc and kmemcheck faults happen in NMI")
    
    back in the time when our NMI entry code could not cope with nested NMIs.
    
    These days, it's perfectly fine to take a fault in NMI context and we
    don't have to care about the fact that IRET from the fault handler might
    cause NMI nesting.
    
    This warning has already been removed from 32-bit implementation of
    vmalloc_fault() in:
    
      6863ea0cda8 ("x86/mm: Remove in_nmi() warning from vmalloc_fault()")
    
    but the 64-bit version was omitted.
    
    Remove the bogus warning also from 64-bit implementation of vmalloc_fault().
    
    Reported-by: Nicolai Stange <nstange@suse.de>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 6863ea0cda8 ("x86/mm: Remove in_nmi() warning from vmalloc_fault()")
    Link: http://lkml.kernel.org/r/nycvar.YFH.7.76.1904240902280.9803@cbobk.fhfr.pm
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b059848e119fffefb68ad77e5c5477832704af10
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Wed Apr 24 10:52:53 2019 +0200

    smpboot: Place the __percpu annotation correctly
    
    [ Upstream commit d4645d30b50d1691c26ff0f8fa4e718b08f8d3bb ]
    
    The test robot reported a wrong assignment of a per-CPU variable which
    it detected by using sparse and sent a report. The assignment itself is
    correct. The annotation for sparse was wrong and hence the report.
    The first pointer is a "normal" pointer and points to the per-CPU memory
    area. That means that the __percpu annotation has to be moved.
    
    Move the __percpu annotation to pointer which points to the per-CPU
    area. This change affects only the sparse tool (and is ignored by the
    compiler).
    
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: f97f8f06a49fe ("smpboot: Provide infrastructure for percpu hotplug threads")
    Link: http://lkml.kernel.org/r/20190424085253.12178-1-bigeasy@linutronix.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 28d8827a09b0981194472cbd873d4fe0740267ed
Author: Kees Cook <keescook@chromium.org>
Date:   Tue Apr 23 11:38:27 2019 -0700

    x86/build: Move _etext to actual end of .text
    
    [ Upstream commit 392bef709659abea614abfe53cf228e7a59876a4 ]
    
    When building x86 with Clang LTO and CFI, CFI jump regions are
    automatically added to the end of the .text section late in linking. As a
    result, the _etext position was being labelled before the appended jump
    regions, causing confusion about where the boundaries of the executable
    region actually are in the running kernel, and broke at least the fault
    injection code. This moves the _etext mark to outside (and immediately
    after) the .text area, as it already the case on other architectures
    (e.g. arm64, arm).
    
    Reported-and-tested-by: Sami Tolvanen <samitolvanen@google.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20190423183827.GA4012@beast
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d3eb2caf6d41d48223889481df1d983b8f9ca384
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Apr 25 00:48:28 2019 +0800

    bcache: avoid clang -Wunintialized warning
    
    [ Upstream commit 78d4eb8ad9e1d413449d1b7a060f50b6efa81ebd ]
    
    clang has identified a code path in which it thinks a
    variable may be unused:
    
    drivers/md/bcache/alloc.c:333:4: error: variable 'bucket' is used uninitialized whenever 'if' condition is false
          [-Werror,-Wsometimes-uninitialized]
                            fifo_pop(&ca->free_inc, bucket);
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/md/bcache/util.h:219:27: note: expanded from macro 'fifo_pop'
     #define fifo_pop(fifo, i)       fifo_pop_front(fifo, (i))
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/md/bcache/util.h:189:6: note: expanded from macro 'fifo_pop_front'
            if (_r) {                                                       \
                ^~
    drivers/md/bcache/alloc.c:343:46: note: uninitialized use occurs here
                            allocator_wait(ca, bch_allocator_push(ca, bucket));
                                                                      ^~~~~~
    drivers/md/bcache/alloc.c:287:7: note: expanded from macro 'allocator_wait'
                    if (cond)                                               \
                        ^~~~
    drivers/md/bcache/alloc.c:333:4: note: remove the 'if' if its condition is always true
                            fifo_pop(&ca->free_inc, bucket);
                            ^
    drivers/md/bcache/util.h:219:27: note: expanded from macro 'fifo_pop'
     #define fifo_pop(fifo, i)       fifo_pop_front(fifo, (i))
                                    ^
    drivers/md/bcache/util.h:189:2: note: expanded from macro 'fifo_pop_front'
            if (_r) {                                                       \
            ^
    drivers/md/bcache/alloc.c:331:15: note: initialize the variable 'bucket' to silence this warning
                            long bucket;
                                       ^
    
    This cannot happen in practice because we only enter the loop
    if there is at least one element in the list.
    
    Slightly rearranging the code makes this clearer to both the
    reader and the compiler, which avoids the warning.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7bf3463abc95feda7892e12e5565c52744443862
Author: Coly Li <colyli@suse.de>
Date:   Thu Apr 25 00:48:34 2019 +0800

    bcache: add failure check to run_cache_set() for journal replay
    
    [ Upstream commit ce3e4cfb59cb382f8e5ce359238aa580d4ae7778 ]
    
    Currently run_cache_set() has no return value, if there is failure in
    bch_journal_replay(), the caller of run_cache_set() has no idea about
    such failure and just continue to execute following code after
    run_cache_set().  The internal failure is triggered inside
    bch_journal_replay() and being handled in async way. This behavior is
    inefficient, while failure handling inside bch_journal_replay(), cache
    register code is still running to start the cache set. Registering and
    unregistering code running as same time may introduce some rare race
    condition, and make the code to be more hard to be understood.
    
    This patch adds return value to run_cache_set(), and returns -EIO if
    bch_journal_rreplay() fails. Then caller of run_cache_set() may detect
    such failure and stop registering code flow immedidately inside
    register_cache_set().
    
    If journal replay fails, run_cache_set() can report error immediately
    to register_cache_set(). This patch makes the failure handling for
    bch_journal_replay() be in synchronized way, easier to understand and
    debug, and avoid poetential race condition for register-and-unregister
    in same time.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d4547049bb7f6f35844345574be22094a13d6c4a
Author: Tang Junhui <tang.junhui.linux@gmail.com>
Date:   Thu Apr 25 00:48:41 2019 +0800

    bcache: fix failure in journal relplay
    
    [ Upstream commit 631207314d88e9091be02fbdd1fdadb1ae2ed79a ]
    
    journal replay failed with messages:
    Sep 10 19:10:43 ceph kernel: bcache: error on
    bb379a64-e44e-4812-b91d-a5599871a3b1: bcache: journal entries
    2057493-2057567 missing! (replaying 2057493-2076601), disabling
    caching
    
    The reason is in journal_reclaim(), when discard is enabled, we send
    discard command and reclaim those journal buckets whose seq is old
    than the last_seq_now, but before we write a journal with last_seq_now,
    the machine is restarted, so the journal with the last_seq_now is not
    written to the journal bucket, and the last_seq_wrote in the newest
    journal is old than last_seq_now which we expect to be, so when we doing
    replay, journals from last_seq_wrote to last_seq_now are missing.
    
    It's hard to write a journal immediately after journal_reclaim(),
    and it harmless if those missed journal are caused by discarding
    since those journals are already wrote to btree node. So, if miss
    seqs are started from the beginning journal, we treat it as normal,
    and only print a message to show the miss journal, and point out
    it maybe caused by discarding.
    
    Patch v2 add a judgement condition to ignore the missed journal
    only when discard enabled as Coly suggested.
    
    (Coly Li: rebase the patch with other changes in bch_journal_replay())
    
    Signed-off-by: Tang Junhui <tang.junhui.linux@gmail.com>
    Tested-by: Dennis Schridde <devurandom@gmx.net>
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5789884b98ab648af6044ea720c677dc5b8dc2b7
Author: Coly Li <colyli@suse.de>
Date:   Thu Apr 25 00:48:36 2019 +0800

    bcache: return error immediately in bch_journal_replay()
    
    [ Upstream commit 68d10e6979a3b59e3cd2e90bfcafed79c4cf180a ]
    
    When failure happens inside bch_journal_replay(), calling
    cache_set_err_on() and handling the failure in async way is not a good
    idea. Because after bch_journal_replay() returns, registering code will
    continue to execute following steps, and unregistering code triggered
    by cache_set_err_on() is running in same time. First it is unnecessary
    to handle failure and unregister cache set in an async way, second there
    might be potential race condition to run register and unregister code
    for same cache set.
    
    So in this patch, if failure happens in bch_journal_replay(), we don't
    call cache_set_err_on(), and just print out the same error message to
    kernel message buffer, then return -EIO immediately caller. Then caller
    can detect such failure and handle it in synchrnozied way.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 50d25ca802f5a8827325750b05ac5f57cf75de91
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Tue Mar 12 03:05:02 2019 -0500

    net: cw1200: fix a NULL pointer dereference
    
    [ Upstream commit 0ed2a005347400500a39ea7c7318f1fea57fb3ca ]
    
    In case create_singlethread_workqueue fails, the fix free the
    hardware and returns NULL to avoid NULL pointer dereference.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit af2fb022b390da9b8e3e068bc176a1547584949f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Apr 4 11:44:23 2019 +0300

    mwifiex: prevent an array overflow
    
    [ Upstream commit b4c35c17227fe437ded17ce683a6927845f8c4a4 ]
    
    The "rate_index" is only used as an index into the phist_data->rx_rate[]
    array in the mwifiex_hist_data_set() function.  That array has
    MWIFIEX_MAX_AC_RX_RATES (74) elements and it's used to generate some
    debugfs information.  The "rate_index" variable comes from the network
    skb->data[] and it is a u8 so it's in the 0-255 range.  We need to cap
    it to prevent an array overflow.
    
    Fixes: cbf6e05527a7 ("mwifiex: add rx histogram statistics support")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b24af0936314bc0e0bd8aa6d45ea11df83db4d2
Author: Daniel Baluta <daniel.baluta@nxp.com>
Date:   Sun Apr 21 19:39:08 2019 +0000

    ASoC: fsl_sai: Update is_slave_mode with correct value
    
    [ Upstream commit ddb351145a967ee791a0fb0156852ec2fcb746ba ]
    
    is_slave_mode defaults to false because sai structure
    that contains it is kzalloc'ed.
    
    Anyhow, if we decide to set the following configuration
    SAI slave -> SAI master, is_slave_mode will remain set on true
    although SAI being master it should be set to false.
    
    Fix this by updating is_slave_mode for each call of
    fsl_sai_set_dai_fmt.
    
    Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
    Acked-by: Nicolin Chen <nicoleotsuka@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c1045350a6c4a3bfc7bac7e5cb52d83d76952f50
Author: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Date:   Tue Mar 26 09:27:37 2019 +0000

    mac80211/cfg80211: update bss channel on channel switch
    
    [ Upstream commit 5dc8cdce1d722c733f8c7af14c5fb595cfedbfa8 ]
    
    FullMAC STAs have no way to update bss channel after CSA channel switch
    completion. As a result, user-space tools may provide inconsistent
    channel info. For instance, consider the following two commands:
    $ sudo iw dev wlan0 link
    $ sudo iw dev wlan0 info
    The latter command gets channel info from the hardware, so most probably
    its output will be correct. However the former command gets channel info
    from scan cache, so its output will contain outdated channel info.
    In fact, current bss channel info will not be updated until the
    next [re-]connect.
    
    Note that mac80211 STAs have a workaround for this, but it requires
    access to internal cfg80211 data, see ieee80211_chswitch_work:
    
            /* XXX: shouldn't really modify cfg80211-owned data! */
            ifmgd->associated->channel = sdata->csa_chandef.chan;
    
    This patch suggests to convert mac80211 workaround into cfg80211 behavior
    and to update current bss channel in cfg80211_ch_switch_notify.
    
    Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a3c50ef9fd43fb73ddddc342582f17d419561ace
Author: Sugar Zhang <sugar.zhang@rock-chips.com>
Date:   Wed Apr 3 19:06:22 2019 +0800

    dmaengine: pl330: _stop: clear interrupt status
    
    [ Upstream commit 2da254cc7908105a60a6bb219d18e8dced03dcb9 ]
    
    This patch kill instructs the DMAC to immediately terminate
    execution of a thread. and then clear the interrupt status,
    at last, stop generating interrupts for DMA_SEV. to guarantee
    the next dma start is clean. otherwise, one interrupt maybe leave
    to next start and make some mistake.
    
    we can reporduce the problem as follows:
    
    DMASEV: modify the event-interrupt resource, and if the INTEN sets
    function as interrupt, the DMAC will set irq<event_num> HIGH to
    generate interrupt. write INTCLR to clear interrupt.
    
            DMA EXECUTING INSTRUCTS         DMA TERMINATE
                    |                               |
                    |                               |
                   ...                            _stop
                    |                               |
                    |                       spin_lock_irqsave
                 DMASEV                             |
                    |                               |
                    |                           mask INTEN
                    |                               |
                    |                            DMAKILL
                    |                               |
                    |                       spin_unlock_irqrestore
    
    in above case, a interrupt was left, and if we unmask INTEN, the DMAC
    will set irq<event_num> HIGH to generate interrupt.
    
    to fix this, do as follows:
    
            DMA EXECUTING INSTRUCTS         DMA TERMINATE
                    |                               |
                    |                               |
                   ...                            _stop
                    |                               |
                    |                       spin_lock_irqsave
                 DMASEV                             |
                    |                               |
                    |                            DMAKILL
                    |                               |
                    |                          clear INTCLR
                    |                           mask INTEN
                    |                               |
                    |                       spin_unlock_irqrestore
    
    Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 958848a1d97ca774070f9ed4755341930f70f714
Author: Mariusz Bialonczyk <manio@skyboo.net>
Date:   Thu Mar 21 11:52:55 2019 +0100

    w1: fix the resume command API
    
    [ Upstream commit 62909da8aca048ecf9fbd7e484e5100608f40a63 ]
    
    >From the DS2408 datasheet [1]:
    "Resume Command function checks the status of the RC flag and, if it is set,
     directly transfers control to the control functions, similar to a Skip ROM
     command. The only way to set the RC flag is through successfully executing
     the Match ROM, Search ROM, Conditional Search ROM, or Overdrive-Match ROM
     command"
    
    The function currently works perfectly fine in a multidrop bus, but when we
    have only a single slave connected, then only a Skip ROM is used and Match
    ROM is not called at all. This is leading to problems e.g. with single one
    DS2408 connected, as the Resume Command is not working properly and the
    device is responding with failing results after the Resume Command.
    
    This commit is fixing this by using a Skip ROM instead in those cases.
    The bandwidth / performance advantage is exactly the same.
    
    Refs:
    [1] https://datasheets.maximintegrated.com/en/ds/DS2408.pdf
    
    Signed-off-by: Mariusz Bialonczyk <manio@skyboo.net>
    Reviewed-by: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e4163587c4ee0a92e99ff014e5536b85b5c6e6d0
Author: Sven Van Asbroeck <thesven73@gmail.com>
Date:   Fri Apr 26 14:36:35 2019 -0400

    rtc: 88pm860x: prevent use-after-free on device remove
    
    [ Upstream commit f22b1ba15ee5785aa028384ebf77dd39e8e47b70 ]
    
    The device's remove() attempts to shut down the delayed_work scheduled
    on the kernel-global workqueue by calling flush_scheduled_work().
    
    Unfortunately, flush_scheduled_work() does not prevent the delayed_work
    from re-scheduling itself. The delayed_work might run after the device
    has been removed, and touch the already de-allocated info structure.
    This is a potential use-after-free.
    
    Fix by calling cancel_delayed_work_sync() during remove(): this ensures
    that the delayed work is properly cancelled, is no longer running, and
    is not able to re-schedule itself.
    
    This issue was detected with the help of Coccinelle.
    
    Signed-off-by: Sven Van Asbroeck <TheSven73@gmail.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a898d150956b18544af4be69c52e8e0323cd6365
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Apr 24 12:52:18 2019 +0300

    brcm80211: potential NULL dereference in brcmf_cfg80211_vndr_cmds_dcmd_handler()
    
    [ Upstream commit e025da3d7aa4770bb1d1b3b0aa7cc4da1744852d ]
    
    If "ret_len" is negative then it could lead to a NULL dereference.
    
    The "ret_len" value comes from nl80211_vendor_cmd(), if it's negative
    then we don't allocate the "dcmd_buf" buffer.  Then we pass "ret_len" to
    brcmf_fil_cmd_data_set() where it is cast to a very high u32 value.
    Most of the functions in that call tree check whether the buffer we pass
    is NULL but there are at least a couple places which don't such as
    brcmf_dbg_hex_dump() and brcmf_msgbuf_query_dcmd().  We memcpy() to and
    from the buffer so it would result in a NULL dereference.
    
    The fix is to change the types so that "ret_len" can't be negative.  (If
    we memcpy() zero bytes to NULL, that's a no-op and doesn't cause an
    issue).
    
    Fixes: 1bacb0487d0e ("brcmfmac: replace cfg80211 testmode with vendor command")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e1a879d9ab36ae6bc34737fe40ea6d2c74c71d0
Author: Flavio Suligoi <f.suligoi@asem.it>
Date:   Fri Apr 12 09:32:19 2019 +0200

    spi: pxa2xx: fix SCR (divisor) calculation
    
    [ Upstream commit 29f2133717c527f492933b0622a4aafe0b3cbe9e ]
    
    Calculate the divisor for the SCR (Serial Clock Rate), avoiding
    that the SSP transmission rate can be greater than the device rate.
    
    When the division between the SSP clock and the device rate generates
    a reminder, we have to increment by one the divisor.
    In this way the resulting SSP clock will never be greater than the
    device SPI max frequency.
    
    For example, with:
    
     - ssp_clk  = 50 MHz
     - dev freq = 15 MHz
    
    without this patch the SSP clock will be greater than 15 MHz:
    
     - 25 MHz for PXA25x_SSP and CE4100_SSP
     - 16,56 MHz for the others
    
    Instead, with this patch, we have in both case an SSP clock of 12.5MHz,
    so the max rate of the SPI device clock is respected.
    
    Signed-off-by: Flavio Suligoi <f.suligoi@asem.it>
    Reviewed-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Reviewed-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3d521a6fba456f1a2a2ca5668ce2e491f828a027
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Apr 16 15:12:23 2019 +0200

    ASoC: imx: fix fiq dependencies
    
    [ Upstream commit ea751227c813ab833609afecfeedaf0aa26f327e ]
    
    During randconfig builds, I occasionally run into an invalid configuration
    of the freescale FIQ sound support:
    
    WARNING: unmet direct dependencies detected for SND_SOC_IMX_PCM_FIQ
      Depends on [m]: SOUND [=y] && !UML && SND [=y] && SND_SOC [=y] && SND_IMX_SOC [=m]
      Selected by [y]:
      - SND_SOC_FSL_SPDIF [=y] && SOUND [=y] && !UML && SND [=y] && SND_SOC [=y] && SND_IMX_SOC [=m]!=n && (MXC_TZIC [=n] || MXC_AVIC [=y])
    
    sound/soc/fsl/imx-ssi.o: In function `imx_ssi_remove':
    imx-ssi.c:(.text+0x28): undefined reference to `imx_pcm_fiq_exit'
    sound/soc/fsl/imx-ssi.o: In function `imx_ssi_probe':
    imx-ssi.c:(.text+0xa64): undefined reference to `imx_pcm_fiq_init'
    
    The Kconfig warning is a result of the symbol being defined inside of
    the "if SND_IMX_SOC" block, and is otherwise harmless. The link error
    is more tricky and happens with SND_SOC_IMX_SSI=y, which may or may not
    imply FIQ support. However, if SND_SOC_FSL_SSI is set to =m at the same
    time, that selects SND_SOC_IMX_PCM_FIQ as a loadable module dependency,
    which then causes a link failure from imx-ssi.
    
    The solution here is to make SND_SOC_IMX_PCM_FIQ built-in whenever
    one of its potential users is built-in.
    
    Fixes: ff40260f79dc ("ASoC: fsl: refine DMA/FIQ dependencies")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit af283aba93bb4f0d0e3a1c2bee3ce9fa966dfc6c
Author: Bo YU <tsu.yubo@gmail.com>
Date:   Tue Oct 30 09:21:55 2018 -0400

    powerpc/boot: Fix missing check of lseek() return value
    
    [ Upstream commit 5d085ec04a000fefb5182d3b03ee46ca96d8389b ]
    
    This is detected by Coverity scan: CID: 1440481
    
    Signed-off-by: Bo YU <tsu.yubo@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dba032038c959b0321fd5d06c7e51f69a46e2db8
Author: Raul E Rangel <rrangel@chromium.org>
Date:   Mon Apr 29 11:32:39 2019 -0600

    mmc: core: Verify SD bus width
    
    [ Upstream commit 9e4be8d03f50d1b25c38e2b59e73b194c130df7d ]
    
    The SD Physical Layer Spec says the following: Since the SD Memory Card
    shall support at least the two bus modes 1-bit or 4-bit width, then any SD
    Card shall set at least bits 0 and 2 (SD_BUS_WIDTH="0101").
    
    This change verifies the card has specified a bus width.
    
    AMD SDHC Device 7806 can get into a bad state after a card disconnect
    where anything transferred via the DATA lines will always result in a
    zero filled buffer. Currently the driver will continue without error if
    the HC is in this condition. A block device will be created, but reading
    from it will result in a zero buffer. This makes it seem like the SD
    device has been erased, when in actuality the data is never getting
    copied from the DATA lines to the data buffer.
    
    SCR is the first command in the SD initialization sequence that uses the
    DATA lines. By checking that the response was invalid, we can abort
    mounting the card.
    
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Signed-off-by: Raul E Rangel <rrangel@chromium.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 333e8303d6e0228a931d7ccb7ac665765c1ac6e6
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Mon May 6 23:57:54 2019 +0800

    cxgb4: Fix error path in cxgb4_init_module
    
    [ Upstream commit a3147770bea76c8dbad73eca3a24c2118da5e719 ]
    
    BUG: unable to handle kernel paging request at ffffffffa016a270
    PGD 3270067 P4D 3270067 PUD 3271063 PMD 230bbd067 PTE 0
    Oops: 0000 [#1
    CPU: 0 PID: 6134 Comm: modprobe Not tainted 5.1.0+ #33
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
    RIP: 0010:atomic_notifier_chain_register+0x24/0x60
    Code: 1f 80 00 00 00 00 55 48 89 e5 41 54 49 89 f4 53 48 89 fb e8 ae b4 38 01 48 8b 53 38 48 8d 4b 38 48 85 d2 74 20 45 8b 44 24 10 <44> 3b 42 10 7e 08 eb 13 44 39 42 10 7c 0d 48 8d 4a 08 48 8b 52 08
    RSP: 0018:ffffc90000e2bc60 EFLAGS: 00010086
    RAX: 0000000000000292 RBX: ffffffff83467240 RCX: ffffffff83467278
    RDX: ffffffffa016a260 RSI: ffffffff83752140 RDI: ffffffff83467240
    RBP: ffffc90000e2bc70 R08: 0000000000000000 R09: 0000000000000001
    R10: 0000000000000000 R11: 00000000014fa61f R12: ffffffffa01c8260
    R13: ffff888231091e00 R14: 0000000000000000 R15: ffffc90000e2be78
    FS:  00007fbd8d7cd540(0000) GS:ffff888237a00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffa016a270 CR3: 000000022c7e3000 CR4: 00000000000006f0
    Call Trace:
     register_inet6addr_notifier+0x13/0x20
     cxgb4_init_module+0x6c/0x1000 [cxgb4
     ? 0xffffffffa01d7000
     do_one_initcall+0x6c/0x3cc
     ? do_init_module+0x22/0x1f1
     ? rcu_read_lock_sched_held+0x97/0xb0
     ? kmem_cache_alloc_trace+0x325/0x3b0
     do_init_module+0x5b/0x1f1
     load_module+0x1db1/0x2690
     ? m_show+0x1d0/0x1d0
     __do_sys_finit_module+0xc5/0xd0
     __x64_sys_finit_module+0x15/0x20
     do_syscall_64+0x6b/0x1d0
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    If pci_register_driver fails, register inet6addr_notifier is
    pointless. This patch fix the error path in cxgb4_init_module.
    
    Fixes: b5a02f503caa ("cxgb4 : Update ipv6 address handling api")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6948c6bc17d666663a84c124b3176039e64a58f4
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Wed Mar 27 17:09:17 2019 +0000

    gfs2: Fix lru_count going negative
    
    [ Upstream commit 7881ef3f33bb80f459ea6020d1e021fc524a6348 ]
    
    Under certain conditions, lru_count may drop below zero resulting in
    a large amount of log spam like this:
    
    vmscan: shrink_slab: gfs2_dump_glock+0x3b0/0x630 [gfs2] \
        negative objects to delete nr=-1
    
    This happens as follows:
    1) A glock is moved from lru_list to the dispose list and lru_count is
       decremented.
    2) The dispose function calls cond_resched() and drops the lru lock.
    3) Another thread takes the lru lock and tries to add the same glock to
       lru_list, checking if the glock is on an lru list.
    4) It is on a list (actually the dispose list) and so it avoids
       incrementing lru_count.
    5) The glock is moved to lru_list.
    5) The original thread doesn't dispose it because it has been re-added
       to the lru list but the lru_count has still decreased by one.
    
    Fix by checking if the LRU flag is set on the glock rather than checking
    if the glock is on some list and rearrange the code so that the LRU flag
    is added/removed precisely when the glock is added/removed from lru_list.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 635c71d112341d97a3bd494f98876ffe0726d6e4
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Sep 25 10:55:59 2018 -0300

    tools include: Adopt linux/bits.h
    
    commit ba4aa02b417f08a0bee5e7b8ed70cac788a7c854 upstream.
    
    So that we reduce the difference of tools/include/linux/bitops.h to the
    original kernel file, include/linux/bitops.h, trying to remove the need
    to define BITS_PER_LONG, to avoid clashes with asm/bitsperlong.h.
    
    And the things removed from tools/include/linux/bitops.h are really in
    linux/bits.h, so that we can have a copy and then
    tools/perf/check_headers.sh will tell us when new stuff gets added to
    linux/bits.h so that we can check if it is useful and if any adjustment
    needs to be done to the tools/{include,arch}/ copies.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-y1sqyydvfzo0bjjoj4zsl562@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    [bwh: Backported to 4.4 as dependency of "x86/msr-index: Cleanup bit defines":
     - Drop change in check-headers.sh
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed2faf464d9b8e14969f601210a952b696f62fca
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Apr 18 11:42:23 2017 -0300

    perf tools: No need to include bitops.h in util.h
    
    commit 6dcca6df4b73d409628c7b4464c63d4eb9d4d13a upstream.
    
    When we switched to the kernel's roundup_pow_of_two we forgot to remove
    this include from util.h, do it now.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: 91529834d1de ("perf evlist: Use roundup_pow_of_two")
    Link: http://lkml.kernel.org/n/tip-kfye5rxivib6155cltx0bw4h@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    [bwh: Backported to 4.4 as dependency of "tools include: Adopt linux/bits.h":
     - Include <linux/compiler.h> in util/string.c to avoid build regression
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1f254dc06f966cdff27b03ef9880775dd1068c2
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Mon Apr 8 11:45:29 2019 +0800

    at76c50x-usb: Don't register led_trigger if usb_register_driver failed
    
    commit 09ac2694b0475f96be895848687ebcbba97eeecf upstream.
    
    Syzkaller report this:
    
    [ 1213.468581] BUG: unable to handle kernel paging request at fffffbfff83bf338
    [ 1213.469530] #PF error: [normal kernel read fault]
    [ 1213.469530] PGD 237fe4067 P4D 237fe4067 PUD 237e60067 PMD 1c868b067 PTE 0
    [ 1213.473514] Oops: 0000 [#1] SMP KASAN PTI
    [ 1213.473514] CPU: 0 PID: 6321 Comm: syz-executor.0 Tainted: G         C        5.1.0-rc3+ #8
    [ 1213.473514] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    [ 1213.473514] RIP: 0010:strcmp+0x31/0xa0
    [ 1213.473514] Code: 00 00 00 00 fc ff df 55 53 48 83 ec 08 eb 0a 84 db 48 89 ef 74 5a 4c 89 e6 48 89 f8 48 89 fa 48 8d 6f 01 48 c1 e8 03 83 e2 07 <42> 0f b6 04 28 38 d0 7f 04 84 c0 75 50 48 89 f0 48 89 f2 0f b6 5d
    [ 1213.473514] RSP: 0018:ffff8881f2b7f950 EFLAGS: 00010246
    [ 1213.473514] RAX: 1ffffffff83bf338 RBX: ffff8881ea6f7240 RCX: ffffffff825350c6
    [ 1213.473514] RDX: 0000000000000000 RSI: ffffffffc1ee19c0 RDI: ffffffffc1df99c0
    [ 1213.473514] RBP: ffffffffc1df99c1 R08: 0000000000000001 R09: 0000000000000004
    [ 1213.473514] R10: 0000000000000000 R11: ffff8881de353f00 R12: ffff8881ee727900
    [ 1213.473514] R13: dffffc0000000000 R14: 0000000000000001 R15: ffffffffc1eeaaf0
    [ 1213.473514] FS:  00007fa66fa01700(0000) GS:ffff8881f7200000(0000) knlGS:0000000000000000
    [ 1213.473514] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1213.473514] CR2: fffffbfff83bf338 CR3: 00000001ebb9e005 CR4: 00000000007606f0
    [ 1213.473514] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 1213.473514] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 1213.473514] PKRU: 55555554
    [ 1213.473514] Call Trace:
    [ 1213.473514]  led_trigger_register+0x112/0x3f0
    [ 1213.473514]  led_trigger_register_simple+0x7a/0x110
    [ 1213.473514]  ? 0xffffffffc1c10000
    [ 1213.473514]  at76_mod_init+0x77/0x1000 [at76c50x_usb]
    [ 1213.473514]  do_one_initcall+0xbc/0x47d
    [ 1213.473514]  ? perf_trace_initcall_level+0x3a0/0x3a0
    [ 1213.473514]  ? kasan_unpoison_shadow+0x30/0x40
    [ 1213.473514]  ? kasan_unpoison_shadow+0x30/0x40
    [ 1213.473514]  do_init_module+0x1b5/0x547
    [ 1213.473514]  load_module+0x6405/0x8c10
    [ 1213.473514]  ? module_frob_arch_sections+0x20/0x20
    [ 1213.473514]  ? kernel_read_file+0x1e6/0x5d0
    [ 1213.473514]  ? find_held_lock+0x32/0x1c0
    [ 1213.473514]  ? cap_capable+0x1ae/0x210
    [ 1213.473514]  ? __do_sys_finit_module+0x162/0x190
    [ 1213.473514]  __do_sys_finit_module+0x162/0x190
    [ 1213.473514]  ? __ia32_sys_init_module+0xa0/0xa0
    [ 1213.473514]  ? __mutex_unlock_slowpath+0xdc/0x690
    [ 1213.473514]  ? wait_for_completion+0x370/0x370
    [ 1213.473514]  ? vfs_write+0x204/0x4a0
    [ 1213.473514]  ? do_syscall_64+0x18/0x450
    [ 1213.473514]  do_syscall_64+0x9f/0x450
    [ 1213.473514]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    [ 1213.473514] RIP: 0033:0x462e99
    [ 1213.473514] Code: f7 d8 64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48
    [ 1213.473514] RSP: 002b:00007fa66fa00c58 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    [ 1213.473514] RAX: ffffffffffffffda RBX: 000000000073bf00 RCX: 0000000000462e99
    [ 1213.473514] RDX: 0000000000000000 RSI: 0000000020000300 RDI: 0000000000000003
    [ 1213.473514] RBP: 00007fa66fa00c70 R08: 0000000000000000 R09: 0000000000000000
    [ 1213.473514] R10: 0000000000000000 R11: 0000000000000246 R12: 00007fa66fa016bc
    [ 1213.473514] R13: 00000000004bcefa R14: 00000000006f6fb0 R15: 0000000000000004
    
    If usb_register failed, no need to call led_trigger_register_simple.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: 1264b951463a ("at76c50x-usb: add driver")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5e4337e4a9c816bbceda5b25af11ecb72ef494f
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Wed Mar 6 19:56:58 2019 +0800

    ssb: Fix possible NULL pointer dereference in ssb_host_pcmcia_exit
    
    commit b2c01aab9646ed8ffb7c549afe55d5349c482425 upstream.
    
    Syzkaller report this:
    
    kasan: GPF could be caused by NULL-ptr deref or user memory access
    general protection fault: 0000 [#1] SMP KASAN PTI
    CPU: 0 PID: 4492 Comm: syz-executor.0 Not tainted 5.0.0-rc7+ #45
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    RIP: 0010:sysfs_remove_file_ns+0x27/0x70 fs/sysfs/file.c:468
    Code: 00 00 00 41 54 55 48 89 fd 53 49 89 d4 48 89 f3 e8 ee 76 9c ff 48 8d 7d 30 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 75 2d 48 89 da 48 b8 00 00 00 00 00 fc ff df 48 8b 6d
    RSP: 0018:ffff8881e9d9fc00 EFLAGS: 00010206
    RAX: dffffc0000000000 RBX: ffffffff900367e0 RCX: ffffffff81a95952
    RDX: 0000000000000006 RSI: ffffc90001405000 RDI: 0000000000000030
    RBP: 0000000000000000 R08: fffffbfff1fa22ed R09: fffffbfff1fa22ed
    R10: 0000000000000001 R11: fffffbfff1fa22ec R12: 0000000000000000
    R13: ffffffffc1abdac0 R14: 1ffff1103d3b3f8b R15: 0000000000000000
    FS:  00007fe409dc1700(0000) GS:ffff8881f1200000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b2d721000 CR3: 00000001e98b6005 CR4: 00000000007606f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
     sysfs_remove_file include/linux/sysfs.h:519 [inline]
     driver_remove_file+0x40/0x50 drivers/base/driver.c:122
     pcmcia_remove_newid_file drivers/pcmcia/ds.c:163 [inline]
     pcmcia_unregister_driver+0x7d/0x2b0 drivers/pcmcia/ds.c:209
     ssb_modexit+0xa/0x1b [ssb]
     __do_sys_delete_module kernel/module.c:1018 [inline]
     __se_sys_delete_module kernel/module.c:961 [inline]
     __x64_sys_delete_module+0x3dc/0x5e0 kernel/module.c:961
     do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x462e99
    Code: f7 d8 64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007fe409dc0c58 EFLAGS: 00000246 ORIG_RAX: 00000000000000b0
    RAX: ffffffffffffffda RBX: 000000000073bf00 RCX: 0000000000462e99
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00000000200000c0
    RBP: 0000000000000002 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007fe409dc16bc
    R13: 00000000004bccaa R14: 00000000006f6bc8 R15: 00000000ffffffff
    Modules linked in: ssb(-) 3c59x nvme_core macvlan tap pata_hpt3x3 rt2x00pci null_blk tsc40 pm_notifier_error_inject notifier_error_inject mdio cdc_wdm nf_reject_ipv4 ath9k_common ath9k_hw ath pppox ppp_generic slhc ehci_platform wl12xx wlcore tps6507x_ts ioc4 nf_synproxy_core ide_gd_mod ax25 can_dev iwlwifi can_raw atm tm2_touchkey can_gw can sundance adp5588_keys rt2800mmio rt2800lib rt2x00mmio rt2x00lib eeprom_93cx6 pn533 lru_cache elants_i2c ip_set nfnetlink gameport tipc hampshire nhc_ipv6 nhc_hop nhc_udp nhc_fragment nhc_routing nhc_mobility nhc_dest 6lowpan silead brcmutil nfc mt76_usb mt76 mac80211 iptable_security iptable_raw iptable_mangle iptable_nat nf_nat_ipv4 nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 iptable_filter bpfilter ip6_vti ip_gre sit hsr veth vxcan batman_adv cfg80211 rfkill chnl_net caif nlmon vcan bridge stp llc ip6_gre ip6_tunnel tunnel6 tun joydev mousedev serio_raw ide_pci_generic piix floppy ide_core sch_fq_codel ip_tables x_tables ipv6
     [last unloaded: 3c59x]
    Dumping ftrace buffer:
       (ftrace buffer empty)
    ---[ end trace 3913cbf8011e1c05 ]---
    
    In ssb_modinit, it does not fail SSB init when ssb_host_pcmcia_init failed,
    however in ssb_modexit, ssb_host_pcmcia_exit calls pcmcia_unregister_driver
    unconditionally, which may tigger a NULL pointer dereference issue as above.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: 399500da18f7 ("ssb: pick PCMCIA host code support from b43 driver")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e39af96f4dc1e5030997711ed6e942ddc372b087
Author: Alexander Potapenko <glider@google.com>
Date:   Thu Apr 4 10:56:46 2019 -0400

    media: vivid: use vfree() instead of kfree() for dev->bitmap_cap
    
    commit dad7e270ba712ba1c99cd2d91018af6044447a06 upstream.
    
    syzkaller reported crashes on kfree() called from
    vivid_vid_cap_s_selection(). This looks like a simple typo, as
    dev->bitmap_cap is allocated with vzalloc() throughout the file.
    
    Fixes: ef834f7836ec0 ("[media] vivid: add the video capture and output
    parts")
    
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Reported-by: Syzbot <syzbot+6c0effb5877f6b0344e2@syzkaller.appspotmail.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a04e71a0dbc62083bd31ae4d252d2c07a0035e4a
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Wed Mar 6 07:45:08 2019 -0500

    media: cpia2: Fix use-after-free in cpia2_exit
    
    commit dea37a97265588da604c6ba80160a287b72c7bfd upstream.
    
    Syzkaller report this:
    
    BUG: KASAN: use-after-free in sysfs_remove_file_ns+0x5f/0x70 fs/sysfs/file.c:468
    Read of size 8 at addr ffff8881f59a6b70 by task syz-executor.0/8363
    
    CPU: 0 PID: 8363 Comm: syz-executor.0 Not tainted 5.0.0-rc8+ #3
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xfa/0x1ce lib/dump_stack.c:113
     print_address_description+0x65/0x270 mm/kasan/report.c:187
     kasan_report+0x149/0x18d mm/kasan/report.c:317
     sysfs_remove_file_ns+0x5f/0x70 fs/sysfs/file.c:468
     sysfs_remove_file include/linux/sysfs.h:519 [inline]
     driver_remove_file+0x40/0x50 drivers/base/driver.c:122
     usb_remove_newid_files drivers/usb/core/driver.c:212 [inline]
     usb_deregister+0x12a/0x3b0 drivers/usb/core/driver.c:1005
     cpia2_exit+0xa/0x16 [cpia2]
     __do_sys_delete_module kernel/module.c:1018 [inline]
     __se_sys_delete_module kernel/module.c:961 [inline]
     __x64_sys_delete_module+0x3dc/0x5e0 kernel/module.c:961
     do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x462e99
    Code: f7 d8 64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f86f3754c58 EFLAGS: 00000246 ORIG_RAX: 00000000000000b0
    RAX: ffffffffffffffda RBX: 000000000073bf00 RCX: 0000000000462e99
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000020000300
    RBP: 0000000000000002 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f86f37556bc
    R13: 00000000004bcca9 R14: 00000000006f6b48 R15: 00000000ffffffff
    
    Allocated by task 8363:
     set_track mm/kasan/common.c:85 [inline]
     __kasan_kmalloc.constprop.3+0xa0/0xd0 mm/kasan/common.c:495
     kmalloc include/linux/slab.h:545 [inline]
     kzalloc include/linux/slab.h:740 [inline]
     bus_add_driver+0xc0/0x610 drivers/base/bus.c:651
     driver_register+0x1bb/0x3f0 drivers/base/driver.c:170
     usb_register_driver+0x267/0x520 drivers/usb/core/driver.c:965
     0xffffffffc1b4817c
     do_one_initcall+0xfa/0x5ca init/main.c:887
     do_init_module+0x204/0x5f6 kernel/module.c:3460
     load_module+0x66b2/0x8570 kernel/module.c:3808
     __do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
     do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Freed by task 8363:
     set_track mm/kasan/common.c:85 [inline]
     __kasan_slab_free+0x130/0x180 mm/kasan/common.c:457
     slab_free_hook mm/slub.c:1430 [inline]
     slab_free_freelist_hook mm/slub.c:1457 [inline]
     slab_free mm/slub.c:3005 [inline]
     kfree+0xe1/0x270 mm/slub.c:3957
     kobject_cleanup lib/kobject.c:662 [inline]
     kobject_release lib/kobject.c:691 [inline]
     kref_put include/linux/kref.h:67 [inline]
     kobject_put+0x146/0x240 lib/kobject.c:708
     bus_remove_driver+0x10e/0x220 drivers/base/bus.c:732
     driver_unregister+0x6c/0xa0 drivers/base/driver.c:197
     usb_register_driver+0x341/0x520 drivers/usb/core/driver.c:980
     0xffffffffc1b4817c
     do_one_initcall+0xfa/0x5ca init/main.c:887
     do_init_module+0x204/0x5f6 kernel/module.c:3460
     load_module+0x66b2/0x8570 kernel/module.c:3808
     __do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
     do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    The buggy address belongs to the object at ffff8881f59a6b40
     which belongs to the cache kmalloc-256 of size 256
    The buggy address is located 48 bytes inside of
     256-byte region [ffff8881f59a6b40, ffff8881f59a6c40)
    The buggy address belongs to the page:
    page:ffffea0007d66980 count:1 mapcount:0 mapping:ffff8881f6c02e00 index:0x0
    flags: 0x2fffc0000000200(slab)
    raw: 02fffc0000000200 dead000000000100 dead000000000200 ffff8881f6c02e00
    raw: 0000000000000000 00000000800c000c 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8881f59a6a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff8881f59a6a80: 00 00 00 00 00 00 00 00 00 00 fc fc fc fc fc fc
    >ffff8881f59a6b00: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
                                                                 ^
     ffff8881f59a6b80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8881f59a6c00: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
    
    cpia2_init does not check return value of cpia2_init, if it failed
    in usb_register_driver, there is already cleanup using driver_unregister.
    No need call cpia2_usb_cleanup on module exit.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28eeeb86046e4a0e99881b15372ac8c0a0294698
Author: Jiufei Xue <jiufei.xue@linux.alibaba.com>
Date:   Thu Apr 11 19:25:12 2019 +0200

    fbdev: fix WARNING in __alloc_pages_nodemask bug
    
    commit 8c40292be9169a9cbe19aadd1a6fc60cbd1af82f upstream.
    
    Syzkaller hit 'WARNING in __alloc_pages_nodemask' bug.
    
    WARNING: CPU: 1 PID: 1473 at mm/page_alloc.c:4377
    __alloc_pages_nodemask+0x4da/0x2130
    Kernel panic - not syncing: panic_on_warn set ...
    
    Call Trace:
     alloc_pages_current+0xb1/0x1e0
     kmalloc_order+0x1f/0x60
     kmalloc_order_trace+0x1d/0x120
     fb_alloc_cmap_gfp+0x85/0x2b0
     fb_set_user_cmap+0xff/0x370
     do_fb_ioctl+0x949/0xa20
     fb_ioctl+0xdd/0x120
     do_vfs_ioctl+0x186/0x1070
     ksys_ioctl+0x89/0xa0
     __x64_sys_ioctl+0x74/0xb0
     do_syscall_64+0xc8/0x550
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    This is a warning about order >= MAX_ORDER and the order is from
    userspace ioctl. Add flag __NOWARN to silence this warning.
    
    Signed-off-by: Jiufei Xue <jiufei.xue@linux.alibaba.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf8474c648465968e0c3cf1c2ca21dba8c7750dd
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Mon May 13 17:19:41 2019 -0700

    hugetlb: use same fault hash key for shared and private mappings
    
    commit 1b426bac66e6cc83c9f2d92b96e4e72acf43419a upstream.
    
    hugetlb uses a fault mutex hash table to prevent page faults of the
    same pages concurrently.  The key for shared and private mappings is
    different.  Shared keys off address_space and file index.  Private keys
    off mm and virtual address.  Consider a private mappings of a populated
    hugetlbfs file.  A fault will map the page from the file and if needed
    do a COW to map a writable page.
    
    Hugetlbfs hole punch uses the fault mutex to prevent mappings of file
    pages.  It uses the address_space file index key.  However, private
    mappings will use a different key and could race with this code to map
    the file page.  This causes problems (BUG) for the page cache remove
    code as it expects the page to be unmapped.  A sample stack is:
    
    page dumped because: VM_BUG_ON_PAGE(page_mapped(page))
    kernel BUG at mm/filemap.c:169!
    ...
    RIP: 0010:unaccount_page_cache_page+0x1b8/0x200
    ...
    Call Trace:
    __delete_from_page_cache+0x39/0x220
    delete_from_page_cache+0x45/0x70
    remove_inode_hugepages+0x13c/0x380
    ? __add_to_page_cache_locked+0x162/0x380
    hugetlbfs_fallocate+0x403/0x540
    ? _cond_resched+0x15/0x30
    ? __inode_security_revalidate+0x5d/0x70
    ? selinux_file_permission+0x100/0x130
    vfs_fallocate+0x13f/0x270
    ksys_fallocate+0x3c/0x80
    __x64_sys_fallocate+0x1a/0x20
    do_syscall_64+0x5b/0x180
    entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    There seems to be another potential COW issue/race with this approach
    of different private and shared keys as noted in commit 8382d914ebf7
    ("mm, hugetlb: improve page-fault scalability").
    
    Since every hugetlb mapping (even anon and private) is actually a file
    mapping, just use the address_space index key for all mappings.  This
    results in potentially more hash collisions.  However, this should not
    be the common case.
    
    Link: http://lkml.kernel.org/r/20190328234704.27083-3-mike.kravetz@oracle.com
    Link: http://lkml.kernel.org/r/20190412165235.t4sscoujczfhuiyt@linux-r8p5
    Fixes: b5cec28d36f5 ("hugetlbfs: truncate_hugepages() takes a range of pages")
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Reviewed-by: Davidlohr Bueso <dbueso@suse.de>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: "Kirill A . Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bc15390790053b64c46dea03c39a1f7728110b7
Author: Shile Zhang <shile.zhang@linux.alibaba.com>
Date:   Mon Apr 1 17:47:00 2019 +0200

    fbdev: fix divide error in fb_var_to_videomode
    
    commit cf84807f6dd0be5214378e66460cfc9187f532f9 upstream.
    
    To fix following divide-by-zero error found by Syzkaller:
    
      divide error: 0000 [#1] SMP PTI
      CPU: 7 PID: 8447 Comm: test Kdump: loaded Not tainted 4.19.24-8.al7.x86_64 #1
      Hardware name: Alibaba Cloud Alibaba Cloud ECS, BIOS rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org 04/01/2014
      RIP: 0010:fb_var_to_videomode+0xae/0xc0
      Code: 04 44 03 46 78 03 4e 7c 44 03 46 68 03 4e 70 89 ce d1 ee 69 c0 e8 03 00 00 f6 c2 01 0f 45 ce 83 e2 02 8d 34 09 0f 45 ce 31 d2 <41> f7 f0 31 d2 f7 f1 89 47 08 f3 c3 66 0f 1f 44 00 00 0f 1f 44 00
      RSP: 0018:ffffb7e189347bf0 EFLAGS: 00010246
      RAX: 00000000e1692410 RBX: ffffb7e189347d60 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffb7e189347c10
      RBP: ffff99972a091c00 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000100
      R13: 0000000000010000 R14: 00007ffd66baf6d0 R15: 0000000000000000
      FS:  00007f2054d11740(0000) GS:ffff99972fbc0000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f205481fd20 CR3: 00000004288a0001 CR4: 00000000001606a0
      Call Trace:
       fb_set_var+0x257/0x390
       ? lookup_fast+0xbb/0x2b0
       ? fb_open+0xc0/0x140
       ? chrdev_open+0xa6/0x1a0
       do_fb_ioctl+0x445/0x5a0
       do_vfs_ioctl+0x92/0x5f0
       ? __alloc_fd+0x3d/0x160
       ksys_ioctl+0x60/0x90
       __x64_sys_ioctl+0x16/0x20
       do_syscall_64+0x5b/0x190
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f20548258d7
      Code: 44 00 00 48 8b 05 b9 15 2d 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 89 15 2d 00 f7 d8 64 89 01 48
    
    It can be triggered easily with following test code:
    
      #include <linux/fb.h>
      #include <fcntl.h>
      #include <sys/ioctl.h>
      int main(void)
      {
              struct fb_var_screeninfo var = {.activate = 0x100, .pixclock = 60};
              int fd = open("/dev/fb0", O_RDWR);
              if (fd < 0)
                      return 1;
    
              if (ioctl(fd, FBIOPUT_VSCREENINFO, &var))
                      return 1;
    
              return 0;
      }
    
    Signed-off-by: Shile Zhang <shile.zhang@linux.alibaba.com>
    Cc: Fredrik Noring <noring@nocrew.org>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c9a20390c010548901d3f2469a9699c7e39b11c
Author: Tobin C. Harding <tobin@kernel.org>
Date:   Mon May 13 13:39:12 2019 +1000

    btrfs: sysfs: don't leak memory when failing add fsid
    
    commit e32773357d5cc271b1d23550b3ed026eb5c2a468 upstream.
    
    A failed call to kobject_init_and_add() must be followed by a call to
    kobject_put().  Currently in the error path when adding fs_devices we
    are missing this call.  This could be fixed by calling
    btrfs_sysfs_remove_fsid() if btrfs_sysfs_add_fsid() returns an error or
    by adding a call to kobject_put() directly in btrfs_sysfs_add_fsid().
    Here we choose the second option because it prevents the slightly
    unusual error path handling requirements of kobject from leaking out
    into btrfs functions.
    
    Add a call to kobject_put() in the error path of kobject_add_and_init().
    This causes the release method to be called if kobject_init_and_add()
    fails.  open_tree() is the function that calls btrfs_sysfs_add_fsid()
    and the error code in this function is already written with the
    assumption that the release method is called during the error path of
    open_tree() (as seen by the call to btrfs_sysfs_remove_fsid() under the
    fail_fsdev_sysfs label).
    
    Cc: stable@vger.kernel.org # v4.4+
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Tobin C. Harding <tobin@kernel.org>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0fa88718cdc50d42a6f9191792d8eaede77bd293
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon May 6 16:44:02 2019 +0100

    Btrfs: fix race between ranged fsync and writeback of adjacent ranges
    
    commit 0c713cbab6200b0ab6473b50435e450a6e1de85d upstream.
    
    When we do a full fsync (the bit BTRFS_INODE_NEEDS_FULL_SYNC is set in the
    inode) that happens to be ranged, which happens during a msync() or writes
    for files opened with O_SYNC for example, we can end up with a corrupt log,
    due to different file extent items representing ranges that overlap with
    each other, or hit some assertion failures.
    
    When doing a ranged fsync we only flush delalloc and wait for ordered
    exents within that range. If while we are logging items from our inode
    ordered extents for adjacent ranges complete, we end up in a race that can
    make us insert the file extent items that overlap with others we logged
    previously and the assertion failures.
    
    For example, if tree-log.c:copy_items() receives a leaf that has the
    following file extents items, all with a length of 4K and therefore there
    is an implicit hole in the range 68K to 72K - 1:
    
      (257 EXTENT_ITEM 64K), (257 EXTENT_ITEM 72K), (257 EXTENT_ITEM 76K), ...
    
    It copies them to the log tree. However due to the need to detect implicit
    holes, it may release the path, in order to look at the previous leaf to
    detect an implicit hole, and then later it will search again in the tree
    for the first file extent item key, with the goal of locking again the
    leaf (which might have changed due to concurrent changes to other inodes).
    
    However when it locks again the leaf containing the first key, the key
    corresponding to the extent at offset 72K may not be there anymore since
    there is an ordered extent for that range that is finishing (that is,
    somewhere in the middle of btrfs_finish_ordered_io()), and it just
    removed the file extent item but has not yet replaced it with a new file
    extent item, so the part of copy_items() that does hole detection will
    decide that there is a hole in the range starting from 68K to 76K - 1,
    and therefore insert a file extent item to represent that hole, having
    a key offset of 68K. After that we now have a log tree with 2 different
    extent items that have overlapping ranges:
    
     1) The file extent item copied before copy_items() released the path,
        which has a key offset of 72K and a length of 4K, representing the
        file range 72K to 76K - 1.
    
     2) And a file extent item representing a hole that has a key offset of
        68K and a length of 8K, representing the range 68K to 76K - 1. This
        item was inserted after releasing the path, and overlaps with the
        extent item inserted before.
    
    The overlapping extent items can cause all sorts of unpredictable and
    incorrect behaviour, either when replayed or if a fast (non full) fsync
    happens later, which can trigger a BUG_ON() when calling
    btrfs_set_item_key_safe() through __btrfs_drop_extents(), producing a
    trace like the following:
    
      [61666.783269] ------------[ cut here ]------------
      [61666.783943] kernel BUG at fs/btrfs/ctree.c:3182!
      [61666.784644] invalid opcode: 0000 [#1] PREEMPT SMP
      (...)
      [61666.786253] task: ffff880117b88c40 task.stack: ffffc90008168000
      [61666.786253] RIP: 0010:btrfs_set_item_key_safe+0x7c/0xd2 [btrfs]
      [61666.786253] RSP: 0018:ffffc9000816b958 EFLAGS: 00010246
      [61666.786253] RAX: 0000000000000000 RBX: 000000000000000f RCX: 0000000000030000
      [61666.786253] RDX: 0000000000000000 RSI: ffffc9000816ba4f RDI: ffffc9000816b937
      [61666.786253] RBP: ffffc9000816b998 R08: ffff88011dae2428 R09: 0000000000001000
      [61666.786253] R10: 0000160000000000 R11: 6db6db6db6db6db7 R12: ffff88011dae2418
      [61666.786253] R13: ffffc9000816ba4f R14: ffff8801e10c4118 R15: ffff8801e715c000
      [61666.786253] FS:  00007f6060a18700(0000) GS:ffff88023f5c0000(0000) knlGS:0000000000000000
      [61666.786253] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [61666.786253] CR2: 00007f6060a28000 CR3: 0000000213e69000 CR4: 00000000000006e0
      [61666.786253] Call Trace:
      [61666.786253]  __btrfs_drop_extents+0x5e3/0xaad [btrfs]
      [61666.786253]  ? time_hardirqs_on+0x9/0x14
      [61666.786253]  btrfs_log_changed_extents+0x294/0x4e0 [btrfs]
      [61666.786253]  ? release_extent_buffer+0x38/0xb4 [btrfs]
      [61666.786253]  btrfs_log_inode+0xb6e/0xcdc [btrfs]
      [61666.786253]  ? lock_acquire+0x131/0x1c5
      [61666.786253]  ? btrfs_log_inode_parent+0xee/0x659 [btrfs]
      [61666.786253]  ? arch_local_irq_save+0x9/0xc
      [61666.786253]  ? btrfs_log_inode_parent+0x1f5/0x659 [btrfs]
      [61666.786253]  btrfs_log_inode_parent+0x223/0x659 [btrfs]
      [61666.786253]  ? arch_local_irq_save+0x9/0xc
      [61666.786253]  ? lockref_get_not_zero+0x2c/0x34
      [61666.786253]  ? rcu_read_unlock+0x3e/0x5d
      [61666.786253]  btrfs_log_dentry_safe+0x60/0x7b [btrfs]
      [61666.786253]  btrfs_sync_file+0x317/0x42c [btrfs]
      [61666.786253]  vfs_fsync_range+0x8c/0x9e
      [61666.786253]  SyS_msync+0x13c/0x1c9
      [61666.786253]  entry_SYSCALL_64_fastpath+0x18/0xad
    
    A sample of a corrupt log tree leaf with overlapping extents I got from
    running btrfs/072:
    
          item 14 key (295 108 200704) itemoff 2599 itemsize 53
                  extent data disk bytenr 0 nr 0
                  extent data offset 0 nr 458752 ram 458752
          item 15 key (295 108 659456) itemoff 2546 itemsize 53
                  extent data disk bytenr 4343541760 nr 770048
                  extent data offset 606208 nr 163840 ram 770048
          item 16 key (295 108 663552) itemoff 2493 itemsize 53
                  extent data disk bytenr 4343541760 nr 770048
                  extent data offset 610304 nr 155648 ram 770048
          item 17 key (295 108 819200) itemoff 2440 itemsize 53
                  extent data disk bytenr 4334788608 nr 4096
                  extent data offset 0 nr 4096 ram 4096
    
    The file extent item at offset 659456 (item 15) ends at offset 823296
    (659456 + 163840) while the next file extent item (item 16) starts at
    offset 663552.
    
    Another different problem that the race can trigger is a failure in the
    assertions at tree-log.c:copy_items(), which expect that the first file
    extent item key we found before releasing the path exists after we have
    released path and that the last key we found before releasing the path
    also exists after releasing the path:
    
      $ cat -n fs/btrfs/tree-log.c
      4080          if (need_find_last_extent) {
      4081                  /* btrfs_prev_leaf could return 1 without releasing the path */
      4082                  btrfs_release_path(src_path);
      4083                  ret = btrfs_search_slot(NULL, inode->root, &first_key,
      4084                                  src_path, 0, 0);
      4085                  if (ret < 0)
      4086                          return ret;
      4087                  ASSERT(ret == 0);
      (...)
      4103                  if (i >= btrfs_header_nritems(src_path->nodes[0])) {
      4104                          ret = btrfs_next_leaf(inode->root, src_path);
      4105                          if (ret < 0)
      4106                                  return ret;
      4107                          ASSERT(ret == 0);
      4108                          src = src_path->nodes[0];
      4109                          i = 0;
      4110                          need_find_last_extent = true;
      4111                  }
      (...)
    
    The second assertion implicitly expects that the last key before the path
    release still exists, because the surrounding while loop only stops after
    we have found that key. When this assertion fails it produces a stack like
    this:
    
      [139590.037075] assertion failed: ret == 0, file: fs/btrfs/tree-log.c, line: 4107
      [139590.037406] ------------[ cut here ]------------
      [139590.037707] kernel BUG at fs/btrfs/ctree.h:3546!
      [139590.038034] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC PTI
      [139590.038340] CPU: 1 PID: 31841 Comm: fsstress Tainted: G        W         5.0.0-btrfs-next-46 #1
      (...)
      [139590.039354] RIP: 0010:assfail.constprop.24+0x18/0x1a [btrfs]
      (...)
      [139590.040397] RSP: 0018:ffffa27f48f2b9b0 EFLAGS: 00010282
      [139590.040730] RAX: 0000000000000041 RBX: ffff897c635d92c8 RCX: 0000000000000000
      [139590.041105] RDX: 0000000000000000 RSI: ffff897d36a96868 RDI: ffff897d36a96868
      [139590.041470] RBP: ffff897d1b9a0708 R08: 0000000000000000 R09: 0000000000000000
      [139590.041815] R10: 0000000000000008 R11: 0000000000000000 R12: 0000000000000013
      [139590.042159] R13: 0000000000000227 R14: ffff897cffcbba88 R15: 0000000000000001
      [139590.042501] FS:  00007f2efc8dee80(0000) GS:ffff897d36a80000(0000) knlGS:0000000000000000
      [139590.042847] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [139590.043199] CR2: 00007f8c064935e0 CR3: 0000000232252002 CR4: 00000000003606e0
      [139590.043547] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [139590.043899] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [139590.044250] Call Trace:
      [139590.044631]  copy_items+0xa3f/0x1000 [btrfs]
      [139590.045009]  ? generic_bin_search.constprop.32+0x61/0x200 [btrfs]
      [139590.045396]  btrfs_log_inode+0x7b3/0xd70 [btrfs]
      [139590.045773]  btrfs_log_inode_parent+0x2b3/0xce0 [btrfs]
      [139590.046143]  ? do_raw_spin_unlock+0x49/0xc0
      [139590.046510]  btrfs_log_dentry_safe+0x4a/0x70 [btrfs]
      [139590.046872]  btrfs_sync_file+0x3b6/0x440 [btrfs]
      [139590.047243]  btrfs_file_write_iter+0x45b/0x5c0 [btrfs]
      [139590.047592]  __vfs_write+0x129/0x1c0
      [139590.047932]  vfs_write+0xc2/0x1b0
      [139590.048270]  ksys_write+0x55/0xc0
      [139590.048608]  do_syscall_64+0x60/0x1b0
      [139590.048946]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
      [139590.049287] RIP: 0033:0x7f2efc4be190
      (...)
      [139590.050342] RSP: 002b:00007ffe743243a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
      [139590.050701] RAX: ffffffffffffffda RBX: 0000000000008d58 RCX: 00007f2efc4be190
      [139590.051067] RDX: 0000000000008d58 RSI: 00005567eca0f370 RDI: 0000000000000003
      [139590.051459] RBP: 0000000000000024 R08: 0000000000000003 R09: 0000000000008d60
      [139590.051863] R10: 0000000000000078 R11: 0000000000000246 R12: 0000000000000003
      [139590.052252] R13: 00000000003d3507 R14: 00005567eca0f370 R15: 0000000000000000
      (...)
      [139590.055128] ---[ end trace 193f35d0215cdeeb ]---
    
    So fix this race between a full ranged fsync and writeback of adjacent
    ranges by flushing all delalloc and waiting for all ordered extents to
    complete before logging the inode. This is the simplest way to solve the
    problem because currently the full fsync path does not deal with ranges
    at all (it assumes a full range from 0 to LLONG_MAX) and it always needs
    to look at adjacent ranges for hole detection. For use cases of ranged
    fsyncs this can make a few fsyncs slower but on the other hand it can
    make some following fsyncs to other ranges do less work or no need to do
    anything at all. A full fsync is rare anyway and happens only once after
    loading/creating an inode and once after less common operations such as a
    shrinking truncate.
    
    This is an issue that exists for a long time, and was often triggered by
    generic/127, because it does mmap'ed writes and msync (which triggers a
    ranged fsync). Adding support for the tree checker to detect overlapping
    extents (next patch in the series) and trigger a WARN() when such cases
    are found, and then calling btrfs_check_leaf_full() at the end of
    btrfs_insert_file_extent() made the issue much easier to detect. Running
    btrfs/072 with that change to the tree checker and making fsstress open
    files always with O_SYNC made it much easier to trigger the issue (as
    triggering it with generic/127 is very rare).
    
    CC: stable@vger.kernel.org # 3.16+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f5ac0bd2ef747c7f370f79dd9fe55a44cfd924e
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Fri May 17 19:18:43 2019 +0100

    gfs2: Fix sign extension bug in gfs2_update_stats
    
    commit 5a5ec83d6ac974b12085cd99b196795f14079037 upstream.
    
    Commit 4d207133e9c3 changed the types of the statistic values in struct
    gfs2_lkstats from s64 to u64.  Because of that, what should be a signed
    value in gfs2_update_stats turned into an unsigned value.  When shifted
    right, we end up with a large positive value instead of a small negative
    value, which results in an incorrect variance estimate.
    
    Fixes: 4d207133e9c3 ("gfs2: Make statistics unsigned, suitable for use with do_div()")
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Cc: stable@vger.kernel.org # v4.4+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8aae5e98fec2c403a03cd66e7c66006eac1fb649
Author: Daniel Axtens <dja@axtens.net>
Date:   Wed May 15 20:24:50 2019 +1000

    crypto: vmx - CTR: always increment IV as quadword
    
    commit 009b30ac7444c17fae34c4f435ebce8e8e2b3250 upstream.
    
    The kernel self-tests picked up an issue with CTR mode:
    alg: skcipher: p8_aes_ctr encryption test failed (wrong result) on test vector 3, cfg="uneven misaligned splits, may sleep"
    
    Test vector 3 has an IV of FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD, so
    after 3 increments it should wrap around to 0.
    
    In the aesp8-ppc code from OpenSSL, there are two paths that
    increment IVs: the bulk (8 at a time) path, and the individual
    path which is used when there are fewer than 8 AES blocks to
    process.
    
    In the bulk path, the IV is incremented with vadduqm: "Vector
    Add Unsigned Quadword Modulo", which does 128-bit addition.
    
    In the individual path, however, the IV is incremented with
    vadduwm: "Vector Add Unsigned Word Modulo", which instead
    does 4 32-bit additions. Thus the IV would instead become
    FFFFFFFFFFFFFFFFFFFFFFFF00000000, throwing off the result.
    
    Use vadduqm.
    
    This was probably a typo originally, what with q and w being
    adjacent. It is a pretty narrow edge case: I am really
    impressed by the quality of the kernel self-tests!
    
    Fixes: 5c380d623ed3 ("crypto: vmx - Add support for VMS instructions by ASM")
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Acked-by: Nayna Jain <nayna@linux.ibm.com>
    Tested-by: Nayna Jain <nayna@linux.ibm.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 582bb52e480381a44c78dc758fe9199840ae8f92
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Mon May 20 10:57:18 2019 -0400

    Revert "scsi: sd: Keep disk read-only when re-reading partition"
    
    commit 8acf608e602f6ec38b7cc37b04c80f1ce9a1a6cc upstream.
    
    This reverts commit 20bd1d026aacc5399464f8328f305985c493cde3.
    
    This patch introduced regressions for devices that come online in
    read-only state and subsequently switch to read-write.
    
    Given how the partition code is currently implemented it is not
    possible to persist the read-only flag across a device revalidate
    call. This may need to get addressed in the future since it is common
    for user applications to proactively call BLKRRPART.
    
    Reverting this commit will re-introduce a regression where a
    device-initiated revalidate event will cause the admin state to be
    forgotten. A separate patch will address this issue.
    
    Fixes: 20bd1d026aac ("scsi: sd: Keep disk read-only when re-reading partition")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bd020b331706146be592f5c9eb2b8e357d2b7ce0
Author: Andrea Parri <andrea.parri@amarulasolutions.com>
Date:   Mon May 20 19:23:56 2019 +0200

    bio: fix improper use of smp_mb__before_atomic()
    
    commit f381c6a4bd0ae0fde2d6340f1b9bb0f58d915de6 upstream.
    
    This barrier only applies to the read-modify-write operations; in
    particular, it does not apply to the atomic_set() primitive.
    
    Replace the barrier with an smp_mb().
    
    Fixes: dac56212e8127 ("bio: skip atomic inc/dec of ->bi_cnt for most use cases")
    Cc: stable@vger.kernel.org
    Reported-by: "Paul E. McKenney" <paulmck@linux.ibm.com>
    Reported-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Andrea Parri <andrea.parri@amarulasolutions.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Ming Lei <ming.lei@redhat.com>
    Cc: linux-block@vger.kernel.org
    Cc: "Paul E. McKenney" <paulmck@linux.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 603212bdc59cc2b978fa15035d39393ad32c8b0b
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Fri May 24 21:52:46 2019 +0200

    KVM: x86: fix return value for reserved EFER
    
    commit 66f61c92889ff3ca365161fb29dd36d6354682ba upstream.
    
    Commit 11988499e62b ("KVM: x86: Skip EFER vs. guest CPUID checks for
    host-initiated writes", 2019-04-02) introduced a "return false" in a
    function returning int, and anyway set_efer has a "nonzero on error"
    conventon so it should be returning 1.
    
    Reported-by: Pavel Machek <pavel@denx.de>
    Fixes: 11988499e62b ("KVM: x86: Skip EFER vs. guest CPUID checks for host-initiated writes")
    Cc: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75d63b131b73fefd9c1ef81e2ac96661c38ebba1
Author: Jan Kara <jack@suse.cz>
Date:   Thu May 23 23:35:28 2019 -0400

    ext4: do not delete unlinked inode from orphan list on failed truncate
    
    commit ee0ed02ca93ef1ecf8963ad96638795d55af2c14 upstream.
    
    It is possible that unlinked inode enters ext4_setattr() (e.g. if
    somebody calls ftruncate(2) on unlinked but still open file). In such
    case we should not delete the inode from the orphan list if truncate
    fails. Note that this is mostly a theoretical concern as filesystem is
    corrupted if we reach this path anyway but let's be consistent in our
    orphan handling.
    
    Reviewed-by: Ira Weiny <ira.weiny@intel.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31943685dd499b0599113e6db5ee9c462e0e7e6a
Author: Yifeng Li <tomli@tomli.me>
Date:   Tue Apr 2 17:14:10 2019 +0200

    fbdev: sm712fb: fix memory frequency by avoiding a switch/case fallthrough
    
    commit 9dc20113988b9a75ea6b3abd68dc45e2d73ccdab upstream.
    
    A fallthrough in switch/case was introduced in f627caf55b8e ("fbdev:
    sm712fb: fix crashes and garbled display during DPMS modesetting"),
    due to my copy-paste error, which would cause the memory clock frequency
    for SM720 to be programmed to SM712.
    
    Since it only reprograms the clock to a different frequency, it's only
    a benign issue without visible side-effect, so it also evaded Sudip
    Mukherjee's code review and regression tests. scripts/checkpatch.pl
    also failed to discover the issue, possibly due to nested switch
    statements.
    
    This issue was found by Stephen Rothwell by building linux-next with
    -Wimplicit-fallthrough.
    
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Fixes: f627caf55b8e ("fbdev: sm712fb: fix crashes and garbled display during DPMS modesetting")
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
    Cc: Kees Cook <keescook@chromium.org>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d64186e791045aaa22074a37ed4f23e172dc0e1
Author: Nikolay Borisov <nborisov@suse.com>
Date:   Mon Mar 25 14:31:21 2019 +0200

    btrfs: Honour FITRIM range constraints during free space trim
    
    commit c2d1b3aae33605a61cbab445d8ae1c708ccd2698 upstream.
    
    Up until now trimming the freespace was done irrespective of what the
    arguments of the FITRIM ioctl were. For example fstrim's -o/-l arguments
    will be entirely ignored. Fix it by correctly handling those paramter.
    This requires breaking if the found freespace extent is after the end of
    the passed range as well as completing trim after trimming
    fstrim_range::len bytes.
    
    Fixes: 499f377f49f0 ("btrfs: iterate over unused chunk space in FITRIM")
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57e84e4c073d414843292841c199f50208bfc05e
Author: Nigel Croxon <ncroxon@redhat.com>
Date:   Tue Apr 16 09:50:09 2019 -0700

    md/raid: raid5 preserve the writeback action after the parity check
    
    commit b2176a1dfb518d870ee073445d27055fea64dfb8 upstream.
    
    The problem is that any 'uptodate' vs 'disks' check is not precise
    in this path. Put a "WARN_ON(!test_bit(R5_UPTODATE, &dev->flags)" on the
    device that might try to kick off writes and then skip the action.
    Better to prevent the raid driver from taking unexpected action *and* keep
    the system alive vs killing the machine with BUG_ON.
    
    Note: fixed warning reported by kbuild test robot <lkp@intel.com>
    
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9013f48708484efc544956fa18f5b984b79f13c8
Author: Song Liu <songliubraving@fb.com>
Date:   Tue Apr 16 09:34:21 2019 -0700

    Revert "Don't jump to compute_result state from check_result state"
    
    commit a25d8c327bb41742dbd59f8c545f59f3b9c39983 upstream.
    
    This reverts commit 4f4fd7c5798bbdd5a03a60f6269cf1177fbd11ef.
    
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Nigel Croxon <ncroxon@redhat.com>
    Cc: Xiao Ni <xni@redhat.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c57364fa0f45ff860cbd331f53f168f8414c23a
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Apr 25 18:36:51 2019 -0300

    perf bench numa: Add define for RUSAGE_THREAD if not present
    
    [ Upstream commit bf561d3c13423fc54daa19b5d49dc15fafdb7acc ]
    
    While cross building perf to the ARC architecture on a fedora 30 host,
    we were failing with:
    
          CC       /tmp/build/perf/bench/numa.o
      bench/numa.c: In function ‘worker_thread’:
      bench/numa.c:1261:12: error: ‘RUSAGE_THREAD’ undeclared (first use in this function); did you mean ‘SIGEV_THREAD’?
        getrusage(RUSAGE_THREAD, &rusage);
                  ^~~~~~~~~~~~~
                  SIGEV_THREAD
      bench/numa.c:1261:12: note: each undeclared identifier is reported only once for each function it appears in
    
    [perfbuilder@60d5802468f6 perf]$ /arc_gnu_2019.03-rc1_prebuilt_uclibc_le_archs_linux_install/bin/arc-linux-gcc --version | head -1
    arc-linux-gcc (ARCv2 ISA Linux uClibc toolchain 2019.03-rc1) 8.3.1 20190225
    [perfbuilder@60d5802468f6 perf]$
    
    Trying to reproduce a report by Vineet, I noticed that, with just
    cross-built zlib and numactl libraries, I ended up with the above
    failure.
    
    So, since RUSAGE_THREAD is available as a define, check for that and
    numactl libraries, I ended up with the above failure.
    
    So, since RUSAGE_THREAD is available as a define in the system headers,
    check if it is defined in the 'perf bench numa' sources and define it if
    not.
    
    Now it builds and I have to figure out if the problem reported by Vineet
    only takes place if we have libelf or some other library available.
    
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: linux-snps-arc@lists.infradead.org
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Vineet Gupta <Vineet.Gupta1@synopsys.com>
    Link: https://lkml.kernel.org/n/tip-2wb4r1gir9xrevbpq7qp0amk@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 66ee750cfdd7803c5db6fdf342dd40db8cbee25d
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Wed May 1 22:46:11 2019 -0400

    ufs: fix braino in ufs_get_inode_gid() for solaris UFS flavour
    
    [ Upstream commit 4e9036042fedaffcd868d7f7aa948756c48c637d ]
    
    To choose whether to pick the GID from the old (16bit) or new (32bit)
    field, we should check if the old gid field is set to 0xffff.  Mainline
    checks the old *UID* field instead - cut'n'paste from the corresponding
    code in ufs_get_inode_uid().
    
    Fixes: 252e211e90ce
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fc0208b3428d67b04b5bb66ee7dce1d555c0053a
Author: Andrey Smirnov <andrew.smirnov@gmail.com>
Date:   Wed Apr 24 00:16:10 2019 -0700

    power: supply: sysfs: prevent endless uevent loop with CONFIG_POWER_SUPPLY_DEBUG
    
    [ Upstream commit 349ced9984ff540ce74ca8a0b2e9b03dc434b9dd ]
    
    Fix a similar endless event loop as was done in commit
    8dcf32175b4e ("i2c: prevent endless uevent loop with
    CONFIG_I2C_DEBUG_CORE"):
    
      The culprit is the dev_dbg printk in the i2c uevent handler. If
      this is activated (for instance by CONFIG_I2C_DEBUG_CORE) it results
      in an endless loop with systemd-journald.
    
      This happens if user-space scans the system log and reads the uevent
      file to get information about a newly created device, which seems
      fair use to me. Unfortunately reading the "uevent" file uses the
      same function that runs for creating the uevent for a new device,
      generating the next syslog entry
    
    Both CONFIG_I2C_DEBUG_CORE and CONFIG_POWER_SUPPLY_DEBUG were reported
    in https://bugs.freedesktop.org/show_bug.cgi?id=76886 but only former
    seems to have been fixed. Drop debug prints as it was done in I2C
    subsystem to resolve the issue.
    
    Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
    Cc: Chris Healy <cphealy@gmail.com>
    Cc: linux-pm@vger.kernel.org
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd37fa44dffa441984c46c285d817018c4d28814
Author: Andrew Jones <drjones@redhat.com>
Date:   Thu Apr 4 19:42:30 2019 +0200

    KVM: arm/arm64: Ensure vcpu target is unset on reset failure
    
    [ Upstream commit 811328fc3222f7b55846de0cd0404339e2e1e6d7 ]
    
    A failed KVM_ARM_VCPU_INIT should not set the vcpu target,
    as the vcpu target is used by kvm_vcpu_initialized() to
    determine if other vcpu ioctls may proceed. We need to set
    the target before calling kvm_reset_vcpu(), but if that call
    fails, we should then unset it and clear the feature bitmap
    while we're at it.
    
    Signed-off-by: Andrew Jones <drjones@redhat.com>
    [maz: Simplified patch, completed commit message]
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fe4f461ba51729796c96b9d3ff797a5e585547d6
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Tue Feb 26 07:04:50 2019 +0100

    xfrm4: Fix uninitialized memory read in _decode_session4
    
    [ Upstream commit 8742dc86d0c7a9628117a989c11f04a9b6b898f3 ]
    
    We currently don't reload pointers pointing into skb header
    after doing pskb_may_pull() in _decode_session4(). So in case
    pskb_may_pull() changed the pointers, we read from random
    memory. Fix this by putting all the needed infos on the
    stack, so that we don't need to access the header pointers
    after doing pskb_may_pull().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd0848733f2596fe9c27100e5bd031aff5117c22
Author: Jeremy Sowden <jeremy@azazel.net>
Date:   Tue Mar 19 15:39:20 2019 +0000

    vti4: ipip tunnel deregistration fixes.
    
    [ Upstream commit 5483844c3fc18474de29f5d6733003526e0a9f78 ]
    
    If tunnel registration failed during module initialization, the module
    would fail to deregister the IPPROTO_COMP protocol and would attempt to
    deregister the tunnel.
    
    The tunnel was not deregistered during module-exit.
    
    Fixes: dd9ee3444014e ("vti4: Fix a ipip packet processing bug in 'IPCOMP' virtual tunnel")
    Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8fd94b65d20737b979e7d3a66d5573b91b0a9bd2
Author: Su Yanjun <suyj.fnst@cn.fujitsu.com>
Date:   Thu Mar 14 14:59:42 2019 +0800

    xfrm6_tunnel: Fix potential panic when unloading xfrm6_tunnel module
    
    [ Upstream commit 6ee02a54ef990a71bf542b6f0a4e3321de9d9c66 ]
    
    When unloading xfrm6_tunnel module, xfrm6_tunnel_fini directly
    frees the xfrm6_tunnel_spi_kmem. Maybe someone has gotten the
    xfrm6_tunnel_spi, so need to wait it.
    
    Fixes: 91cc3bb0b04ff("xfrm6_tunnel: RCU conversion")
    Signed-off-by: Su Yanjun <suyj.fnst@cn.fujitsu.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 86040d722b29976dfef0ef2b68eab832c358d04b
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu Feb 28 15:18:59 2019 +0800

    xfrm: policy: Fix out-of-bound array accesses in __xfrm_policy_unlink
    
    [ Upstream commit b805d78d300bcf2c83d6df7da0c818b0fee41427 ]
    
    UBSAN report this:
    
    UBSAN: Undefined behaviour in net/xfrm/xfrm_policy.c:1289:24
    index 6 is out of range for type 'unsigned int [6]'
    CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.4.162-514.55.6.9.x86_64+ #13
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
     0000000000000000 1466cf39b41b23c9 ffff8801f6b07a58 ffffffff81cb35f4
     0000000041b58ab3 ffffffff83230f9c ffffffff81cb34e0 ffff8801f6b07a80
     ffff8801f6b07a20 1466cf39b41b23c9 ffffffff851706e0 ffff8801f6b07ae8
    Call Trace:
     <IRQ>  [<ffffffff81cb35f4>] __dump_stack lib/dump_stack.c:15 [inline]
     <IRQ>  [<ffffffff81cb35f4>] dump_stack+0x114/0x1a0 lib/dump_stack.c:51
     [<ffffffff81d94225>] ubsan_epilogue+0x12/0x8f lib/ubsan.c:164
     [<ffffffff81d954db>] __ubsan_handle_out_of_bounds+0x16e/0x1b2 lib/ubsan.c:382
     [<ffffffff82a25acd>] __xfrm_policy_unlink+0x3dd/0x5b0 net/xfrm/xfrm_policy.c:1289
     [<ffffffff82a2e572>] xfrm_policy_delete+0x52/0xb0 net/xfrm/xfrm_policy.c:1309
     [<ffffffff82a3319b>] xfrm_policy_timer+0x30b/0x590 net/xfrm/xfrm_policy.c:243
     [<ffffffff813d3927>] call_timer_fn+0x237/0x990 kernel/time/timer.c:1144
     [<ffffffff813d8e7e>] __run_timers kernel/time/timer.c:1218 [inline]
     [<ffffffff813d8e7e>] run_timer_softirq+0x6ce/0xb80 kernel/time/timer.c:1401
     [<ffffffff8120d6f9>] __do_softirq+0x299/0xe10 kernel/softirq.c:273
     [<ffffffff8120e676>] invoke_softirq kernel/softirq.c:350 [inline]
     [<ffffffff8120e676>] irq_exit+0x216/0x2c0 kernel/softirq.c:391
     [<ffffffff82c5edab>] exiting_irq arch/x86/include/asm/apic.h:652 [inline]
     [<ffffffff82c5edab>] smp_apic_timer_interrupt+0x8b/0xc0 arch/x86/kernel/apic/apic.c:926
     [<ffffffff82c5c985>] apic_timer_interrupt+0xa5/0xb0 arch/x86/entry/entry_64.S:735
     <EOI>  [<ffffffff81188096>] ? native_safe_halt+0x6/0x10 arch/x86/include/asm/irqflags.h:52
     [<ffffffff810834d7>] arch_safe_halt arch/x86/include/asm/paravirt.h:111 [inline]
     [<ffffffff810834d7>] default_idle+0x27/0x430 arch/x86/kernel/process.c:446
     [<ffffffff81085f05>] arch_cpu_idle+0x15/0x20 arch/x86/kernel/process.c:437
     [<ffffffff8132abc3>] default_idle_call+0x53/0x90 kernel/sched/idle.c:92
     [<ffffffff8132b32d>] cpuidle_idle_call kernel/sched/idle.c:156 [inline]
     [<ffffffff8132b32d>] cpu_idle_loop kernel/sched/idle.c:251 [inline]
     [<ffffffff8132b32d>] cpu_startup_entry+0x60d/0x9a0 kernel/sched/idle.c:299
     [<ffffffff8113e119>] start_secondary+0x3c9/0x560 arch/x86/kernel/smpboot.c:245
    
    The issue is triggered as this:
    
    xfrm_add_policy
        -->verify_newpolicy_info  //check the index provided by user with XFRM_POLICY_MAX
                                  //In my case, the index is 0x6E6BB6, so it pass the check.
        -->xfrm_policy_construct  //copy the user's policy and set xfrm_policy_timer
        -->xfrm_policy_insert
            --> __xfrm_policy_link //use the orgin dir, in my case is 2
            --> xfrm_gen_index   //generate policy index, there is 0x6E6BB6
    
    then xfrm_policy_timer be fired
    
    xfrm_policy_timer
       --> xfrm_policy_id2dir  //get dir from (policy index & 7), in my case is 6
       --> xfrm_policy_delete
          --> __xfrm_policy_unlink //access policy_count[dir], trigger out of range access
    
    Add xfrm_policy_id2dir check in verify_newpolicy_info, make sure the computed dir is
    valid, to fix the issue.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: e682adf021be ("xfrm: Try to honor policy index if it's supplied by user")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit daea41651d4346a79ceb05312a8ee40fd2318f70
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Thu Apr 25 12:07:54 2019 -0400

    dm delay: fix a crash when invalid device is specified
    
    commit 81bc6d150ace6250503b825d9d0c10f7bbd24095 upstream.
    
    When the target line contains an invalid device, delay_ctr() will call
    delay_dtr() with NULL workqueue.  Attempting to destroy the NULL
    workqueue causes a crash.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 566004721c905a64626d221c45725cab5d4586c4
Author: James Prestwood <james.prestwood@linux.intel.com>
Date:   Mon Jan 7 13:32:48 2019 -0800

    PCI: Mark Atheros AR9462 to avoid bus reset
    
    commit 6afb7e26978da5e86e57e540fdce65c8b04f398a upstream.
    
    When using PCI passthrough with this device, the host machine locks up
    completely when starting the VM, requiring a hard reboot.  Add a quirk to
    avoid bus resets on this device.
    
    Fixes: c3e59ee4e766 ("PCI: Mark Atheros AR93xx to avoid bus reset")
    Link: https://lore.kernel.org/linux-pci/20190107213248.3034-1-james.prestwood@linux.intel.com
    Signed-off-by: James Prestwood <james.prestwood@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org      # v3.14+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0dc2ad06ddad075cf31634ef808e6a55f3c339ba
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:59 2019 +0200

    fbdev: sm712fb: fix crashes and garbled display during DPMS modesetting
    
    commit f627caf55b8e735dcec8fa6538e9668632b55276 upstream.
    
    On a Thinkpad s30 (Pentium III / i440MX, Lynx3DM), blanking the display
    or starting the X server will crash and freeze the system, or garble the
    display.
    
    Experiments showed this problem can mostly be solved by adjusting the
    order of register writes. Also, sm712fb failed to consider the difference
    of clock frequency when unblanking the display, and programs the clock for
    SM712 to SM720.
    
    Fix them by adjusting the order of register writes, and adding an
    additional check for SM720 for programming the clock frequency.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4673eae95b535cb28700d491705f67cc60239f8e
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:59 2019 +0200

    fbdev: sm712fb: use 1024x768 by default on non-MIPS, fix garbled display
    
    commit 4ed7d2ccb7684510ec5f7a8f7ef534bc6a3d55b2 upstream.
    
    Loongson MIPS netbooks use 1024x600 LCD panels, which is the original
    target platform of this driver, but nearly all old x86 laptops have
    1024x768. Lighting 768 panels using 600's timings would partially
    garble the display. Since it's not possible to distinguish them reliably,
    we change the default to 768, but keep 600 as-is on MIPS.
    
    Further, earlier laptops, such as IBM Thinkpad 240X, has a 800x600 LCD
    panel, this driver would probably garbled those display. As we don't
    have one for testing, the original behavior of the driver is kept as-is,
    but the problem has been documented is the comments.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c996722f7fffe1cfe0e41d3105434224978df245
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:59 2019 +0200

    fbdev: sm712fb: fix support for 1024x768-16 mode
    
    commit 6053d3a4793e5bde6299ac5388e76a3bf679ff65 upstream.
    
    In order to support the 1024x600 panel on Yeeloong Loongson MIPS
    laptop, the original 1024x768-16 table was modified to 1024x600-16,
    without leaving the original. It causes problem on x86 laptop as
    the 1024x768-16 support was still claimed but not working.
    
    Fix it by introducing the 1024x768-16 mode.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebfadb510e3cd953425f5a29114cc7be8e5ac069
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:59 2019 +0200

    fbdev: sm712fb: fix crashes during framebuffer writes by correctly mapping VRAM
    
    commit 9e0e59993df0601cddb95c4f6c61aa3d5e753c00 upstream.
    
    On a Thinkpad s30 (Pentium III / i440MX, Lynx3DM), running fbtest or X
    will crash the machine instantly, because the VRAM/framebuffer is not
    mapped correctly.
    
    On SM712, the framebuffer starts at the beginning of address space, but
    SM720's framebuffer starts at the 1 MiB offset from the beginning. However,
    sm712fb fails to take this into account, as a result, writing to the
    framebuffer will destroy all the registers and kill the system immediately.
    Another problem is the driver assumes 8 MiB of VRAM for SM720, but some
    SM720 system, such as this IBM Thinkpad, only has 4 MiB of VRAM.
    
    Fix this problem by removing the hardcoded VRAM size, adding a function to
    query the amount of VRAM from register MCR76 on SM720, and adding proper
    framebuffer offset.
    
    Please note that the memory map may have additional problems on Big-Endian
    system, which is not available for testing by myself. But I highly suspect
    that the original code is also broken on Big-Endian machines for SM720, so
    at least we are not making the problem worse. More, the driver also assumed
    SM710/SM712 has 4 MiB of VRAM, but it has a 2 MiB version as well, and used
    in earlier laptops, such as IBM Thinkpad 240X, the driver would probably
    crash on them. I've never seen one of those machines and cannot fix it, but
    I have documented these problems in the comments.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c92bde52742c851b3a8d2831c05d6dd373291f26
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:59 2019 +0200

    fbdev: sm712fb: fix boot screen glitch when sm712fb replaces VGA
    
    commit ec1587d5073f29820e358f3a383850d61601d981 upstream.
    
    When the machine is booted in VGA mode, loading sm712fb would cause
    a glitch of random pixels shown on the screen. To prevent it from
    happening, we first clear the entire framebuffer, and we also need
    to stop calling smtcfb_setmode() during initialization, the fbdev
    layer will call it for us later when it's ready.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d5cd17ce037500deee0cacc70acb90cc7943f50
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:58 2019 +0200

    fbdev: sm712fb: fix white screen of death on reboot, don't set CR3B-CR3F
    
    commit 8069053880e0ee3a75fd6d7e0a30293265fe3de4 upstream.
    
    On a Thinkpad s30 (Pentium III / i440MX, Lynx3DM), rebooting with
    sm712fb framebuffer driver would cause a white screen of death on
    the next POST, presumably the proper timings for the LCD panel was
    not reprogrammed properly by the BIOS.
    
    Experiments showed a few CRTC Scratch Registers, including CRT3D,
    CRT3E and CRT3F may be used internally by BIOS as some flags. CRT3B is
    a hardware testing register, we shouldn't mess with it. CRT3C has
    blanking signal and line compare control, which is not needed for this
    driver.
    
    Stop writing to CR3B-CR3F (a.k.a CRT3B-CRT3F) registers. Even if these
    registers don't have side-effect on other systems, writing to them is
    also highly questionable.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca5ce8db7f230bea2f0d39562fdcb71d88e46a3f
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:58 2019 +0200

    fbdev: sm712fb: fix VRAM detection, don't set SR70/71/74/75
    
    commit dcf9070595e100942c539e229dde4770aaeaa4e9 upstream.
    
    On a Thinkpad s30 (Pentium III / i440MX, Lynx3DM), the amount of Video
    RAM is not detected correctly by the xf86-video-siliconmotion driver.
    This is because sm712fb overwrites the GPR71 Scratch Pad Register, which
    is set by BIOS on x86 and used to indicate amount of VRAM.
    
    Other Scratch Pad Registers, including GPR70/74/75, don't have the same
    side-effect, but overwriting to them is still questionable, as they are
    not related to modesetting.
    
    Stop writing to SR70/71/74/75 (a.k.a GPR70/71/74/75).
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c2fb5beecba9837e5298c92a22b40ee7e71ec97
Author: Yifeng Li <tomli@tomli.me>
Date:   Mon Apr 1 17:46:58 2019 +0200

    fbdev: sm712fb: fix brightness control on reboot, don't set SR30
    
    commit 5481115e25e42b9215f2619452aa99c95f08492f upstream.
    
    On a Thinkpad s30 (Pentium III / i440MX, Lynx3DM), rebooting with
    sm712fb framebuffer driver would cause the role of brightness up/down
    button to swap.
    
    Experiments showed the FPR30 register caused this behavior. Moreover,
    even if this register don't have side-effect on other systems, over-
    writing it is also highly questionable, since it was originally
    configurated by the motherboard manufacturer by hardwiring pull-down
    resistors to indicate the type of LCD panel. We should not mess with
    it.
    
    Stop writing to the SR30 (a.k.a FPR30) register.
    
    Signed-off-by: Yifeng Li <tomli@tomli.me>
    Tested-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: Teddy Wang <teddy.wang@siliconmotion.com>
    Cc: <stable@vger.kernel.org>  # v4.4+
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbc86a927d6666c856cb6a096c7977c91f805a9c
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri May 10 15:41:43 2019 +0300

    perf intel-pt: Fix sample timestamp wrt non-taken branches
    
    commit 1b6599a9d8e6c9f7e9b0476012383b1777f7fc93 upstream.
    
    The sample timestamp is updated to ensure that the timestamp represents
    the time of the sample and not a branch that the decoder is still
    walking towards. The sample timestamp is updated when the decoder
    returns, but the decoder does not return for non-taken branches. Update
    the sample timestamp then also.
    
    Note that commit 3f04d98e972b5 ("perf intel-pt: Improve sample
    timestamp") was also a stable fix and appears, for example, in v4.4
    stable tree as commit a4ebb58fd124 ("perf intel-pt: Improve sample
    timestamp").
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v4.4+
    Fixes: 3f04d98e972b ("perf intel-pt: Improve sample timestamp")
    Link: http://lkml.kernel.org/r/20190510124143.27054-4-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eedc9a210f9fa5548320c9c173d4b6484be92004
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri May 10 15:41:42 2019 +0300

    perf intel-pt: Fix improved sample timestamp
    
    commit 61b6e08dc8e3ea80b7485c9b3f875ddd45c8466b upstream.
    
    The decoder uses its current timestamp in samples. Usually that is a
    timestamp that has already passed, but in some cases it is a timestamp
    for a branch that the decoder is walking towards, and consequently
    hasn't reached.
    
    The intel_pt_sample_time() function decides which is which, but was not
    handling TNT packets exactly correctly.
    
    In the case of TNT, the timestamp applies to the first branch, so the
    decoder must first walk to that branch.
    
    That means intel_pt_sample_time() should return true for TNT, and this
    patch makes that change. However, if the first branch is a non-taken
    branch (i.e. a 'N'), then intel_pt_sample_time() needs to return false
    for subsequent taken branches in the same TNT packet.
    
    To handle that, introduce a new state INTEL_PT_STATE_TNT_CONT to
    distinguish the cases.
    
    Note that commit 3f04d98e972b5 ("perf intel-pt: Improve sample
    timestamp") was also a stable fix and appears, for example, in v4.4
    stable tree as commit a4ebb58fd124 ("perf intel-pt: Improve sample
    timestamp").
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org # v4.4+
    Fixes: 3f04d98e972b5 ("perf intel-pt: Improve sample timestamp")
    Link: http://lkml.kernel.org/r/20190510124143.27054-3-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5da0aeca52579e2477c82aa2c714d0dfa9a96ea
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri May 10 15:41:41 2019 +0300

    perf intel-pt: Fix instructions sampling rate
    
    commit 7ba8fa20e26eb3c0c04d747f7fd2223694eac4d5 upstream.
    
    The timestamp used to determine if an instruction sample is made, is an
    estimate based on the number of instructions since the last known
    timestamp. A consequence is that it might go backwards, which results in
    extra samples. Change it so that a sample is only made when the
    timestamp goes forwards.
    
    Note this does not affect a sampling period of 0 or sampling periods
    specified as a count of instructions.
    
    Example:
    
     Before:
    
     $ perf script --itrace=i10us
     ls 13812 [003] 2167315.222583:       3270 instructions:u:      7fac71e2e494 __GI___tunables_init+0xf4 (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:      30902 instructions:u:      7fac71e2da0f _dl_cache_libcmp+0x2f (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:         10 instructions:u:      7fac71e2d9ff _dl_cache_libcmp+0x1f (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:          8 instructions:u:      7fac71e2d9ea _dl_cache_libcmp+0xa (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:         14 instructions:u:      7fac71e2d9ea _dl_cache_libcmp+0xa (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:          6 instructions:u:      7fac71e2d9ff _dl_cache_libcmp+0x1f (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:         14 instructions:u:      7fac71e2d9ff _dl_cache_libcmp+0x1f (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:          4 instructions:u:      7fac71e2dab2 _dl_cache_libcmp+0xd2 (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222728:      16423 instructions:u:      7fac71e2477a _dl_map_object_deps+0x1ba (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222734:      12731 instructions:u:      7fac71e27938 _dl_name_match_p+0x68 (/lib/x86_64-linux-gnu/ld-2.28.so)
     ...
    
     After:
     $ perf script --itrace=i10us
     ls 13812 [003] 2167315.222583:       3270 instructions:u:      7fac71e2e494 __GI___tunables_init+0xf4 (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222667:      30902 instructions:u:      7fac71e2da0f _dl_cache_libcmp+0x2f (/lib/x86_64-linux-gnu/ld-2.28.so)
     ls 13812 [003] 2167315.222728:      16479 instructions:u:      7fac71e2477a _dl_map_object_deps+0x1ba (/lib/x86_64-linux-gnu/ld-2.28.so)
     ...
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: f4aa081949e7b ("perf tools: Add Intel PT decoder")
    Link: http://lkml.kernel.org/r/20190510124143.27054-2-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5b2e4b6ac21396af60c9b652be1fdbd04fe33e3
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Fri Apr 12 01:12:48 2019 +0300

    memory: tegra: Fix integer overflow on tick value calculation
    
    commit b906c056b6023c390f18347169071193fda57dde upstream.
    
    Multiplying the Memory Controller clock rate by the tick count results
    in an integer overflow and in result the truncated tick value is being
    programmed into hardware, such that the GR3D memory client performance is
    reduced by two times.
    
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11988047b39ad52bc455fb8ba6ad202ddcea0b24
Author: Elazar Leibovich <elazar@lightbitslabs.com>
Date:   Mon Dec 31 13:58:37 2018 +0200

    tracing: Fix partial reading of trace event's id file
    
    commit cbe08bcbbe787315c425dde284dcb715cfbf3f39 upstream.
    
    When reading only part of the id file, the ppos isn't tracked correctly.
    This is taken care by simple_read_from_buffer.
    
    Reading a single byte, and then the next byte would result EOF.
    
    While this seems like not a big deal, this breaks abstractions that
    reads information from files unbuffered. See for example
    https://github.com/golang/go/issues/29399
    
    This code was mentioned as problematic in
    commit cd458ba9d5a5
    ("tracing: Do not (ab)use trace_seq in event_id_read()")
    
    An example C code that show this bug is:
    
      #include <stdio.h>
      #include <stdint.h>
    
      #include <sys/types.h>
      #include <sys/stat.h>
      #include <fcntl.h>
      #include <unistd.h>
    
      int main(int argc, char **argv) {
        if (argc < 2)
          return 1;
        int fd = open(argv[1], O_RDONLY);
        char c;
        read(fd, &c, 1);
        printf("First  %c\n", c);
        read(fd, &c, 1);
        printf("Second %c\n", c);
      }
    
    Then run with, e.g.
    
      sudo ./a.out /sys/kernel/debug/tracing/events/tcp/tcp_set_state/id
    
    You'll notice you're getting the first character twice, instead of the
    first two characters in the id file.
    
    Link: http://lkml.kernel.org/r/20181231115837.4932-1-elazar@lightbitslabs.com
    
    Cc: Orit Wasserman <orit.was@gmail.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 23725aeeab10b ("ftrace: provide an id file for each event")
    Signed-off-by: Elazar Leibovich <elazar@lightbitslabs.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7929c94860ea760c778957275f8cb1699fa39d4
Author: Jeff Layton <jlayton@kernel.org>
Date:   Tue May 7 09:20:54 2019 -0400

    ceph: flush dirty inodes before proceeding with remount
    
    commit 00abf69dd24f4444d185982379c5cc3bb7b6d1fc upstream.
    
    xfstest generic/452 was triggering a "Busy inodes after umount" warning.
    ceph was allowing the mount to go read-only without first flushing out
    dirty inodes in the cache. Ensure we sync out the filesystem before
    allowing a remount to proceed.
    
    Cc: stable@vger.kernel.org
    Link: http://tracker.ceph.com/issues/39571
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c99cd905ba9e75bb9729ac17df6d59836c55a09
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Thu Mar 7 01:50:07 2019 +0300

    iommu/tegra-smmu: Fix invalid ASID bits on Tegra30/114
    
    commit 43a0541e312f7136e081e6bf58f6c8a2e9672688 upstream.
    
    Both Tegra30 and Tegra114 have 4 ASID's and the corresponding bitfield of
    the TLB_FLUSH register differs from later Tegra generations that have 128
    ASID's.
    
    In a result the PTE's are now flushed correctly from TLB and this fixes
    problems with graphics (randomly failing tests) on Tegra30.
    
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40857ab7398823f222c24634a65c9d1475306eba
Author: Liu Bo <bo.liu@linux.alibaba.com>
Date:   Thu Apr 18 04:04:41 2019 +0800

    fuse: honor RLIMIT_FSIZE in fuse_file_fallocate
    
    commit 0cbade024ba501313da3b7e5dd2a188a6bc491b5 upstream.
    
    fstests generic/228 reported this failure that fuse fallocate does not
    honor what 'ulimit -f' has set.
    
    This adds the necessary inode_newsize_ok() check.
    
    Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
    Fixes: 05ba1f082300 ("fuse: add FALLOCATE operation")
    Cc: <stable@vger.kernel.org> # v3.5
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73724958d1298f8b7e1ef82598d8dc5099a1bff8
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Wed Apr 24 17:05:06 2019 +0200

    fuse: fix writepages on 32bit
    
    commit 9de5be06d0a89ca97b5ab902694d42dfd2bb77d2 upstream.
    
    Writepage requests were cropped to i_size & 0xffffffff, which meant that
    mmaped writes to any file larger than 4G might be silently discarded.
    
    Fix by storing the file size in a properly sized variable (loff_t instead
    of size_t).
    
    Reported-by: Antonio SJ Musumeci <trapexit@spawn.link>
    Fixes: 6eaf4782eb09 ("fuse: writepages: crop secondary requests")
    Cc: <stable@vger.kernel.org> # v3.13
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12060f4740ca62851b0d9efb6fe72a5691b458d9
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Fri Apr 12 00:48:34 2019 +0300

    clk: tegra: Fix PLLM programming on Tegra124+ when PMC overrides divider
    
    commit 40db569d6769ffa3864fd1b89616b1a7323568a8 upstream.
    
    There are wrongly set parenthesis in the code that are resulting in a
    wrong configuration being programmed for PLLM. The original fix was made
    by Danny Huang in the downstream kernel. The patch was tested on Nyan Big
    Tegra124 chromebook, PLLM rate changing works correctly now and system
    doesn't lock up after changing the PLLM rate due to EMC scaling.
    
    Cc: <stable@vger.kernel.org>
    Tested-by: Steev Klimaszewski <steev@kali.org>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Acked-By: Peter De Schrijver <pdeschrijver@nvidia.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4676a07add0840752af682a0f949fb560bd3b34f
Author: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
Date:   Mon May 6 11:57:03 2019 +0800

    NFS4: Fix v4.0 client state corruption when mount
    
    commit f02f3755dbd14fb935d24b14650fff9ba92243b8 upstream.
    
    stat command with soft mount never return after server is stopped.
    
    When alloc a new client, the state of the client will be set to
    NFS4CLNT_LEASE_EXPIRED.
    
    When the server is stopped, the state manager will work, and accord
    the state to recover. But the state is NFS4CLNT_LEASE_EXPIRED, it
    will drain the slot table and lead other task to wait queue, until
    the client recovered. Then the stat command is hung.
    
    When discover server trunking, the client will renew the lease,
    but check the client state, it lead the client state corruption.
    
    So, we need to call state manager to recover it when detect server
    ip trunking.
    
    Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8623e7a8f4b3acf44ecbf64a013a06454f2b4f1
Author: Janusz Krzysztofik <jmkrzyszt@gmail.com>
Date:   Sun Mar 24 20:21:12 2019 -0400

    media: ov6650: Fix sensor possibly not detected on probe
    
    commit 933c1320847f5ed6b61a7d10f0a948aa98ccd7b0 upstream.
    
    After removal of clock_start() from before soc_camera_init_i2c() in
    soc_camera_probe() by commit 9aea470b399d ("[media] soc-camera: switch
    I2C subdevice drivers to use v4l2-clk") introduced in v3.11, the ov6650
    driver could no longer probe the sensor successfully because its clock
    was no longer turned on in advance.  The issue was initially worked
    around by adding that missing clock_start() equivalent to OMAP1 camera
    interface driver - the only user of this sensor - but a propoer fix
    should be rather implemented in the sensor driver code itself.
    
    Fix the issue by inserting a delay between the clock is turned on and
    the sensor I2C registers are read for the first time.
    
    Tested on Amstrad Delta with now out of tree but still locally
    maintained omap1_camera host driver.
    
    Fixes: 9aea470b399d ("[media] soc-camera: switch I2C subdevice drivers to use v4l2-clk")
    
    Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dffc9e5ffae5a7cf5cbc2cab33da452fbc9a8801
Author: Christoph Probst <kernel@probst.it>
Date:   Tue May 7 17:16:40 2019 +0200

    cifs: fix strcat buffer overflow and reduce raciness in smb21_set_oplock_level()
    
    commit 6a54b2e002c9d00b398d35724c79f9fe0d9b38fb upstream.
    
    Change strcat to strncpy in the "None" case to fix a buffer overflow
    when cinode->oplock is reset to 0 by another thread accessing the same
    cinode. It is never valid to append "None" to any other message.
    
    Consolidate multiple writes to cinode->oplock to reduce raciness.
    
    Signed-off-by: Christoph Probst <kernel@probst.it>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    CC: Stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8ab0c4effb84920da81bbc006423d9170449ab9
Author: Phong Tran <tranmanphong@gmail.com>
Date:   Tue Apr 30 21:56:24 2019 +0700

    of: fix clang -Wunsequenced for be32_to_cpu()
    
    commit 440868661f36071886ed360d91de83bd67c73b4f upstream.
    
    Now, make the loop explicit to avoid clang warning.
    
    ./include/linux/of.h:238:37: warning: multiple unsequenced modifications
    to 'cell' [-Wunsequenced]
                    r = (r << 32) | be32_to_cpu(*(cell++));
                                                      ^~
    ./include/linux/byteorder/generic.h:95:21: note: expanded from macro
    'be32_to_cpu'
                        ^
    ./include/uapi/linux/byteorder/little_endian.h:40:59: note: expanded
    from macro '__be32_to_cpu'
                                                              ^
    ./include/uapi/linux/swab.h:118:21: note: expanded from macro '__swab32'
            ___constant_swab32(x) :                 \
                               ^
    ./include/uapi/linux/swab.h:18:12: note: expanded from macro
    '___constant_swab32'
            (((__u32)(x) & (__u32)0x000000ffUL) << 24) |            \
                      ^
    
    Signed-off-by: Phong Tran <tranmanphong@gmail.com>
    Reported-by: Nick Desaulniers <ndesaulniers@google.com>
    Link: https://github.com/ClangBuiltLinux/linux/issues/460
    Suggested-by: David Laight <David.Laight@ACULAB.COM>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Cc: stable@vger.kernel.org
    [robh: fix up whitespace]
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a98d346396abd7849e20e0bce666e803d601f25
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Fri May 3 11:44:34 2019 +0300

    intel_th: msu: Fix single mode with IOMMU
    
    commit 4e0eaf239fb33ebc671303e2b736fa043462e2f4 upstream.
    
    Currently, the pages that are allocated for the single mode of MSC are not
    mapped into the device's dma space and the code is incorrectly using
    *_to_phys() in place of a dma address. This fails with IOMMU enabled and
    is otherwise bad practice.
    
    Fix the single mode buffer allocation to map the pages into the device's
    DMA space.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Fixes: ba82664c134e ("intel_th: Add Memory Storage Unit driver")
    Cc: stable@vger.kernel.org # v4.4+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc065776c31ee14347822c6fe9b8cfbc392e5959
Author: Yufen Yu <yuyufen@huawei.com>
Date:   Tue Apr 2 14:22:14 2019 +0800

    md: add mddev->pers to avoid potential NULL pointer dereference
    
    commit ee37e62191a59d253fc916b9fc763deb777211e2 upstream.
    
    When doing re-add, we need to ensure rdev->mddev->pers is not NULL,
    which can avoid potential NULL pointer derefence in fallowing
    add_bound_rdev().
    
    Fixes: a6da4ef85cef ("md: re-add a failed disk")
    Cc: Xiao Ni <xni@redhat.com>
    Cc: NeilBrown <neilb@suse.com>
    Cc: <stable@vger.kernel.org> # 4.4+
    Reviewed-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Yufen Yu <yuyufen@huawei.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ade291d2230a3a642918ab4a173bc4b5960d5159
Author: Tingwei Zhang <tingwei@codeaurora.org>
Date:   Wed Apr 17 10:35:34 2019 +0300

    stm class: Fix channel free in stm output free path
    
    commit ee496da4c3915de3232b5f5cd20e21ae3e46fe8d upstream.
    
    Number of free masters is not set correctly in stm
    free path. Fix this by properly adding the number
    of output channels before setting them to 0 in
    stm_output_disclaim().
    
    Currently it is equivalent to doing nothing since
    master->nr_free is incremented by 0.
    
    Fixes: 7bd1d4093c2f ("stm class: Introduce an abstraction for System Trace Module devices")
    Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org>
    Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
    Cc: stable@vger.kernel.org # v4.4
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65d14634b6942b4ee1bb58677e32e54920dab1aa
Author: Junwei Hu <hujunwei4@huawei.com>
Date:   Fri May 17 19:27:34 2019 +0800

    tipc: fix modprobe tipc failed after switch order of device registration
    
    [ Upstream commit 532b0f7ece4cb2ffd24dc723ddf55242d1188e5e ]
    
    Error message printed:
    modprobe: ERROR: could not insert 'tipc': Address family not
    supported by protocol.
    when modprobe tipc after the following patch: switch order of
    device registration, commit 7e27e8d6130c
    ("tipc: switch order of device registration to fix a crash")
    
    Because sock_create_kern(net, AF_TIPC, ...) is called by
    tipc_topsrv_create_listener() in the initialization process
    of tipc_net_ops, tipc_socket_init() must be execute before that.
    
    I move tipc_socket_init() into function tipc_init_net().
    
    Fixes: 7e27e8d6130c
    ("tipc: switch order of device registration to fix a crash")
    Signed-off-by: Junwei Hu <hujunwei4@huawei.com>
    Reported-by: Wang Wang <wangwang2@huawei.com>
    Reviewed-by: Kang Zhou <zhoukang7@huawei.com>
    Reviewed-by: Suanming Mou <mousuanming@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff69bb4be64398adf129b8d5dce1c93de58bfa49
Author: Junwei Hu <hujunwei4@huawei.com>
Date:   Thu May 16 10:51:15 2019 +0800

    tipc: switch order of device registration to fix a crash
    
    [ Upstream commit 7e27e8d6130c5e88fac9ddec4249f7f2337fe7f8 ]
    
    When tipc is loaded while many processes try to create a TIPC socket,
    a crash occurs:
     PANIC: Unable to handle kernel paging request at virtual
     address "dfff20000000021d"
     pc : tipc_sk_create+0x374/0x1180 [tipc]
     lr : tipc_sk_create+0x374/0x1180 [tipc]
       Exception class = DABT (current EL), IL = 32 bits
     Call trace:
      tipc_sk_create+0x374/0x1180 [tipc]
      __sock_create+0x1cc/0x408
      __sys_socket+0xec/0x1f0
      __arm64_sys_socket+0x74/0xa8
     ...
    
    This is due to race between sock_create and unfinished
    register_pernet_device. tipc_sk_insert tries to do
    "net_generic(net, tipc_net_id)".
    but tipc_net_id is not initialized yet.
    
    So switch the order of the two to close the race.
    
    This can be reproduced with multiple processes doing socket(AF_TIPC, ...)
    and one process doing module removal.
    
    Fixes: a62fbccecd62 ("tipc: make subscriber server support net namespace")
    Signed-off-by: Junwei Hu <hujunwei4@huawei.com>
    Reported-by: Wang Wang <wangwang2@huawei.com>
    Reviewed-by: Xiaogang Wang <wangxiaogang3@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ff783f3e05e878c8fbaa2316ec39152d16d5c18
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Tue May 14 22:55:32 2019 +0800

    ppp: deflate: Fix possible crash in deflate_init
    
    [ Upstream commit 3ebe1bca58c85325c97a22d4fc3f5b5420752e6f ]
    
    BUG: unable to handle kernel paging request at ffffffffa018f000
    PGD 3270067 P4D 3270067 PUD 3271063 PMD 2307eb067 PTE 0
    Oops: 0000 [#1] PREEMPT SMP
    CPU: 0 PID: 4138 Comm: modprobe Not tainted 5.1.0-rc7+ #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
    RIP: 0010:ppp_register_compressor+0x3e/0xd0 [ppp_generic]
    Code: 98 4a 3f e2 48 8b 15 c1 67 00 00 41 8b 0c 24 48 81 fa 40 f0 19 a0
    75 0e eb 35 48 8b 12 48 81 fa 40 f0 19 a0 74
    RSP: 0018:ffffc90000d93c68 EFLAGS: 00010287
    RAX: ffffffffa018f000 RBX: ffffffffa01a3000 RCX: 000000000000001a
    RDX: ffff888230c750a0 RSI: 0000000000000000 RDI: ffffffffa019f000
    RBP: ffffc90000d93c80 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffffffffa0194080
    R13: ffff88822ee1a700 R14: 0000000000000000 R15: ffffc90000d93e78
    FS:  00007f2339557540(0000) GS:ffff888237a00000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffa018f000 CR3: 000000022bde4000 CR4: 00000000000006f0
    Call Trace:
     ? 0xffffffffa01a3000
     deflate_init+0x11/0x1000 [ppp_deflate]
     ? 0xffffffffa01a3000
     do_one_initcall+0x6c/0x3cc
     ? kmem_cache_alloc_trace+0x248/0x3b0
     do_init_module+0x5b/0x1f1
     load_module+0x1db1/0x2690
     ? m_show+0x1d0/0x1d0
     __do_sys_finit_module+0xc5/0xd0
     __x64_sys_finit_module+0x15/0x20
     do_syscall_64+0x6b/0x1d0
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    If ppp_deflate fails to register in deflate_init,
    module initialization failed out, however
    ppp_deflate_draft may has been regiestred and not
    unregistered before return.
    Then the seconed modprobe will trigger crash like this.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Acked-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd20e0c039fe8c61332d7946656e926fb78301e8
Author: Yunjian Wang <wangyunjian@huawei.com>
Date:   Tue May 14 19:03:19 2019 +0800

    net/mlx4_core: Change the error print to info print
    
    [ Upstream commit 00f9fec48157f3734e52130a119846e67a12314b ]
    
    The error print within mlx4_flow_steer_promisc_add() should
    be a info print.
    
    Fixes: 592e49dda812 ('net/mlx4: Implement promiscuous mode with device managed flow-steering')
    Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2f72a43114261387b943fa1ba364e97acba6e59
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu May 16 08:09:57 2019 -0700

    net: avoid weird emergency message
    
    [ Upstream commit d7c04b05c9ca14c55309eb139430283a45c4c25f ]
    
    When host is under high stress, it is very possible thread
    running netdev_wait_allrefs() returns from msleep(250)
    10 seconds late.
    
    This leads to these messages in the syslog :
    
    [...] unregister_netdevice: waiting for syz_tun to become free. Usage count = 0
    
    If the device refcount is zero, the wait is over.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70064f7ea1005694a3898950bdce6b9ee3869ca3
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Tue Apr 2 08:19:15 2019 -0700

    KVM: x86: Skip EFER vs. guest CPUID checks for host-initiated writes
    
    commit 11988499e62b310f3bf6f6d0a807a06d3f9ccc96 upstream.
    
    KVM allows userspace to violate consistency checks related to the
    guest's CPUID model to some degree.  Generally speaking, userspace has
    carte blanche when it comes to guest state so long as jamming invalid
    state won't negatively affect the host.
    
    Currently this is seems to be a non-issue as most of the interesting
    EFER checks are missing, e.g. NX and LME, but those will be added
    shortly.  Proactively exempt userspace from the CPUID checks so as not
    to break userspace.
    
    Note, the efer_reserved_bits check still applies to userspace writes as
    that mask reflects the host's capabilities, e.g. KVM shouldn't allow a
    guest to run with NX=1 if it has been disabled in the host.
    
    Fixes: d80174745ba39 ("KVM: SVM: Only allow setting of EFER_SVME when CPUID SVM is set")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e9bc16ff49f46e0182cd093a3fdd812ba199451
Author: Michał Wadowski <wadosm@gmail.com>
Date:   Tue May 14 16:58:00 2019 +0200

    ALSA: hda/realtek - Fix for Lenovo B50-70 inverted internal microphone bug
    
    commit 56df90b631fc027fe28b70d41352d820797239bb upstream.
    
    Add patch for realtek codec in Lenovo B50-70 that fixes inverted
    internal microphone channel.
    Device IdeaPad Y410P has the same PCI SSID as Lenovo B50-70,
    but first one is about fix the noise and it didn't seem help in a
    later kernel version.
    So I replaced IdeaPad Y410P device description with B50-70 and apply
    inverted microphone fix.
    
    Bugzilla: https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1524215
    Signed-off-by: Michał Wadowski <wadosm@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98529ecd313bbeff006930056dad26529510054f
Author: Sriram Rajagopalan <sriramr@arista.com>
Date:   Fri May 10 19:28:06 2019 -0400

    ext4: zero out the unused memory region in the extent tree block
    
    commit 592acbf16821288ecdc4192c47e3774a4c48bb64 upstream.
    
    This commit zeroes out the unused memory region in the buffer_head
    corresponding to the extent metablock after writing the extent header
    and the corresponding extent node entries.
    
    This is done to prevent random uninitialized data from getting into
    the filesystem when the extent block is synced.
    
    This fixes CVE-2019-11833.
    
    Signed-off-by: Sriram Rajagopalan <sriramr@arista.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ff6372e5a6b896090919c569be8429b662b0a24
Author: Jiufei Xue <jiufei.xue@linux.alibaba.com>
Date:   Fri May 17 14:31:44 2019 -0700

    fs/writeback.c: use rcu_barrier() to wait for inflight wb switches going into workqueue when umount
    
    commit ec084de929e419e51bcdafaafe567d9e7d0273b7 upstream.
    
    synchronize_rcu() didn't wait for call_rcu() callbacks, so inode wb
    switch may not go to the workqueue after synchronize_rcu().  Thus
    previous scheduled switches was not finished even flushing the
    workqueue, which will cause a NULL pointer dereferenced followed below.
    
      VFS: Busy inodes after unmount of vdd. Self-destruct in 5 seconds.  Have a nice day...
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000278
        evict+0xb3/0x180
        iput+0x1b0/0x230
        inode_switch_wbs_work_fn+0x3c0/0x6a0
        worker_thread+0x4e/0x490
        ? process_one_work+0x410/0x410
        kthread+0xe6/0x100
        ret_from_fork+0x39/0x50
    
    Replace the synchronize_rcu() call with a rcu_barrier() to wait for all
    pending callbacks to finish.  And inc isw_nr_in_flight after call_rcu()
    in inode_switch_wbs() to make more sense.
    
    Link: http://lkml.kernel.org/r/20190429024108.54150-1-jiufei.xue@linux.alibaba.com
    Signed-off-by: Jiufei Xue <jiufei.xue@linux.alibaba.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Suggested-by: Tejun Heo <tj@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfce20eaf18e240e49fe127a1a5f6832698ee5d4
Author: Tejun Heo <tj@kernel.org>
Date:   Tue Dec 12 08:38:30 2017 -0800

    writeback: synchronize sync(2) against cgroup writeback membership switches
    
    commit 7fc5854f8c6efae9e7624970ab49a1eac2faefb1 upstream.
    
    sync_inodes_sb() can race against cgwb (cgroup writeback) membership
    switches and fail to writeback some inodes.  For example, if an inode
    switches to another wb while sync_inodes_sb() is in progress, the new
    wb might not be visible to bdi_split_work_to_wbs() at all or the inode
    might jump from a wb which hasn't issued writebacks yet to one which
    already has.
    
    This patch adds backing_dev_info->wb_switch_rwsem to synchronize cgwb
    switch path against sync_inodes_sb() so that sync_inodes_sb() is
    guaranteed to see all the target wbs and inodes can't jump wbs to
    escape syncing.
    
    v2: Fixed misplaced rwsem init.  Spotted by Jiufei.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Jiufei Xue <xuejiufei@gmail.com>
    Link: http://lkml.kernel.org/r/dc694ae2-f07f-61e1-7097-7c8411cee12d@gmail.com
    Acked-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd042379c6ad4a9420dcea73036c16bbd37f82ca
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Apr 9 23:46:31 2019 -0700

    crypto: arm/aes-neonbs - don't access already-freed walk.iv
    
    commit 767f015ea0b7ab9d60432ff6cd06b664fd71f50f upstream.
    
    If the user-provided IV needs to be aligned to the algorithm's
    alignmask, then skcipher_walk_virt() copies the IV into a new aligned
    buffer walk.iv.  But skcipher_walk_virt() can fail afterwards, and then
    if the caller unconditionally accesses walk.iv, it's a use-after-free.
    
    arm32 xts-aes-neonbs doesn't set an alignmask, so currently it isn't
    affected by this despite unconditionally accessing walk.iv.  However
    this is more subtle than desired, and it was actually broken prior to
    the alignmask being removed by commit cc477bf64573 ("crypto: arm/aes -
    replace bit-sliced OpenSSL NEON code").  Thus, update xts-aes-neonbs to
    start checking the return value of skcipher_walk_virt().
    
    Fixes: e4e7f10bfc40 ("ARM: add support for bit sliced AES using NEON instructions")
    Cc: <stable@vger.kernel.org> # v3.13+
    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 b70e97ae5d8e7bfbfcfd43ccdba908b829df1f5d
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Apr 9 23:46:30 2019 -0700

    crypto: salsa20 - don't access already-freed walk.iv
    
    commit edaf28e996af69222b2cb40455dbb5459c2b875a upstream.
    
    If the user-provided IV needs to be aligned to the algorithm's
    alignmask, then skcipher_walk_virt() copies the IV into a new aligned
    buffer walk.iv.  But skcipher_walk_virt() can fail afterwards, and then
    if the caller unconditionally accesses walk.iv, it's a use-after-free.
    
    salsa20-generic doesn't set an alignmask, so currently it isn't affected
    by this despite unconditionally accessing walk.iv.  However this is more
    subtle than desired, and it was actually broken prior to the alignmask
    being removed by commit b62b3db76f73 ("crypto: salsa20-generic - cleanup
    and convert to skcipher API").
    
    Since salsa20-generic does not update the IV and does not need any IV
    alignment, update it to use req->iv instead of walk.iv.
    
    Fixes: 2407d60872dd ("[CRYPTO] salsa20: Salsa20 stream cipher")
    Cc: stable@vger.kernel.org
    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 6dc48d05964674f56beebbb295fbd9d9b89bde33
Author: Eric Biggers <ebiggers@google.com>
Date:   Sun Mar 31 13:04:16 2019 -0700

    crypto: chacha20poly1305 - set cra_name correctly
    
    commit 5e27f38f1f3f45a0c938299c3a34a2d2db77165a upstream.
    
    If the rfc7539 template is instantiated with specific implementations,
    e.g. "rfc7539(chacha20-generic,poly1305-generic)" rather than
    "rfc7539(chacha20,poly1305)", then the implementation names end up
    included in the instance's cra_name.  This is incorrect because it then
    prevents all users from allocating "rfc7539(chacha20,poly1305)", if the
    highest priority implementations of chacha20 and poly1305 were selected.
    Also, the self-tests aren't run on an instance allocated in this way.
    
    Fix it by setting the instance's cra_name from the underlying
    algorithms' actual cra_names, rather than from the requested names.
    This matches what other templates do.
    
    Fixes: 71ebc4d1b27d ("crypto: chacha20poly1305 - Add a ChaCha20-Poly1305 AEAD construction, RFC7539")
    Cc: <stable@vger.kernel.org> # v4.2+
    Cc: Martin Willi <martin@strongswan.org>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Reviewed-by: Martin Willi <martin@strongswan.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8205536530763083f08bb498ebe4c710954e314
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Apr 18 14:43:02 2019 -0700

    crypto: gcm - fix incompatibility between "gcm" and "gcm_base"
    
    commit f699594d436960160f6d5ba84ed4a222f20d11cd upstream.
    
    GCM instances can be created by either the "gcm" template, which only
    allows choosing the block cipher, e.g. "gcm(aes)"; or by "gcm_base",
    which allows choosing the ctr and ghash implementations, e.g.
    "gcm_base(ctr(aes-generic),ghash-generic)".
    
    However, a "gcm_base" instance prevents a "gcm" instance from being
    registered using the same implementations.  Nor will the instance be
    found by lookups of "gcm".  This can be used as a denial of service.
    Moreover, "gcm_base" instances are never tested by the crypto
    self-tests, even if there are compatible "gcm" tests.
    
    The root cause of these problems is that instances of the two templates
    use different cra_names.  Therefore, fix these problems by making
    "gcm_base" instances set the same cra_name as "gcm" instances, e.g.
    "gcm(aes)" instead of "gcm_base(ctr(aes-generic),ghash-generic)".
    
    This requires extracting the block cipher name from the name of the ctr
    algorithm.  It also requires starting to verify that the algorithms are
    really ctr and ghash, not something else entirely.  But it would be
    bizarre if anyone were actually using non-gcm-compatible algorithms with
    gcm_base, so this shouldn't break anyone in practice.
    
    Fixes: d00aa19b507b ("[CRYPTO] gcm: Allow block cipher parameter")
    Cc: stable@vger.kernel.org
    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 de087dd9f5c67674158cd9baa0c64971ae49ebd3
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Mon Oct 17 15:10:06 2016 +0000

    crypto: gcm - Fix error return code in crypto_gcm_create_common()
    
    commit 9b40f79c08e81234d759f188b233980d7e81df6c upstream.
    
    Fix to return error code -EINVAL from the invalid alg ivsize error
    handling case instead of 0, as done elsewhere in this function.
    
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 064d0c5a9ae6dfc6d7d3e9b943404743e856080b
Author: Kamlakant Patel <kamlakantp@marvell.com>
Date:   Wed Apr 24 11:50:43 2019 +0000

    ipmi:ssif: compare block number correctly for multi-part return messages
    
    commit 55be8658c7e2feb11a5b5b33ee031791dbd23a69 upstream.
    
    According to ipmi spec, block number is a number that is incremented,
    starting with 0, for each new block of message data returned using the
    middle transaction.
    
    Here, the 'blocknum' is data[0] which always starts from zero(0) and
    'ssif_info->multi_pos' starts from 1.
    So, we need to add +1 to blocknum while comparing with multi_pos.
    
    Fixes: 7d6380cd40f79 ("ipmi:ssif: Fix handling of multi-part return messages").
    Reported-by: Kiran Kolukuluru <kirank@ami.com>
    Signed-off-by: Kamlakant Patel <kamlakantp@marvell.com>
    Message-Id: <1556106615-18722-1-git-send-email-kamlakantp@marvell.com>
    [Also added a debug log if the block numbers don't match.]
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Cc: stable@vger.kernel.org # 4.4
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bef039b2419ea35f5acede56820b42e818cdcdcb
Author: Coly Li <colyli@suse.de>
Date:   Thu Apr 25 00:48:33 2019 +0800

    bcache: never set KEY_PTRS of journal key to 0 in journal_reclaim()
    
    commit 1bee2addc0c8470c8aaa65ef0599eeae96dd88bc upstream.
    
    In journal_reclaim() ja->cur_idx of each cache will be update to
    reclaim available journal buckets. Variable 'int n' is used to count how
    many cache is successfully reclaimed, then n is set to c->journal.key
    by SET_KEY_PTRS(). Later in journal_write_unlocked(), a for_each_cache()
    loop will write the jset data onto each cache.
    
    The problem is, if all jouranl buckets on each cache is full, the
    following code in journal_reclaim(),
    
    529 for_each_cache(ca, c, iter) {
    530       struct journal_device *ja = &ca->journal;
    531       unsigned int next = (ja->cur_idx + 1) % ca->sb.njournal_buckets;
    532
    533       /* No space available on this device */
    534       if (next == ja->discard_idx)
    535               continue;
    536
    537       ja->cur_idx = next;
    538       k->ptr[n++] = MAKE_PTR(0,
    539                         bucket_to_sector(c, ca->sb.d[ja->cur_idx]),
    540                         ca->sb.nr_this_dev);
    541 }
    542
    543 bkey_init(k);
    544 SET_KEY_PTRS(k, n);
    
    If there is no available bucket to reclaim, the if() condition at line
    534 will always true, and n remains 0. Then at line 544, SET_KEY_PTRS()
    will set KEY_PTRS field of c->journal.key to 0.
    
    Setting KEY_PTRS field of c->journal.key to 0 is wrong. Because in
    journal_write_unlocked() the journal data is written in following loop,
    
    649     for (i = 0; i < KEY_PTRS(k); i++) {
    650-671         submit journal data to cache device
    672     }
    
    If KEY_PTRS field is set to 0 in jouranl_reclaim(), the journal data
    won't be written to cache device here. If system crahed or rebooted
    before bkeys of the lost journal entries written into btree nodes, data
    corruption will be reported during bcache reload after rebooting the
    system.
    
    Indeed there is only one cache in a cache set, there is no need to set
    KEY_PTRS field in journal_reclaim() at all. But in order to keep the
    for_each_cache() logic consistent for now, this patch fixes the above
    problem by not setting 0 KEY_PTRS of journal key, if there is no bucket
    available to reclaim.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5651075a1ce3ccc59690f72f32dac469f3e2e52c
Author: Liang Chen <liangchen.linux@gmail.com>
Date:   Thu Apr 25 00:48:31 2019 +0800

    bcache: fix a race between cache register and cacheset unregister
    
    commit a4b732a248d12cbdb46999daf0bf288c011335eb upstream.
    
    There is a race between cache device register and cache set unregister.
    For an already registered cache device, register_bcache will call
    bch_is_open to iterate through all cachesets and check every cache
    there. The race occurs if cache_set_free executes at the same time and
    clears the caches right before ca is dereferenced in bch_is_open_cache.
    To close the race, let's make sure the clean up work is protected by
    the bch_register_lock as well.
    
    This issue can be reproduced as follows,
    while true; do echo /dev/XXX> /sys/fs/bcache/register ; done&
    while true; do echo 1> /sys/block/XXX/bcache/set/unregister ; done &
    
    and results in the following oops,
    
    [  +0.000053] BUG: unable to handle kernel NULL pointer dereference at 0000000000000998
    [  +0.000457] #PF error: [normal kernel read fault]
    [  +0.000464] PGD 800000003ca9d067 P4D 800000003ca9d067 PUD 3ca9c067 PMD 0
    [  +0.000388] Oops: 0000 [#1] SMP PTI
    [  +0.000269] CPU: 1 PID: 3266 Comm: bash Not tainted 5.0.0+ #6
    [  +0.000346] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-2.fc28 04/01/2014
    [  +0.000472] RIP: 0010:register_bcache+0x1829/0x1990 [bcache]
    [  +0.000344] Code: b0 48 83 e8 50 48 81 fa e0 e1 10 c0 0f 84 a9 00 00 00 48 89 c6 48 89 ca 0f b7 ba 54 04 00 00 4c 8b 82 60 0c 00 00 85 ff 74 2f <49> 3b a8 98 09 00 00 74 4e 44 8d 47 ff 31 ff 49 c1 e0 03 eb 0d
    [  +0.000839] RSP: 0018:ffff92ee804cbd88 EFLAGS: 00010202
    [  +0.000328] RAX: ffffffffc010e190 RBX: ffff918b5c6b5000 RCX: ffff918b7d8e0000
    [  +0.000399] RDX: ffff918b7d8e0000 RSI: ffffffffc010e190 RDI: 0000000000000001
    [  +0.000398] RBP: ffff918b7d318340 R08: 0000000000000000 R09: ffffffffb9bd2d7a
    [  +0.000385] R10: ffff918b7eb253c0 R11: ffffb95980f51200 R12: ffffffffc010e1a0
    [  +0.000411] R13: fffffffffffffff2 R14: 000000000000000b R15: ffff918b7e232620
    [  +0.000384] FS:  00007f955bec2740(0000) GS:ffff918b7eb00000(0000) knlGS:0000000000000000
    [  +0.000420] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  +0.000801] CR2: 0000000000000998 CR3: 000000003cad6000 CR4: 00000000001406e0
    [  +0.000837] Call Trace:
    [  +0.000682]  ? _cond_resched+0x10/0x20
    [  +0.000691]  ? __kmalloc+0x131/0x1b0
    [  +0.000710]  kernfs_fop_write+0xfa/0x170
    [  +0.000733]  __vfs_write+0x2e/0x190
    [  +0.000688]  ? inode_security+0x10/0x30
    [  +0.000698]  ? selinux_file_permission+0xd2/0x120
    [  +0.000752]  ? security_file_permission+0x2b/0x100
    [  +0.000753]  vfs_write+0xa8/0x1a0
    [  +0.000676]  ksys_write+0x4d/0xb0
    [  +0.000699]  do_syscall_64+0x3a/0xf0
    [  +0.000692]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Signed-off-by: Liang Chen <liangchen.linux@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 686e4352e3d8ad58bfa0b7fc0243d7ef503e32c7
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Apr 17 11:30:30 2019 +0100

    Btrfs: do not start a transaction at iterate_extent_inodes()
    
    commit bfc61c36260ca990937539cd648ede3cd749bc10 upstream.
    
    When finding out which inodes have references on a particular extent, done
    by backref.c:iterate_extent_inodes(), from the BTRFS_IOC_LOGICAL_INO (both
    v1 and v2) ioctl and from scrub we use the transaction join API to grab a
    reference on the currently running transaction, since in order to give
    accurate results we need to inspect the delayed references of the currently
    running transaction.
    
    However, if there is currently no running transaction, the join operation
    will create a new transaction. This is inefficient as the transaction will
    eventually be committed, doing unnecessary IO and introducing a potential
    point of failure that will lead to a transaction abort due to -ENOSPC, as
    recently reported [1].
    
    That's because the join, creates the transaction but does not reserve any
    space, so when attempting to update the root item of the root passed to
    btrfs_join_transaction(), during the transaction commit, we can end up
    failling with -ENOSPC. Users of a join operation are supposed to actually
    do some filesystem changes and reserve space by some means, which is not
    the case of iterate_extent_inodes(), it is a read-only operation for all
    contextes from which it is called.
    
    The reported [1] -ENOSPC failure stack trace is the following:
    
     heisenberg kernel: ------------[ cut here ]------------
     heisenberg kernel: BTRFS: Transaction aborted (error -28)
     heisenberg kernel: WARNING: CPU: 0 PID: 7137 at fs/btrfs/root-tree.c:136 btrfs_update_root+0x22b/0x320 [btrfs]
    (...)
     heisenberg kernel: CPU: 0 PID: 7137 Comm: btrfs-transacti Not tainted 4.19.0-4-amd64 #1 Debian 4.19.28-2
     heisenberg kernel: Hardware name: FUJITSU LIFEBOOK U757/FJNB2A5, BIOS Version 1.21 03/19/2018
     heisenberg kernel: RIP: 0010:btrfs_update_root+0x22b/0x320 [btrfs]
    (...)
     heisenberg kernel: RSP: 0018:ffffb5448828bd40 EFLAGS: 00010286
     heisenberg kernel: RAX: 0000000000000000 RBX: ffff8ed56bccef50 RCX: 0000000000000006
     heisenberg kernel: RDX: 0000000000000007 RSI: 0000000000000092 RDI: ffff8ed6bda166a0
     heisenberg kernel: RBP: 00000000ffffffe4 R08: 00000000000003df R09: 0000000000000007
     heisenberg kernel: R10: 0000000000000000 R11: 0000000000000001 R12: ffff8ed63396a078
     heisenberg kernel: R13: ffff8ed092d7c800 R14: ffff8ed64f5db028 R15: ffff8ed6bd03d068
     heisenberg kernel: FS:  0000000000000000(0000) GS:ffff8ed6bda00000(0000) knlGS:0000000000000000
     heisenberg kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     heisenberg kernel: CR2: 00007f46f75f8000 CR3: 0000000310a0a002 CR4: 00000000003606f0
     heisenberg kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     heisenberg kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     heisenberg kernel: Call Trace:
     heisenberg kernel:  commit_fs_roots+0x166/0x1d0 [btrfs]
     heisenberg kernel:  ? _cond_resched+0x15/0x30
     heisenberg kernel:  ? btrfs_run_delayed_refs+0xac/0x180 [btrfs]
     heisenberg kernel:  btrfs_commit_transaction+0x2bd/0x870 [btrfs]
     heisenberg kernel:  ? start_transaction+0x9d/0x3f0 [btrfs]
     heisenberg kernel:  transaction_kthread+0x147/0x180 [btrfs]
     heisenberg kernel:  ? btrfs_cleanup_transaction+0x530/0x530 [btrfs]
     heisenberg kernel:  kthread+0x112/0x130
     heisenberg kernel:  ? kthread_bind+0x30/0x30
     heisenberg kernel:  ret_from_fork+0x35/0x40
     heisenberg kernel: ---[ end trace 05de912e30e012d9 ]---
    
    So fix that by using the attach API, which does not create a transaction
    when there is currently no running transaction.
    
    [1] https://lore.kernel.org/linux-btrfs/b2a668d7124f1d3e410367f587926f622b3f03a4.camel@scientia.net/
    
    Reported-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b268b6e501ed91638ed2effa3e790abe0359b6fc
Author: Debabrata Banerjee <dbanerje@akamai.com>
Date:   Tue Apr 30 23:08:15 2019 -0400

    ext4: fix ext4_show_options for file systems w/o journal
    
    commit 50b29d8f033a7c88c5bc011abc2068b1691ab755 upstream.
    
    Instead of removing EXT4_MOUNT_JOURNAL_CHECKSUM from s_def_mount_opt as
    I assume was intended, all other options were blown away leading to
    _ext4_show_options() output being incorrect.
    
    Fixes: 1e381f60dad9 ("ext4: do not allow journal_opts for fs w/o journal")
    Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f3b9c26f191b435c31a9ae3a14d5cd3e96e3badc
Author: Kirill Tkhai <ktkhai@virtuozzo.com>
Date:   Thu Apr 25 13:06:18 2019 -0400

    ext4: actually request zeroing of inode table after grow
    
    commit 310a997fd74de778b9a4848a64be9cda9f18764a upstream.
    
    It is never possible, that number of block groups decreases,
    since only online grow is supported.
    
    But after a growing occured, we have to zero inode tables
    for just created new block groups.
    
    Fixes: 19c5246d2516 ("ext4: add new online resize interface")
    Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5100e7fa78e44dd0365df53003947b16197943a
Author: Sergei Trofimovich <slyfox@gentoo.org>
Date:   Sun Mar 10 21:24:15 2019 +0000

    tty/vt: fix write/write race in ioctl(KDSKBSENT) handler
    
    commit 46ca3f735f345c9d87383dd3a09fa5d43870770e upstream.
    
    The bug manifests as an attempt to access deallocated memory:
    
        BUG: unable to handle kernel paging request at ffff9c8735448000
        #PF error: [PROT] [WRITE]
        PGD 288a05067 P4D 288a05067 PUD 288a07067 PMD 7f60c2063 PTE 80000007f5448161
        Oops: 0003 [#1] PREEMPT SMP
        CPU: 6 PID: 388 Comm: loadkeys Tainted: G         C        5.0.0-rc6-00153-g5ded5871030e #91
        Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./H77M-D3H, BIOS F12 11/14/2013
        RIP: 0010:__memmove+0x81/0x1a0
        Code: 4c 89 4f 10 4c 89 47 18 48 8d 7f 20 73 d4 48 83 c2 20 e9 a2 00 00 00 66 90 48 89 d1 4c 8b 5c 16 f8 4c 8d 54 17 f8 48 c1 e9 03 <f3> 48 a5 4d 89 1a e9 0c 01 00 00 0f 1f 40 00 48 89 d1 4c 8b 1e 49
        RSP: 0018:ffffa1b9002d7d08 EFLAGS: 00010203
        RAX: ffff9c873541af43 RBX: ffff9c873541af43 RCX: 00000c6f105cd6bf
        RDX: 0000637882e986b6 RSI: ffff9c8735447ffb RDI: ffff9c8735447ffb
        RBP: ffff9c8739cd3800 R08: ffff9c873b802f00 R09: 00000000fffff73b
        R10: ffffffffb82b35f1 R11: 00505b1b004d5b1b R12: 0000000000000000
        R13: ffff9c873541af3d R14: 000000000000000b R15: 000000000000000c
        FS:  00007f450c390580(0000) GS:ffff9c873f180000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: ffff9c8735448000 CR3: 00000007e213c002 CR4: 00000000000606e0
        Call Trace:
         vt_do_kdgkb_ioctl+0x34d/0x440
         vt_ioctl+0xba3/0x1190
         ? __bpf_prog_run32+0x39/0x60
         ? mem_cgroup_commit_charge+0x7b/0x4e0
         tty_ioctl+0x23f/0x920
         ? preempt_count_sub+0x98/0xe0
         ? __seccomp_filter+0x67/0x600
         do_vfs_ioctl+0xa2/0x6a0
         ? syscall_trace_enter+0x192/0x2d0
         ksys_ioctl+0x3a/0x70
         __x64_sys_ioctl+0x16/0x20
         do_syscall_64+0x54/0xe0
         entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    The bug manifests on systemd systems with multiple vtcon devices:
      # cat /sys/devices/virtual/vtconsole/vtcon0/name
      (S) dummy device
      # cat /sys/devices/virtual/vtconsole/vtcon1/name
      (M) frame buffer device
    
    There systemd runs 'loadkeys' tool in tapallel for each vtcon
    instance. This causes two parallel ioctl(KDSKBSENT) calls to
    race into adding the same entry into 'func_table' array at:
    
        drivers/tty/vt/keyboard.c:vt_do_kdgkb_ioctl()
    
    The function has no locking around writes to 'func_table'.
    
    The simplest reproducer is to have initrams with the following
    init on a 8-CPU machine x86_64:
    
        #!/bin/sh
    
        loadkeys -q windowkeys ru4 &
        loadkeys -q windowkeys ru4 &
        loadkeys -q windowkeys ru4 &
        loadkeys -q windowkeys ru4 &
    
        loadkeys -q windowkeys ru4 &
        loadkeys -q windowkeys ru4 &
        loadkeys -q windowkeys ru4 &
        loadkeys -q windowkeys ru4 &
        wait
    
    The change adds lock on write path only. Reads are still racy.
    
    CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    CC: Jiri Slaby <jslaby@suse.com>
    Link: https://lkml.org/lkml/2019/2/17/256
    Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 592a36c59f4cce88daee1423a973b4b215cfd8aa
Author: Steve Twiss <stwiss.opensource@diasemi.com>
Date:   Fri Apr 26 14:33:35 2019 +0100

    mfd: da9063: Fix OTP control register names to match datasheets for DA9063/63L
    
    commit 6b4814a9451add06d457e198be418bf6a3e6a990 upstream.
    
    Mismatch between what is found in the Datasheets for DA9063 and DA9063L
    provided by Dialog Semiconductor, and the register names provided in the
    MFD registers file. The changes are for the OTP (one-time-programming)
    control registers. The two naming errors are OPT instead of OTP, and
    COUNT instead of CONT (i.e. control).
    
    Cc: Stable <stable@vger.kernel.org>
    Signed-off-by: Steve Twiss <stwiss.opensource@diasemi.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3a74fbc42cad54d7e6f406a6f393357458e6499
Author: Shuning Zhang <sunny.s.zhang@oracle.com>
Date:   Mon May 13 17:15:56 2019 -0700

    ocfs2: fix ocfs2 read inode data panic in ocfs2_iget
    
    commit e091eab028f9253eac5c04f9141bbc9d170acab3 upstream.
    
    In some cases, ocfs2_iget() reads the data of inode, which has been
    deleted for some reason.  That will make the system panic.  So We should
    judge whether this inode has been deleted, and tell the caller that the
    inode is a bad inode.
    
    For example, the ocfs2 is used as the backed of nfs, and the client is
    nfsv3.  This issue can be reproduced by the following steps.
    
    on the nfs server side,
    ..../patha/pathb
    
    Step 1: The process A was scheduled before calling the function fh_verify.
    
    Step 2: The process B is removing the 'pathb', and just completed the call
    to function dput.  Then the dentry of 'pathb' has been deleted from the
    dcache, and all ancestors have been deleted also.  The relationship of
    dentry and inode was deleted through the function hlist_del_init.  The
    following is the call stack.
    dentry_iput->hlist_del_init(&dentry->d_u.d_alias)
    
    At this time, the inode is still in the dcache.
    
    Step 3: The process A call the function ocfs2_get_dentry, which get the
    inode from dcache.  Then the refcount of inode is 1.  The following is the
    call stack.
    nfsd3_proc_getacl->fh_verify->exportfs_decode_fh->fh_to_dentry(ocfs2_get_dentry)
    
    Step 4: Dirty pages are flushed by bdi threads.  So the inode of 'patha'
    is evicted, and this directory was deleted.  But the inode of 'pathb'
    can't be evicted, because the refcount of the inode was 1.
    
    Step 5: The process A keep running, and call the function
    reconnect_path(in exportfs_decode_fh), which call function
    ocfs2_get_parent of ocfs2.  Get the block number of parent
    directory(patha) by the name of ...  Then read the data from disk by the
    block number.  But this inode has been deleted, so the system panic.
    
    Process A                                             Process B
    1. in nfsd3_proc_getacl                   |
    2.                                        |        dput
    3. fh_to_dentry(ocfs2_get_dentry)         |
    4. bdi flush dirty cache                  |
    5. ocfs2_iget                             |
    
    [283465.542049] OCFS2: ERROR (device sdp): ocfs2_validate_inode_block:
    Invalid dinode #580640: OCFS2_VALID_FL not set
    
    [283465.545490] Kernel panic - not syncing: OCFS2: (device sdp): panic forced
    after error
    
    [283465.546889] CPU: 5 PID: 12416 Comm: nfsd Tainted: G        W
    4.1.12-124.18.6.el6uek.bug28762940v3.x86_64 #2
    [283465.548382] Hardware name: VMware, Inc. VMware Virtual Platform/440BX
    Desktop Reference Platform, BIOS 6.00 09/21/2015
    [283465.549657]  0000000000000000 ffff8800a56fb7b8 ffffffff816e839c
    ffffffffa0514758
    [283465.550392]  000000000008dc20 ffff8800a56fb838 ffffffff816e62d3
    0000000000000008
    [283465.551056]  ffff880000000010 ffff8800a56fb848 ffff8800a56fb7e8
    ffff88005df9f000
    [283465.551710] Call Trace:
    [283465.552516]  [<ffffffff816e839c>] dump_stack+0x63/0x81
    [283465.553291]  [<ffffffff816e62d3>] panic+0xcb/0x21b
    [283465.554037]  [<ffffffffa04e66b0>] ocfs2_handle_error+0xf0/0xf0 [ocfs2]
    [283465.554882]  [<ffffffffa04e7737>] __ocfs2_error+0x67/0x70 [ocfs2]
    [283465.555768]  [<ffffffffa049c0f9>] ocfs2_validate_inode_block+0x229/0x230
    [ocfs2]
    [283465.556683]  [<ffffffffa047bcbc>] ocfs2_read_blocks+0x46c/0x7b0 [ocfs2]
    [283465.557408]  [<ffffffffa049bed0>] ? ocfs2_inode_cache_io_unlock+0x20/0x20
    [ocfs2]
    [283465.557973]  [<ffffffffa049f0eb>] ocfs2_read_inode_block_full+0x3b/0x60
    [ocfs2]
    [283465.558525]  [<ffffffffa049f5ba>] ocfs2_iget+0x4aa/0x880 [ocfs2]
    [283465.559082]  [<ffffffffa049146e>] ocfs2_get_parent+0x9e/0x220 [ocfs2]
    [283465.559622]  [<ffffffff81297c05>] reconnect_path+0xb5/0x300
    [283465.560156]  [<ffffffff81297f46>] exportfs_decode_fh+0xf6/0x2b0
    [283465.560708]  [<ffffffffa062faf0>] ? nfsd_proc_getattr+0xa0/0xa0 [nfsd]
    [283465.561262]  [<ffffffff810a8196>] ? prepare_creds+0x26/0x110
    [283465.561932]  [<ffffffffa0630860>] fh_verify+0x350/0x660 [nfsd]
    [283465.562862]  [<ffffffffa0637804>] ? nfsd_cache_lookup+0x44/0x630 [nfsd]
    [283465.563697]  [<ffffffffa063a8b9>] nfsd3_proc_getattr+0x69/0xf0 [nfsd]
    [283465.564510]  [<ffffffffa062cf60>] nfsd_dispatch+0xe0/0x290 [nfsd]
    [283465.565358]  [<ffffffffa05eb892>] ? svc_tcp_adjust_wspace+0x12/0x30
    [sunrpc]
    [283465.566272]  [<ffffffffa05ea652>] svc_process_common+0x412/0x6a0 [sunrpc]
    [283465.567155]  [<ffffffffa05eaa03>] svc_process+0x123/0x210 [sunrpc]
    [283465.568020]  [<ffffffffa062c90f>] nfsd+0xff/0x170 [nfsd]
    [283465.568962]  [<ffffffffa062c810>] ? nfsd_destroy+0x80/0x80 [nfsd]
    [283465.570112]  [<ffffffff810a622b>] kthread+0xcb/0xf0
    [283465.571099]  [<ffffffff810a6160>] ? kthread_create_on_node+0x180/0x180
    [283465.572114]  [<ffffffff816f11b8>] ret_from_fork+0x58/0x90
    [283465.573156]  [<ffffffff810a6160>] ? kthread_create_on_node+0x180/0x180
    
    Link: http://lkml.kernel.org/r/1554185919-3010-1-git-send-email-sunny.s.zhang@oracle.com
    Signed-off-by: Shuning Zhang <sunny.s.zhang@oracle.com>
    Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: piaojun <piaojun@huawei.com>
    Cc: "Gang He" <ghe@suse.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b614485b6b93dbb2f6202341c60594fcdc110d5c
Author: Jiri Kosina <jkosina@suse.cz>
Date:   Tue May 14 15:41:38 2019 -0700

    mm/mincore.c: make mincore() more conservative
    
    commit 134fca9063ad4851de767d1768180e5dede9a881 upstream.
    
    The semantics of what mincore() considers to be resident is not
    completely clear, but Linux has always (since 2.3.52, which is when
    mincore() was initially done) treated it as "page is available in page
    cache".
    
    That's potentially a problem, as that [in]directly exposes
    meta-information about pagecache / memory mapping state even about
    memory not strictly belonging to the process executing the syscall,
    opening possibilities for sidechannel attacks.
    
    Change the semantics of mincore() so that it only reveals pagecache
    information for non-anonymous mappings that belog to files that the
    calling process could (if it tried to) successfully open for writing;
    otherwise we'd be including shared non-exclusive mappings, which
    
     - is the sidechannel
    
     - is not the usecase for mincore(), as that's primarily used for data,
       not (shared) text
    
    [jkosina@suse.cz: v2]
      Link: http://lkml.kernel.org/r/20190312141708.6652-2-vbabka@suse.cz
    [mhocko@suse.com: restructure can_do_mincore() conditions]
    Link: http://lkml.kernel.org/r/nycvar.YFH.7.76.1903062342020.19912@cbobk.fhfr.pm
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Acked-by: Josh Snyder <joshs@netflix.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Originally-by: Linus Torvalds <torvalds@linux-foundation.org>
    Originally-by: Dominique Martinet <asmadeus@codewreck.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: Kevin Easton <kevin@guarana.org>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Cyril Hrubis <chrubis@suse.cz>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Kirill A. Shutemov <kirill@shutemov.name>
    Cc: Daniel Gruss <daniel@gruss.cc>
    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 80cc516ed7830eca17f437c9a21431e5cd731715
Author: Curtis Malainey <cujomalainey@chromium.org>
Date:   Fri May 3 12:32:14 2019 -0700

    ASoC: RT5677-SPI: Disable 16Bit SPI Transfers
    
    commit a46eb523220e242affb9a6bc9bb8efc05f4f7459 upstream.
    
    The current algorithm allows 3 types of transfers, 16bit, 32bit and
    burst. According to Realtek, 16bit transfers have a special restriction
    in that it is restricted to the memory region of
    0x18020000 ~ 0x18021000. This region is the memory location of the I2C
    registers. The current algorithm does not uphold this restriction and
    therefore fails to complete writes.
    
    Since this has been broken for some time it likely no one is using it.
    Better to simply disable the 16 bit writes. This will allow users to
    properly load firmware over SPI without data corruption.
    
    Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
    Reviewed-by: Ben Zhang <benzh@chromium.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6bf706cee3f8164baf74d78e0fcca839fe1c486
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Wed May 1 15:29:38 2019 +0100

    ASoC: max98090: Fix restore of DAPM Muxes
    
    commit ecb2795c08bc825ebd604997e5be440b060c5b18 upstream.
    
    The max98090 driver defines 3 DAPM muxes; one for the right line output
    (LINMOD Mux), one for the left headphone mixer source (MIXHPLSEL Mux)
    and one for the right headphone mixer source (MIXHPRSEL Mux). The same
    bit is used for the mux as well as the DAPM enable, and although the mux
    can be correctly configured, after playback has completed, the mux will
    be reset during the disable phase. This is preventing the state of these
    muxes from being saved and restored correctly on system reboot. Fix this
    by marking these muxes as SND_SOC_NOPM.
    
    Note this has been verified this on the Tegra124 Nyan Big which features
    the MAX98090 codec.
    
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a8188c68e0a83b34d53ece586cd6372ef21425a
Author: Kailang Yang <kailang@realtek.com>
Date:   Fri Apr 26 16:35:41 2019 +0800

    ALSA: hda/realtek - EAPD turn on later
    
    commit 607ca3bd220f4022e6f5356026b19dafc363863a upstream.
    
    Let EAPD turn on after set pin output.
    
    [ NOTE: This change is supposed to reduce the possible click noises at
      (runtime) PM resume.  The functionality should be same (i.e. the
      verbs are executed correctly) no matter which order is, so this
      should be safe to apply for all codecs -- tiwai ]
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bbb08c8ab6a7bd4a08a8a19cfceba57812efc18
Author: Hui Wang <hui.wang@canonical.com>
Date:   Mon May 6 22:09:32 2019 +0800

    ALSA: hda/hdmi - Consider eld_valid when reporting jack event
    
    commit 7f641e26a6df9269cb25dd7a4b0a91d6586ed441 upstream.
    
    On the machines with AMD GPU or Nvidia GPU, we often meet this issue:
    after s3, there are 4 HDMI/DP audio devices in the gnome-sound-setting
    even there is no any monitors plugged.
    
    When this problem happens, we check the /proc/asound/cardX/eld#N.M, we
    will find the monitor_present=1, eld_valid=0.
    
    The root cause is BIOS or GPU driver makes the PRESENCE valid even no
    monitor plugged, and of course the driver will not get the valid
    eld_data subsequently.
    
    In this situation, we should not report the jack_plugged event, to do
    so, let us change the function hdmi_present_sense_via_verbs(). In this
    function, it reads the pin_sense via snd_hda_pin_sense(), after
    calling this function, the jack_dirty is 0, and before exiting
    via_verbs(), we change the shadow pin_sense according to both
    monitor_present and eld_valid, then in the snd_hda_jack_report_sync(),
    since the jack_dirty is still 0, it will report jack event according
    to this modified shadow pin_sense.
    
    After this change, the driver will not report Jack_is_plugged event
    through hdmi_present_sense_via_verbs() if monitor_present is 1 and
    eld_valid is 0.
    
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d8956305ae8529b15e492029c1b50bbfdf30ba5
Author: Wenwen Wang <wang6495@umn.edu>
Date:   Sat Apr 27 01:06:46 2019 -0500

    ALSA: usb-audio: Fix a memory leak bug
    
    commit cb5173594d50c72b7bfa14113dfc5084b4d2f726 upstream.
    
    In parse_audio_selector_unit(), the string array 'namelist' is allocated
    through kmalloc_array(), and each string pointer in this array, i.e.,
    'namelist[]', is allocated through kmalloc() in the following for loop.
    Then, a control instance 'kctl' is created by invoking snd_ctl_new1(). If
    an error occurs during the creation process, the string array 'namelist',
    including all string pointers in the array 'namelist[]', should be freed,
    before the error code ENOMEM is returned. However, the current code does
    not free 'namelist[]', resulting in memory leaks.
    
    To fix the above issue, free all string pointers 'namelist[]' in a loop.
    
    Signed-off-by: Wenwen Wang <wang6495@umn.edu>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1c1888ad6c930ee7cdc7ca01069027462dfb37f
Author: Eric Biggers <ebiggers@google.com>
Date:   Sun Mar 31 13:04:13 2019 -0700

    crypto: x86/crct10dif-pcl - fix use via crypto_shash_digest()
    
    commit dec3d0b1071a0f3194e66a83d26ecf4aa8c5910e upstream.
    
    The ->digest() method of crct10dif-pclmul reads the current CRC value
    from the shash_desc context.  But this value is uninitialized, causing
    crypto_shash_digest() to compute the wrong result.  Fix it.
    
    Probably this wasn't noticed before because lib/crc-t10dif.c only uses
    crypto_shash_update(), not crypto_shash_digest().  Likewise,
    crypto_shash_digest() is not yet tested by the crypto self-tests because
    those only test the ahash API which only uses shash init/update/final.
    
    Fixes: 0b95a7f85718 ("crypto: crct10dif - Glue code to cast accelerated CRCT10DIF assembly as a crypto transform")
    Cc: <stable@vger.kernel.org> # v3.11+
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    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 2ee7c2310cd075268be8bf02d966b76ac3824cdb
Author: Eric Biggers <ebiggers@google.com>
Date:   Sun Mar 31 13:04:12 2019 -0700

    crypto: crct10dif-generic - fix use via crypto_shash_digest()
    
    commit 307508d1072979f4435416f87936f87eaeb82054 upstream.
    
    The ->digest() method of crct10dif-generic reads the current CRC value
    from the shash_desc context.  But this value is uninitialized, causing
    crypto_shash_digest() to compute the wrong result.  Fix it.
    
    Probably this wasn't noticed before because lib/crc-t10dif.c only uses
    crypto_shash_update(), not crypto_shash_digest().  Likewise,
    crypto_shash_digest() is not yet tested by the crypto self-tests because
    those only test the ahash API which only uses shash init/update/final.
    
    This bug was detected by my patches that improve testmgr to fuzz
    algorithms against their generic implementation.
    
    Fixes: 2d31e518a428 ("crypto: crct10dif - Wrap crc_t10dif function all to use crypto transform framework")
    Cc: <stable@vger.kernel.org> # v3.11+
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    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 2ee0dd38a0a0bcd066791363147ab58dbaac39fd
Author: Daniel Axtens <dja@axtens.net>
Date:   Fri Mar 15 13:09:01 2019 +1100

    crypto: vmx - fix copy-paste error in CTR mode
    
    commit dcf7b48212c0fab7df69e84fab22d6cb7c8c0fb9 upstream.
    
    The original assembly imported from OpenSSL has two copy-paste
    errors in handling CTR mode. When dealing with a 2 or 3 block tail,
    the code branches to the CBC decryption exit path, rather than to
    the CTR exit path.
    
    This leads to corruption of the IV, which leads to subsequent blocks
    being corrupted.
    
    This can be detected with libkcapi test suite, which is available at
    https://github.com/smuellerDD/libkcapi
    
    Reported-by: Ondrej Mosnáček <omosnacek@gmail.com>
    Fixes: 5c380d623ed3 ("crypto: vmx - Add support for VMS instructions by ASM")
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Axtens <dja@axtens.net>
    Tested-by: Michael Ellerman <mpe@ellerman.id.au>
    Tested-by: Ondrej Mosnacek <omosnacek@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7dee0816e5d71cfdf924e21f4a21f51fd109b89
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Tue Mar 5 19:33:54 2019 +0800

    ARM: exynos: Fix a leaked reference by adding missing of_node_put
    
    commit 629266bf7229cd6a550075f5961f95607b823b59 upstream.
    
    The call to of_get_next_child returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with warnings like:
        arch/arm/mach-exynos/firmware.c:201:2-8: ERROR: missing of_node_put;
            acquired a node pointer with refcount incremented on line 193,
            but without a corresponding object release within this function.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce814dc7e8110c5ea6da1ba49a27d099c937824b
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue May 14 13:24:40 2019 -0700

    x86/speculation/mds: Improve CPU buffer clear documentation
    
    commit 9d8d0294e78a164d407133dea05caf4b84247d6a upstream.
    
    On x86_64, all returns to usermode go through
    prepare_exit_to_usermode(), with the sole exception of do_nmi().
    This even includes machine checks -- this was added several years
    ago to support MCE recovery.  Update the documentation.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Frederic Weisbecker <frederic@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jon Masters <jcm@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Fixes: 04dcbdb80578 ("x86/speculation/mds: Clear CPU buffers on exit to user")
    Link: http://lkml.kernel.org/r/999fa9e126ba6a48e9d214d2f18dbde5c62ac55c.1557865329.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d68e2bf383458e08f33c9995c4252e11367a7bf
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue May 14 13:24:39 2019 -0700

    x86/speculation/mds: Revert CPU buffer clear on double fault exit
    
    commit 88640e1dcd089879530a49a8d212d1814678dfe7 upstream.
    
    The double fault ESPFIX path doesn't return to user mode at all --
    it returns back to the kernel by simulating a #GP fault.
    prepare_exit_to_usermode() will run on the way out of
    general_protection before running user code.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Frederic Weisbecker <frederic@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jon Masters <jcm@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Fixes: 04dcbdb80578 ("x86/speculation/mds: Clear CPU buffers on exit to user")
    Link: http://lkml.kernel.org/r/ac97612445c0a44ee10374f6ea79c222fe22a5c4.1557865329.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>