commit 7edd66cf61670d2d0c31f89cb3a247016e489a8a
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Apr 23 10:30:24 2020 +0200

    Linux 4.19.118

commit e0b80b7d646646273af0770a2bd4d105719387e3
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Tue Apr 21 14:58:22 2020 +0200

    bpf: fix buggy r0 retval refinement for tracing helpers
    
    [ no upstream commit ]
    
    See the glory details in 100605035e15 ("bpf: Verifier, do_refine_retval_range
    may clamp umin to 0 incorrectly") for why 849fa50662fb ("bpf/verifier: refine
    retval R0 state for bpf_get_stack helper") is buggy. The whole series however
    is not suitable for stable since it adds significant amount [0] of verifier
    complexity in order to add 32bit subreg tracking. Something simpler is needed.
    
    Unfortunately, reverting 849fa50662fb ("bpf/verifier: refine retval R0 state
    for bpf_get_stack helper") or just cherry-picking 100605035e15 ("bpf: Verifier,
    do_refine_retval_range may clamp umin to 0 incorrectly") is not an option since
    it will break existing tracing programs badly (at least those that are using
    bpf_get_stack() and bpf_probe_read_str() helpers). Not fixing it in stable is
    also not an option since on 4.19 kernels an error will cause a soft-lockup due
    to hitting dead-code sanitized branch since we don't hard-wire such branches
    in old kernels yet. But even then for 5.x 849fa50662fb ("bpf/verifier: refine
    retval R0 state for bpf_get_stack helper") would cause wrong bounds on the
    verifier simluation when an error is hit.
    
    In one of the earlier iterations of mentioned patch series for upstream there
    was the concern that just using smax_value in do_refine_retval_range() would
    nuke bounds by subsequent <<32 >>32 shifts before the comparison against 0 [1]
    which eventually led to the 32bit subreg tracking in the first place. While I
    initially went for implementing the idea [1] to pattern match the two shift
    operations, it turned out to be more complex than actually needed, meaning, we
    could simply treat do_refine_retval_range() similarly to how we branch off
    verification for conditionals or under speculation, that is, pushing a new
    reg state to the stack for later verification. This means, instead of verifying
    the current path with the ret_reg in [S32MIN, msize_max_value] interval where
    later bounds would get nuked, we split this into two: i) for the success case
    where ret_reg can be in [0, msize_max_value], and ii) for the error case with
    ret_reg known to be in interval [S32MIN, -1]. Latter will preserve the bounds
    during these shift patterns and can match reg < 0 test. test_progs also succeed
    with this approach.
    
      [0] https://lore.kernel.org/bpf/158507130343.15666.8018068546764556975.stgit@john-Precision-5820-Tower/
      [1] https://lore.kernel.org/bpf/158015334199.28573.4940395881683556537.stgit@john-XPS-13-9370/T/#m2e0ad1d5949131014748b6daa48a3495e7f0456d
    
    Fixes: 849fa50662fb ("bpf/verifier: refine retval R0 state for bpf_get_stack helper")
    Reported-by: Lorenzo Fontana <fontanalorenz@gmail.com>
    Reported-by: Leonardo Di Donato <leodidonato@gmail.com>
    Reported-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Tested-by: John Fastabend <john.fastabend@gmail.com>
    Tested-by: Lorenzo Fontana <fontanalorenz@gmail.com>
    Tested-by: Leonardo Di Donato <leodidonato@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18779eac17b5df9dff57138d07631573553a41d4
Author: Waiman Long <longman@redhat.com>
Date:   Sat Mar 21 21:11:24 2020 -0400

    KEYS: Don't write out to userspace while holding key semaphore
    
    commit d3ec10aa95819bff18a0d936b18884c7816d0914 upstream.
    
    A lockdep circular locking dependency report was seen when running a
    keyutils test:
    
    [12537.027242] ======================================================
    [12537.059309] WARNING: possible circular locking dependency detected
    [12537.088148] 4.18.0-147.7.1.el8_1.x86_64+debug #1 Tainted: G OE    --------- -  -
    [12537.125253] ------------------------------------------------------
    [12537.153189] keyctl/25598 is trying to acquire lock:
    [12537.175087] 000000007c39f96c (&mm->mmap_sem){++++}, at: __might_fault+0xc4/0x1b0
    [12537.208365]
    [12537.208365] but task is already holding lock:
    [12537.234507] 000000003de5b58d (&type->lock_class){++++}, at: keyctl_read_key+0x15a/0x220
    [12537.270476]
    [12537.270476] which lock already depends on the new lock.
    [12537.270476]
    [12537.307209]
    [12537.307209] the existing dependency chain (in reverse order) is:
    [12537.340754]
    [12537.340754] -> #3 (&type->lock_class){++++}:
    [12537.367434]        down_write+0x4d/0x110
    [12537.385202]        __key_link_begin+0x87/0x280
    [12537.405232]        request_key_and_link+0x483/0xf70
    [12537.427221]        request_key+0x3c/0x80
    [12537.444839]        dns_query+0x1db/0x5a5 [dns_resolver]
    [12537.468445]        dns_resolve_server_name_to_ip+0x1e1/0x4d0 [cifs]
    [12537.496731]        cifs_reconnect+0xe04/0x2500 [cifs]
    [12537.519418]        cifs_readv_from_socket+0x461/0x690 [cifs]
    [12537.546263]        cifs_read_from_socket+0xa0/0xe0 [cifs]
    [12537.573551]        cifs_demultiplex_thread+0x311/0x2db0 [cifs]
    [12537.601045]        kthread+0x30c/0x3d0
    [12537.617906]        ret_from_fork+0x3a/0x50
    [12537.636225]
    [12537.636225] -> #2 (root_key_user.cons_lock){+.+.}:
    [12537.664525]        __mutex_lock+0x105/0x11f0
    [12537.683734]        request_key_and_link+0x35a/0xf70
    [12537.705640]        request_key+0x3c/0x80
    [12537.723304]        dns_query+0x1db/0x5a5 [dns_resolver]
    [12537.746773]        dns_resolve_server_name_to_ip+0x1e1/0x4d0 [cifs]
    [12537.775607]        cifs_reconnect+0xe04/0x2500 [cifs]
    [12537.798322]        cifs_readv_from_socket+0x461/0x690 [cifs]
    [12537.823369]        cifs_read_from_socket+0xa0/0xe0 [cifs]
    [12537.847262]        cifs_demultiplex_thread+0x311/0x2db0 [cifs]
    [12537.873477]        kthread+0x30c/0x3d0
    [12537.890281]        ret_from_fork+0x3a/0x50
    [12537.908649]
    [12537.908649] -> #1 (&tcp_ses->srv_mutex){+.+.}:
    [12537.935225]        __mutex_lock+0x105/0x11f0
    [12537.954450]        cifs_call_async+0x102/0x7f0 [cifs]
    [12537.977250]        smb2_async_readv+0x6c3/0xc90 [cifs]
    [12538.000659]        cifs_readpages+0x120a/0x1e50 [cifs]
    [12538.023920]        read_pages+0xf5/0x560
    [12538.041583]        __do_page_cache_readahead+0x41d/0x4b0
    [12538.067047]        ondemand_readahead+0x44c/0xc10
    [12538.092069]        filemap_fault+0xec1/0x1830
    [12538.111637]        __do_fault+0x82/0x260
    [12538.129216]        do_fault+0x419/0xfb0
    [12538.146390]        __handle_mm_fault+0x862/0xdf0
    [12538.167408]        handle_mm_fault+0x154/0x550
    [12538.187401]        __do_page_fault+0x42f/0xa60
    [12538.207395]        do_page_fault+0x38/0x5e0
    [12538.225777]        page_fault+0x1e/0x30
    [12538.243010]
    [12538.243010] -> #0 (&mm->mmap_sem){++++}:
    [12538.267875]        lock_acquire+0x14c/0x420
    [12538.286848]        __might_fault+0x119/0x1b0
    [12538.306006]        keyring_read_iterator+0x7e/0x170
    [12538.327936]        assoc_array_subtree_iterate+0x97/0x280
    [12538.352154]        keyring_read+0xe9/0x110
    [12538.370558]        keyctl_read_key+0x1b9/0x220
    [12538.391470]        do_syscall_64+0xa5/0x4b0
    [12538.410511]        entry_SYSCALL_64_after_hwframe+0x6a/0xdf
    [12538.435535]
    [12538.435535] other info that might help us debug this:
    [12538.435535]
    [12538.472829] Chain exists of:
    [12538.472829]   &mm->mmap_sem --> root_key_user.cons_lock --> &type->lock_class
    [12538.472829]
    [12538.524820]  Possible unsafe locking scenario:
    [12538.524820]
    [12538.551431]        CPU0                    CPU1
    [12538.572654]        ----                    ----
    [12538.595865]   lock(&type->lock_class);
    [12538.613737]                                lock(root_key_user.cons_lock);
    [12538.644234]                                lock(&type->lock_class);
    [12538.672410]   lock(&mm->mmap_sem);
    [12538.687758]
    [12538.687758]  *** DEADLOCK ***
    [12538.687758]
    [12538.714455] 1 lock held by keyctl/25598:
    [12538.732097]  #0: 000000003de5b58d (&type->lock_class){++++}, at: keyctl_read_key+0x15a/0x220
    [12538.770573]
    [12538.770573] stack backtrace:
    [12538.790136] CPU: 2 PID: 25598 Comm: keyctl Kdump: loaded Tainted: G
    [12538.844855] Hardware name: HP ProLiant DL360 Gen9/ProLiant DL360 Gen9, BIOS P89 12/27/2015
    [12538.881963] Call Trace:
    [12538.892897]  dump_stack+0x9a/0xf0
    [12538.907908]  print_circular_bug.isra.25.cold.50+0x1bc/0x279
    [12538.932891]  ? save_trace+0xd6/0x250
    [12538.948979]  check_prev_add.constprop.32+0xc36/0x14f0
    [12538.971643]  ? keyring_compare_object+0x104/0x190
    [12538.992738]  ? check_usage+0x550/0x550
    [12539.009845]  ? sched_clock+0x5/0x10
    [12539.025484]  ? sched_clock_cpu+0x18/0x1e0
    [12539.043555]  __lock_acquire+0x1f12/0x38d0
    [12539.061551]  ? trace_hardirqs_on+0x10/0x10
    [12539.080554]  lock_acquire+0x14c/0x420
    [12539.100330]  ? __might_fault+0xc4/0x1b0
    [12539.119079]  __might_fault+0x119/0x1b0
    [12539.135869]  ? __might_fault+0xc4/0x1b0
    [12539.153234]  keyring_read_iterator+0x7e/0x170
    [12539.172787]  ? keyring_read+0x110/0x110
    [12539.190059]  assoc_array_subtree_iterate+0x97/0x280
    [12539.211526]  keyring_read+0xe9/0x110
    [12539.227561]  ? keyring_gc_check_iterator+0xc0/0xc0
    [12539.249076]  keyctl_read_key+0x1b9/0x220
    [12539.266660]  do_syscall_64+0xa5/0x4b0
    [12539.283091]  entry_SYSCALL_64_after_hwframe+0x6a/0xdf
    
    One way to prevent this deadlock scenario from happening is to not
    allow writing to userspace while holding the key semaphore. Instead,
    an internal buffer is allocated for getting the keys out from the
    read method first before copying them out to userspace without holding
    the lock.
    
    That requires taking out the __user modifier from all the relevant
    read methods as well as additional changes to not use any userspace
    write helpers. That is,
    
      1) The put_user() call is replaced by a direct copy.
      2) The copy_to_user() call is replaced by memcpy().
      3) All the fault handling code is removed.
    
    Compiling on a x86-64 system, the size of the rxrpc_read() function is
    reduced from 3795 bytes to 2384 bytes with this patch.
    
    Fixes: ^1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Waiman Long <longman@redhat.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e303d5249041db301f3739e19c355b5fabe2103
Author: Wen Yang <wenyang@linux.alibaba.com>
Date:   Wed Mar 18 23:31:56 2020 +0800

    mtd: phram: fix a double free issue in error path
    
    commit 49c64df880570034308e4a9a49c4bc95cf8cdb33 upstream.
    
    The variable 'name' is released multiple times in the error path,
    which may cause double free issues.
    This problem is avoided by adding a goto label to release the memory
    uniformly. And this change also makes the code a bit more cleaner.
    
    Fixes: 4f678a58d335 ("mtd: fix memory leaks in phram_setup")
    Signed-off-by: Wen Yang <wenyang@linux.alibaba.com>
    Cc: Joern Engel <joern@lazybastard.org>
    Cc: Miquel Raynal <miquel.raynal@bootlin.com>
    Cc: Richard Weinberger <richard@nod.at>
    Cc: Vignesh Raghavendra <vigneshr@ti.com>
    Cc: linux-mtd@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20200318153156.25612-1-wenyang@linux.alibaba.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42baf547a41f229d1ce9ebfce0a2b5459e01addf
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Feb 28 12:25:54 2020 +0300

    mtd: lpddr: Fix a double free in probe()
    
    commit 4da0ea71ea934af18db4c63396ba2af1a679ef02 upstream.
    
    This function is only called from lpddr_probe().  We free "lpddr" both
    here and in the caller, so it's a double free.  The best place to free
    "lpddr" is in lpddr_probe() so let's delete this one.
    
    Fixes: 8dc004395d5e ("[MTD] LPDDR qinfo probing.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20200228092554.o57igp3nqhyvf66t@kili.mountain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f966b0388b1846405a63a8ff31d2b7d89a1f6801
Author: Frieder Schrempf <frieder.schrempf@kontron.de>
Date:   Tue Feb 18 10:05:25 2020 +0000

    mtd: spinand: Explicitly use MTD_OPS_RAW to write the bad block marker to OOB
    
    commit 621a7b780bd8b7054647d53d5071961f2c9e0873 upstream.
    
    When writing the bad block marker to the OOB area the access mode
    should be set to MTD_OPS_RAW as it is done for reading the marker.
    Currently this only works because req.mode is initialized to
    MTD_OPS_PLACE_OOB (0) and spinand_write_to_cache_op() checks for
    req.mode != MTD_OPS_AUTO_OOB.
    
    Fix this by explicitly setting req.mode to MTD_OPS_RAW.
    
    Fixes: 7529df465248 ("mtd: nand: Add core infrastructure to support SPI NANDs")
    Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
    Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20200218100432.32433-3-frieder.schrempf@kontron.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c85fc004ed6651a8fa6f6884b484d787cf3dd60
Author: Paul E. McKenney <paulmck@kernel.org>
Date:   Thu Jan 23 09:19:01 2020 -0800

    locktorture: Print ratio of acquisitions, not failures
    
    commit 80c503e0e68fbe271680ab48f0fe29bc034b01b7 upstream.
    
    The __torture_print_stats() function in locktorture.c carefully
    initializes local variable "min" to statp[0].n_lock_acquired, but
    then compares it to statp[i].n_lock_fail.  Given that the .n_lock_fail
    field should normally be zero, and given the initialization, it seems
    reasonable to display the maximum and minimum number acquisitions
    instead of miscomputing the maximum and minimum number of failures.
    This commit therefore switches from failures to acquisitions.
    
    And this turns out to be not only a day-zero bug, but entirely my
    own fault.  I hate it when that happens!
    
    Fixes: 0af3fe1efa53 ("locktorture: Add a lock-torture kernel module")
    Reported-by: Will Deacon <will@kernel.org>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Acked-by: Will Deacon <will@kernel.org>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34f5859b8f9a30b7c365659250509fc423125078
Author: Stephen Rothwell <sfr@canb.auug.org.au>
Date:   Thu Jan 9 18:39:12 2020 +1100

    tty: evh_bytechan: Fix out of bounds accesses
    
    commit 3670664b5da555a2a481449b3baafff113b0ac35 upstream.
    
    ev_byte_channel_send() assumes that its third argument is a 16 byte
    array. Some places where it is called it may not be (or we can't
    easily tell if it is). Newer compilers have started producing warnings
    about this, so make sure we actually pass a 16 byte array.
    
    There may be more elegant solutions to this, but the driver is quite
    old and hasn't been updated in many years.
    
    The warnings (from a powerpc allyesconfig build) are:
    
      In file included from include/linux/byteorder/big_endian.h:5,
                       from arch/powerpc/include/uapi/asm/byteorder.h:14,
                       from include/asm-generic/bitops/le.h:6,
                       from arch/powerpc/include/asm/bitops.h:250,
                       from include/linux/bitops.h:29,
                       from include/linux/kernel.h:12,
                       from include/asm-generic/bug.h:19,
                       from arch/powerpc/include/asm/bug.h:109,
                       from include/linux/bug.h:5,
                       from include/linux/mmdebug.h:5,
                       from include/linux/gfp.h:5,
                       from include/linux/slab.h:15,
                       from drivers/tty/ehv_bytechan.c:24:
      drivers/tty/ehv_bytechan.c: In function ‘ehv_bc_udbg_putc’:
      arch/powerpc/include/asm/epapr_hcalls.h:298:20: warning: array subscript 1 is outside array bounds of ‘const char[1]’ [-Warray-bounds]
        298 |  r6 = be32_to_cpu(p[1]);
      include/uapi/linux/byteorder/big_endian.h:40:51: note: in definition of macro ‘__be32_to_cpu’
         40 | #define __be32_to_cpu(x) ((__force __u32)(__be32)(x))
            |                                                   ^
      arch/powerpc/include/asm/epapr_hcalls.h:298:7: note: in expansion of macro ‘be32_to_cpu’
        298 |  r6 = be32_to_cpu(p[1]);
            |       ^~~~~~~~~~~
      drivers/tty/ehv_bytechan.c:166:13: note: while referencing ‘data’
        166 | static void ehv_bc_udbg_putc(char c)
            |             ^~~~~~~~~~~~~~~~
    
    Fixes: dcd83aaff1c8 ("tty/powerpc: introduce the ePAPR embedded hypervisor byte channel driver")
    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Tested-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    [mpe: Trim warnings from change log]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200109183912.5fcb52aa@canb.auug.org.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84f77a944839c88b39633b7edf68ee873e839add
Author: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com>
Date:   Wed Feb 19 12:40:08 2020 -0500

    iio: si1133: read 24-bit signed integer for measurement
    
    commit 328b50e9a0ad1fe8accdf8c19923deebab5e0c01 upstream.
    
    The chip is configured in 24 bit mode. The values read from
    it must always be treated as is. This fixes the issue by
    replacing the previous 16 bits value by a 24 bits buffer.
    
    This changes affects the value output by previous version of
    the driver, since the least significant byte was missing.
    The upper half of 16 bit values previously output are now
    the upper half of a 24 bit value.
    
    Fixes: e01e7eaf37d8 ("iio: light: introduce si1133")
    
    Reported-by: Simon Goyette <simon.goyette@gmail.com>
    Co-authored-by: Guillaume Champagne <champagne.guillaume.c@gmail.com>
    Signed-off-by: Maxime Roussin-Bélanger <maxime.roussinbelanger@gmail.com>
    Signed-off-by: Guillaume Champagne <champagne.guillaume.c@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b24ff9e0082e1d115c85573f140759368bea248
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Jan 13 14:08:14 2020 +0300

    fbdev: potential information leak in do_fb_ioctl()
    
    commit d3d19d6fc5736a798b118971935ce274f7deaa82 upstream.
    
    The "fix" struct has a 2 byte hole after ->ywrapstep and the
    "fix = info->fix;" assignment doesn't necessarily clear it.  It depends
    on the compiler.  The solution is just to replace the assignment with an
    memcpy().
    
    Fixes: 1f5e31d7e55a ("fbmem: don't call copy_from/to_user() with mutex held")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Andrea Righi <righi.andrea@gmail.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Daniel Thompson <daniel.thompson@linaro.org>
    Cc: Peter Rosin <peda@axentia.se>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Gerd Hoffmann <kraxel@redhat.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200113100132.ixpaymordi24n3av@kili.mountain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65dd68c7a55b92be59b9d94ee176ab2e02a5ccb2
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Mar 30 14:38:46 2020 -0700

    net: dsa: bcm_sf2: Fix overflow checks
    
    commit d0802dc411f469569a537283b6f3833af47aece9 upstream.
    
    Commit f949a12fd697 ("net: dsa: bcm_sf2: fix buffer overflow doing
    set_rxnfc") tried to fix the some user controlled buffer overflows in
    bcm_sf2_cfp_rule_set() and bcm_sf2_cfp_rule_del() but the fix was using
    CFP_NUM_RULES, which while it is correct not to overflow the bitmaps, is
    not representative of what the device actually supports. Correct that by
    using bcm_sf2_cfp_rule_size() instead.
    
    The latter subtracts the number of rules by 1, so change the checks from
    greater than or equal to greater than accordingly.
    
    Fixes: f949a12fd697 ("net: dsa: bcm_sf2: fix buffer overflow doing set_rxnfc")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b10cf2de32c1275186382b259ec55d42920b7a8
Author: Chao Yu <chao@kernel.org>
Date:   Fri Feb 14 17:45:12 2020 +0800

    f2fs: fix to wait all node page writeback
    
    [ Upstream commit dc5a941223edd803f476a153abd950cc3a83c3e1 ]
    
    There is a race condition that we may miss to wait for all node pages
    writeback, fix it.
    
    - fsync()                               - shrink
     - f2fs_do_sync_file
                                             - __write_node_page
                                              - set_page_writeback(page#0)
                                              : remove DIRTY/TOWRITE flag
      - f2fs_fsync_node_pages
      : won't find page #0 as TOWRITE flag was removeD
      - f2fs_wait_on_node_pages_writeback
      : wont' wait page #0 writeback as it was not in fsync_node_list list.
                                               - f2fs_add_fsync_node_entry
    
    Fixes: 50fa53eccf9f ("f2fs: fix to avoid broken of dnode block list")
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2fdac8fd20493ea0b781e05e2752ddf2d4c9bfac
Author: Adrian Huang <ahuang12@lenovo.com>
Date:   Fri Feb 14 18:44:51 2020 +0800

    iommu/amd: Fix the configuration of GCR3 table root pointer
    
    [ Upstream commit c20f36534666e37858a14e591114d93cc1be0d34 ]
    
    The SPA of the GCR3 table root pointer[51:31] masks 20 bits. However,
    this requires 21 bits (Please see the AMD IOMMU specification).
    This leads to the potential failure when the bit 51 of SPA of
    the GCR3 table root pointer is 1'.
    
    Signed-off-by: Adrian Huang <ahuang12@lenovo.com>
    Fixes: 52815b75682e2 ("iommu/amd: Add support for IOMMUv2 domain mode")
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b7c5dc73e192b5c97edc165c2f7023d8559d6264
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Feb 25 19:20:56 2020 +0300

    libnvdimm: Out of bounds read in __nd_ioctl()
    
    [ Upstream commit f84afbdd3a9e5e10633695677b95422572f920dc ]
    
    The "cmd" comes from the user and it can be up to 255.  It it's more
    than the number of bits in long, it results out of bounds read when we
    check test_bit(cmd, &cmd_mask).  The highest valid value for "cmd" is
    ND_CMD_CALL (10) so I added a compare against that.
    
    Fixes: 62232e45f4a2 ("libnvdimm: control (ioctl) messages for nvdimm_bus and nvdimm devices")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20200225162055.amtosfy7m35aivxg@kili.mountain
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8f595c7826bf33e0dd5afe29f0ec480df1e009cb
Author: Jeffery Miller <jmiller@neverware.com>
Date:   Tue Feb 25 16:59:41 2020 -0600

    power: supply: axp288_fuel_gauge: Broaden vendor check for Intel Compute Sticks.
    
    [ Upstream commit e42fe5b29ac07210297e75f36deefe54edbdbf80 ]
    
    The Intel Compute Stick `STK1A32SC` can have a system vendor of
    "Intel(R) Client Systems".
    Broaden the Intel Compute Stick DMI checks so that they match "Intel
    Corporation" as well as "Intel(R) Client Systems".
    
    This fixes an issue where the STK1A32SC compute sticks were still
    exposing a battery with the existing blacklist entry.
    
    Signed-off-by: Jeffery Miller <jmiller@neverware.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aad145830991ed065a3aa9c298aec94f14fa3cb4
Author: Jan Kara <jack@suse.cz>
Date:   Tue Mar 17 12:40:02 2020 +0100

    ext2: fix debug reference to ext2_xattr_cache
    
    [ Upstream commit 32302085a8d90859c40cf1a5e8313f575d06ec75 ]
    
    Fix a debug-only build error in ext2/xattr.c:
    
    When building without extra debugging, (and with another patch that uses
    no_printk() instead of <empty> for the ext2-xattr debug-print macros,
    this build error happens:
    
    ../fs/ext2/xattr.c: In function ‘ext2_xattr_cache_insert’:
    ../fs/ext2/xattr.c:869:18: error: ‘ext2_xattr_cache’ undeclared (first use in
    this function); did you mean ‘ext2_xattr_list’?
         atomic_read(&ext2_xattr_cache->c_entry_count));
    
    Fix the problem by removing cached entry count from the debug message
    since otherwise we'd have to export the mbcache structure just for that.
    
    Fixes: be0726d33cb8 ("ext2: convert to mbcache2")
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5175f717c6db02f1e572a793eeb187dd7e144064
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sun Mar 22 19:45:41 2020 -0700

    ext2: fix empty body warnings when -Wextra is used
    
    [ Upstream commit 44a52022e7f15cbaab957df1c14f7a4f527ef7cf ]
    
    When EXT2_ATTR_DEBUG is not defined, modify the 2 debug macros
    to use the no_printk() macro instead of <nothing>.
    This fixes gcc warnings when -Wextra is used:
    
    ../fs/ext2/xattr.c:252:42: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    ../fs/ext2/xattr.c:258:42: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    ../fs/ext2/xattr.c:330:42: warning: suggest braces around empty body in an ‘if’ statement [-Wempty-body]
    ../fs/ext2/xattr.c:872:45: warning: suggest braces around empty body in an ‘else’ statement [-Wempty-body]
    
    I have verified that the only object code change (with gcc 7.5.0) is
    the reversal of some instructions from 'cmp a,b' to 'cmp b,a'.
    
    Link: https://lore.kernel.org/r/e18a7395-61fb-2093-18e8-ed4f8cf56248@infradead.org
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Jan Kara <jack@suse.com>
    Cc: linux-ext4@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b602f68a95ae853c673657e66d32aea251b5b47
Author: Jacob Pan <jacob.jun.pan@linux.intel.com>
Date:   Thu Mar 19 21:32:30 2020 -0700

    iommu/vt-d: Fix mm reference leak
    
    [ Upstream commit 902baf61adf6b187f0a6b789e70d788ea71ff5bc ]
    
    Move canonical address check before mmget_not_zero() to avoid mm
    reference leak.
    
    Fixes: 9d8c3af31607 ("iommu/vt-d: IOMMU Page Request needs to check if address is canonical.")
    Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a95787ed3691fd9a85172d72b381a9337a685d85
Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Date:   Thu Mar 26 13:20:01 2020 +0100

    drm/vc4: Fix HDMI mode validation
    
    [ Upstream commit b1e7396a1d0e6af6806337fdaaa44098d6b3343c ]
    
    Current mode validation impedes setting up some video modes which should
    be supported otherwise. Namely 1920x1200@60Hz.
    
    Fix this by lowering the minimum HDMI state machine clock to pixel clock
    ratio allowed.
    
    Fixes: 32e823c63e90 ("drm/vc4: Reject HDMI modes with too high of clocks.")
    Reported-by: Stefan Wahren <stefan.wahren@i2se.com>
    Suggested-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
    Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200326122001.22215-1-nsaenzjulienne@suse.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c7259f744826151d74af4b63fc07e5300f87e57
Author: Chao Yu <chao@kernel.org>
Date:   Thu Mar 19 19:58:00 2020 +0800

    f2fs: fix NULL pointer dereference in f2fs_write_begin()
    
    [ Upstream commit 62f63eea291b50a5677ae7503ac128803174698a ]
    
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    RIP: 0010:f2fs_write_begin+0x823/0xb90 [f2fs]
    Call Trace:
     f2fs_quota_write+0x139/0x1d0 [f2fs]
     write_blk+0x36/0x80 [quota_tree]
     get_free_dqblk+0x42/0xa0 [quota_tree]
     do_insert_tree+0x235/0x4a0 [quota_tree]
     do_insert_tree+0x26e/0x4a0 [quota_tree]
     do_insert_tree+0x26e/0x4a0 [quota_tree]
     do_insert_tree+0x26e/0x4a0 [quota_tree]
     qtree_write_dquot+0x70/0x190 [quota_tree]
     v2_write_dquot+0x43/0x90 [quota_v2]
     dquot_acquire+0x77/0x100
     f2fs_dquot_acquire+0x2f/0x60 [f2fs]
     dqget+0x310/0x450
     dquot_transfer+0x7e/0x120
     f2fs_setattr+0x11a/0x4a0 [f2fs]
     notify_change+0x349/0x480
     chown_common+0x168/0x1c0
     do_fchownat+0xbc/0xf0
     __x64_sys_fchownat+0x20/0x30
     do_syscall_64+0x5f/0x220
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Passing fsdata parameter to .write_{begin,end} in f2fs_quota_write(),
    so that if quota file is compressed one, we can avoid above NULL
    pointer dereference when updating quota content.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b38f7532eb1549a43bcc8dfd6c197adccfa84a00
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sun Mar 29 20:06:45 2020 -0400

    NFS: Fix memory leaks in nfs_pageio_stop_mirroring()
    
    [ Upstream commit 862f35c94730c9270833f3ad05bd758a29f204ed ]
    
    If we just set the mirror count to 1 without first clearing out
    the mirrors, we can leak queued up requests.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 044a884072b4313554d910b792f46c3e1f0099a5
Author: Jack Zhang <Jack.Zhang1@amd.com>
Date:   Wed Apr 1 20:06:58 2020 +0800

    drm/amdkfd: kfree the wrong pointer
    
    [ Upstream commit 3148a6a0ef3cf93570f30a477292768f7eb5d3c3 ]
    
    Originally, it kfrees the wrong pointer for mem_obj.
    It would cause memory leak under stress test.
    
    Signed-off-by: Jack Zhang <Jack.Zhang1@amd.com>
    Acked-by: Nirmoy Das <nirmoy.das@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 67e5b7090905050a8c5efbe14889695a1c6b77f6
Author: Qian Cai <cai@lca.pw>
Date:   Fri Apr 3 10:03:45 2020 -0400

    x86: ACPI: fix CPU hotplug deadlock
    
    [ Upstream commit 696ac2e3bf267f5a2b2ed7d34e64131f2287d0ad ]
    
    Similar to commit 0266d81e9bf5 ("acpi/processor: Prevent cpu hotplug
    deadlock") except this is for acpi_processor_ffh_cstate_probe():
    
    "The problem is that the work is scheduled on the current CPU from the
    hotplug thread associated with that CPU.
    
    It's not required to invoke these functions via the workqueue because
    the hotplug thread runs on the target CPU already.
    
    Check whether current is a per cpu thread pinned on the target CPU and
    invoke the function directly to avoid the workqueue."
    
     WARNING: possible circular locking dependency detected
     ------------------------------------------------------
     cpuhp/1/15 is trying to acquire lock:
     ffffc90003447a28 ((work_completion)(&wfc.work)){+.+.}-{0:0}, at: __flush_work+0x4c6/0x630
    
     but task is already holding lock:
     ffffffffafa1c0e8 (cpuidle_lock){+.+.}-{3:3}, at: cpuidle_pause_and_lock+0x17/0x20
    
     which lock already depends on the new lock.
    
     the existing dependency chain (in reverse order) is:
    
     -> #1 (cpu_hotplug_lock){++++}-{0:0}:
     cpus_read_lock+0x3e/0xc0
     irq_calc_affinity_vectors+0x5f/0x91
     __pci_enable_msix_range+0x10f/0x9a0
     pci_alloc_irq_vectors_affinity+0x13e/0x1f0
     pci_alloc_irq_vectors_affinity at drivers/pci/msi.c:1208
     pqi_ctrl_init+0x72f/0x1618 [smartpqi]
     pqi_pci_probe.cold.63+0x882/0x892 [smartpqi]
     local_pci_probe+0x7a/0xc0
     work_for_cpu_fn+0x2e/0x50
     process_one_work+0x57e/0xb90
     worker_thread+0x363/0x5b0
     kthread+0x1f4/0x220
     ret_from_fork+0x27/0x50
    
     -> #0 ((work_completion)(&wfc.work)){+.+.}-{0:0}:
     __lock_acquire+0x2244/0x32a0
     lock_acquire+0x1a2/0x680
     __flush_work+0x4e6/0x630
     work_on_cpu+0x114/0x160
     acpi_processor_ffh_cstate_probe+0x129/0x250
     acpi_processor_evaluate_cst+0x4c8/0x580
     acpi_processor_get_power_info+0x86/0x740
     acpi_processor_hotplug+0xc3/0x140
     acpi_soft_cpu_online+0x102/0x1d0
     cpuhp_invoke_callback+0x197/0x1120
     cpuhp_thread_fun+0x252/0x2f0
     smpboot_thread_fn+0x255/0x440
     kthread+0x1f4/0x220
     ret_from_fork+0x27/0x50
    
     other info that might help us debug this:
    
     Chain exists of:
     (work_completion)(&wfc.work) --> cpuhp_state-up --> cpuidle_lock
    
     Possible unsafe locking scenario:
    
     CPU0                    CPU1
     ----                    ----
     lock(cpuidle_lock);
                             lock(cpuhp_state-up);
                             lock(cpuidle_lock);
     lock((work_completion)(&wfc.work));
    
     *** DEADLOCK ***
    
     3 locks held by cpuhp/1/15:
     #0: ffffffffaf51ab10 (cpu_hotplug_lock){++++}-{0:0}, at: cpuhp_thread_fun+0x69/0x2f0
     #1: ffffffffaf51ad40 (cpuhp_state-up){+.+.}-{0:0}, at: cpuhp_thread_fun+0x69/0x2f0
     #2: ffffffffafa1c0e8 (cpuidle_lock){+.+.}-{3:3}, at: cpuidle_pause_and_lock+0x17/0x20
    
     Call Trace:
     dump_stack+0xa0/0xea
     print_circular_bug.cold.52+0x147/0x14c
     check_noncircular+0x295/0x2d0
     __lock_acquire+0x2244/0x32a0
     lock_acquire+0x1a2/0x680
     __flush_work+0x4e6/0x630
     work_on_cpu+0x114/0x160
     acpi_processor_ffh_cstate_probe+0x129/0x250
     acpi_processor_evaluate_cst+0x4c8/0x580
     acpi_processor_get_power_info+0x86/0x740
     acpi_processor_hotplug+0xc3/0x140
     acpi_soft_cpu_online+0x102/0x1d0
     cpuhp_invoke_callback+0x197/0x1120
     cpuhp_thread_fun+0x252/0x2f0
     smpboot_thread_fn+0x255/0x440
     kthread+0x1f4/0x220
     ret_from_fork+0x27/0x50
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Tested-by: Borislav Petkov <bp@suse.de>
    [ rjw: Subject ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 41228f464fdf82338249d6a04cef7d2d52c9c9f4
Author: David Hildenbrand <david@redhat.com>
Date:   Fri Apr 3 17:30:48 2020 +0200

    KVM: s390: vsie: Fix possible race when shadowing region 3 tables
    
    [ Upstream commit 1493e0f944f3c319d11e067c185c904d01c17ae5 ]
    
    We have to properly retry again by returning -EINVAL immediately in case
    somebody else instantiated the table concurrently. We missed to add the
    goto in this function only. The code now matches the other, similar
    shadowing functions.
    
    We are overwriting an existing region 2 table entry. All allocated pages
    are added to the crst_list to be freed later, so they are not lost
    forever. However, when unshadowing the region 2 table, we wouldn't trigger
    unshadowing of the original shadowed region 3 table that we replaced. It
    would get unshadowed when the original region 3 table is modified. As it's
    not connected to the page table hierarchy anymore, it's not going to get
    used anymore. However, for a limited time, this page table will stick
    around, so it's in some sense a temporary memory leak.
    
    Identified by manual code inspection. I don't think this classifies as
    stable material.
    
    Fixes: 998f637cc4b9 ("s390/mm: avoid races on region/segment/page table shadowing")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Link: https://lore.kernel.org/r/20200403153050.20569-4-david@redhat.com
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9af5777e75da5427c4a4501035878afd8a381279
Author: Vegard Nossum <vegard.nossum@oracle.com>
Date:   Mon Apr 6 20:09:37 2020 -0700

    compiler.h: fix error in BUILD_BUG_ON() reporting
    
    [ Upstream commit af9c5d2e3b355854ff0e4acfbfbfadcd5198a349 ]
    
    compiletime_assert() uses __LINE__ to create a unique function name.  This
    means that if you have more than one BUILD_BUG_ON() in the same source
    line (which can happen if they appear e.g.  in a macro), then the error
    message from the compiler might output the wrong condition.
    
    For this source file:
    
            #include <linux/build_bug.h>
    
            #define macro() \
                    BUILD_BUG_ON(1); \
                    BUILD_BUG_ON(0);
    
            void foo()
            {
                    macro();
            }
    
    gcc would output:
    
    ./include/linux/compiler.h:350:38: error: call to `__compiletime_assert_9' declared with attribute error: BUILD_BUG_ON failed: 0
      _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
    
    However, it was not the BUILD_BUG_ON(0) that failed, so it should say 1
    instead of 0. With this patch, we use __COUNTER__ instead of __LINE__, so
    each BUILD_BUG_ON() gets a different function name and the correct
    condition is printed:
    
    ./include/linux/compiler.h:350:38: error: call to `__compiletime_assert_0' declared with attribute error: BUILD_BUG_ON failed: 1
      _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
    
    Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Reviewed-by: Daniel Santos <daniel.santos@pobox.com>
    Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Cc: Ian Abbott <abbotti@mev.co.uk>
    Cc: Joe Perches <joe@perches.com>
    Link: http://lkml.kernel.org/r/20200331112637.25047-1-vegard.nossum@oracle.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 638350f0ac3cf03432f2e941135adda55a15dd94
Author: Qian Cai <cai@lca.pw>
Date:   Mon Apr 6 20:10:25 2020 -0700

    percpu_counter: fix a data race at vm_committed_as
    
    [ Upstream commit 7e2345200262e4a6056580f0231cccdaffc825f3 ]
    
    "vm_committed_as.count" could be accessed concurrently as reported by
    KCSAN,
    
     BUG: KCSAN: data-race in __vm_enough_memory / percpu_counter_add_batch
    
     write to 0xffffffff9451c538 of 8 bytes by task 65879 on cpu 35:
      percpu_counter_add_batch+0x83/0xd0
      percpu_counter_add_batch at lib/percpu_counter.c:91
      __vm_enough_memory+0xb9/0x260
      dup_mm+0x3a4/0x8f0
      copy_process+0x2458/0x3240
      _do_fork+0xaa/0x9f0
      __do_sys_clone+0x125/0x160
      __x64_sys_clone+0x70/0x90
      do_syscall_64+0x91/0xb05
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
     read to 0xffffffff9451c538 of 8 bytes by task 66773 on cpu 19:
      __vm_enough_memory+0x199/0x260
      percpu_counter_read_positive at include/linux/percpu_counter.h:81
      (inlined by) __vm_enough_memory at mm/util.c:839
      mmap_region+0x1b2/0xa10
      do_mmap+0x45c/0x700
      vm_mmap_pgoff+0xc0/0x130
      ksys_mmap_pgoff+0x6e/0x300
      __x64_sys_mmap+0x33/0x40
      do_syscall_64+0x91/0xb05
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    The read is outside percpu_counter::lock critical section which results in
    a data race.  Fix it by adding a READ_ONCE() in
    percpu_counter_read_positive() which could also service as the existing
    compiler memory barrier.
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Marco Elver <elver@google.com>
    Link: http://lkml.kernel.org/r/1582302724-2804-1-git-send-email-cai@lca.pw
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9b6170c5cf361c057c1cb59e3eaeca4132a7b9c5
Author: Steven Price <steven.price@arm.com>
Date:   Mon Apr 6 20:08:43 2020 -0700

    include/linux/swapops.h: correct guards for non_swap_entry()
    
    [ Upstream commit 3f3673d7d324d872d9d8ddb73b3e5e47fbf12e0d ]
    
    If CONFIG_DEVICE_PRIVATE is defined, but neither CONFIG_MEMORY_FAILURE nor
    CONFIG_MIGRATION, then non_swap_entry() will return 0, meaning that the
    condition (non_swap_entry(entry) && is_device_private_entry(entry)) in
    zap_pte_range() will never be true even if the entry is a device private
    one.
    
    Equally any other code depending on non_swap_entry() will not function as
    expected.
    
    I originally spotted this just by looking at the code, I haven't actually
    observed any problems.
    
    Looking a bit more closely it appears that actually this situation
    (currently at least) cannot occur:
    
    DEVICE_PRIVATE depends on ZONE_DEVICE
    ZONE_DEVICE depends on MEMORY_HOTREMOVE
    MEMORY_HOTREMOVE depends on MIGRATION
    
    Fixes: 5042db43cc26 ("mm/ZONE_DEVICE: new type of ZONE_DEVICE for unaddressable memory")
    Signed-off-by: Steven Price <steven.price@arm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Link: http://lkml.kernel.org/r/20200305130550.22693-1-steven.price@arm.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 731a3bc2be26c775fb70f66a273c1c10b50b0d05
Author: Long Li <longli@microsoft.com>
Date:   Thu Mar 26 22:09:20 2020 -0700

    cifs: Allocate encryption header through kmalloc
    
    [ Upstream commit 3946d0d04bb360acca72db5efe9ae8440012d9dc ]
    
    When encryption is used, smb2_transform_hdr is defined on the stack and is
    passed to the transport. This doesn't work with RDMA as the buffer needs to
    be DMA'ed.
    
    Fix it by using kmalloc.
    
    Signed-off-by: Long Li <longli@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1421615c646a43b905055a41a7ca62215f4662f9
Author: Gabriel Krisman Bertazi <krisman@collabora.com>
Date:   Mon Mar 16 20:45:06 2020 -0400

    um: ubd: Prevent buffer overrun on command completion
    
    [ Upstream commit 6e682d53fc1ef73a169e2a5300326cb23abb32ee ]
    
    On the hypervisor side, when completing commands and the pipe is full,
    we retry writing only the entries that failed, by offsetting
    io_req_buffer, but we don't reduce the number of bytes written, which
    can cause a buffer overrun of io_req_buffer, and write garbage to the
    pipe.
    
    Cc: Martyn Welch <martyn.welch@collabora.com>
    Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e2fa8b3b8d6cea619a850940b1b96fd208d44ae
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Wed Mar 18 14:19:38 2020 -0500

    ext4: do not commit super on read-only bdev
    
    [ Upstream commit c96e2b8564adfb8ac14469ebc51ddc1bfecb3ae2 ]
    
    Under some circumstances we may encounter a filesystem error on a
    read-only block device, and if we try to save the error info to the
    superblock and commit it, we'll wind up with a noisy error and
    backtrace, i.e.:
    
    [ 3337.146838] EXT4-fs error (device pmem1p2): ext4_get_journal_inode:4634: comm mount: inode #0: comm mount: iget: illegal inode #
    ------------[ cut here ]------------
    generic_make_request: Trying to write to read-only block-device pmem1p2 (partno 2)
    WARNING: CPU: 107 PID: 115347 at block/blk-core.c:788 generic_make_request_checks+0x6b4/0x7d0
    ...
    
    To avoid this, commit the error info in the superblock only if the
    block device is writable.
    
    Reported-by: Ritesh Harjani <riteshh@linux.ibm.com>
    Signed-off-by: Eric Sandeen <sandeen@redhat.com>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Link: https://lore.kernel.org/r/4b6e774d-cc00-3469-7abb-108eb151071a@sandeen.net
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 60cb7886942b91f7abfa63497682ca799dccac0b
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Mon Mar 23 11:09:07 2020 +0100

    s390/cpum_sf: Fix wrong page count in error message
    
    [ Upstream commit 4141b6a5e9f171325effc36a22eb92bf961e7a5c ]
    
    When perf record -e SF_CYCLES_BASIC_DIAG runs with very high
    frequency, the samples arrive faster than the perf process can
    save them to file. Eventually, for longer running processes, this
    leads to the siutation where the trace buffers allocated by perf
    slowly fills up. At one point the auxiliary trace buffer is full
    and  the CPU Measurement sampling facility is turned off. Furthermore
    a warning is printed to the kernel log buffer:
    
    cpum_sf: The AUX buffer with 0 pages for the diagnostic-sampling
            mode is full
    
    The number of allocated pages for the auxiliary trace buffer is shown
    as zero pages. That is wrong.
    
    Fix this by saving the number of allocated pages before entering the
    work loop in the interrupt handler. When the interrupt handler processes
    the samples, it may detect the buffer full condition and stop sampling,
    reducing the buffer size to zero.
    Print the correct value in the error message:
    
    cpum_sf: The AUX buffer with 256 pages for the diagnostic-sampling
            mode is full
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1081196571d5577a35cb266d76eb368f9d42606b
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Mar 23 15:27:29 2020 -0700

    powerpc/maple: Fix declaration made after definition
    
    [ Upstream commit af6cf95c4d003fccd6c2ecc99a598fb854b537e7 ]
    
    When building ppc64 defconfig, Clang errors (trimmed for brevity):
    
      arch/powerpc/platforms/maple/setup.c:365:1: error: attribute declaration
      must precede definition [-Werror,-Wignored-attributes]
      machine_device_initcall(maple, maple_cpc925_edac_setup);
      ^
    
    machine_device_initcall expands to __define_machine_initcall, which in
    turn has the macro machine_is used in it, which declares mach_##name
    with an __attribute__((weak)). define_machine actually defines
    mach_##name, which in this file happens before the declaration, hence
    the warning.
    
    To fix this, move define_machine after machine_device_initcall so that
    the declaration occurs before the definition, which matches how
    machine_device_initcall and define_machine work throughout
    arch/powerpc.
    
    While we're here, remove some spaces before tabs.
    
    Fixes: 8f101a051ef0 ("edac: cpc925 MC platform device setup")
    Reported-by: Nick Desaulniers <ndesaulniers@google.com>
    Suggested-by: Ilie Halip <ilie.halip@gmail.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200323222729.15365-1-natechancellor@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ffc059b5b95c6362662c015c345b9430f23302a5
Author: Alexander Gordeev <agordeev@linux.ibm.com>
Date:   Mon Mar 16 12:39:55 2020 +0100

    s390/cpuinfo: fix wrong output when CPU0 is offline
    
    [ Upstream commit 872f27103874a73783aeff2aac2b41a489f67d7c ]
    
    /proc/cpuinfo should not print information about CPU 0 when it is offline.
    
    Fixes: 281eaa8cb67c ("s390/cpuinfo: simplify locking and skip offline cpus early")
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    [heiko.carstens@de.ibm.com: shortened commit message]
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f5253c5e9ecacd0c9724022e94acaf3c7c545ce
Author: Misono Tomohiro <misono.tomohiro@jp.fujitsu.com>
Date:   Wed Aug 28 17:01:22 2019 +0900

    NFS: direct.c: Fix memory leak of dreq when nfs_get_lock_context fails
    
    [ Upstream commit 8605cf0e852af3b2c771c18417499dc4ceed03d5 ]
    
    When dreq is allocated by nfs_direct_req_alloc(), dreq->kref is
    initialized to 2. Therefore we need to call nfs_direct_req_release()
    twice to release the allocated dreq. Usually it is called in
    nfs_file_direct_{read, write}() and nfs_direct_complete().
    
    However, current code only calls nfs_direct_req_relese() once if
    nfs_get_lock_context() fails in nfs_file_direct_{read, write}().
    So, that case would result in memory leak.
    
    Fix this by adding the missing call.
    
    Signed-off-by: Misono Tomohiro <misono.tomohiro@jp.fujitsu.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 401876dbcf6be94b31a957ccccb8e028e9d3d9cc
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Thu Feb 27 11:01:12 2020 -0500

    NFSv4/pnfs: Return valid stateids in nfs_layout_find_inode_by_stateid()
    
    [ Upstream commit d911c57a19551c6bef116a3b55c6b089901aacb0 ]
    
    Make sure to test the stateid for validity so that we catch instances
    where the server may have been reusing stateids in
    nfs_layout_find_inode_by_stateid().
    
    Fixes: 7b410d9ce460 ("pNFS: Delay getting the layout header in CB_LAYOUTRECALL handlers")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65ea19acb0fd2a7d3337d022ebc63f06d66581c7
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Wed Mar 11 23:39:51 2020 +0100

    rtc: 88pm860x: fix possible race condition
    
    [ Upstream commit 9cf4789e6e4673d0b2c96fa6bb0c35e81b43111a ]
    
    The RTC IRQ is requested before the struct rtc_device is allocated,
    this may lead to a NULL pointer dereference in the IRQ handler.
    
    To fix this issue, allocating the rtc_device struct before requesting
    the RTC IRQ using devm_rtc_allocate_device, and use rtc_register_device
    to register the RTC device.
    
    Also remove the unnecessary error message as the core already prints the
    info.
    
    Link: https://lore.kernel.org/r/20200311223956.51352-1-alexandre.belloni@bootlin.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 195bd29b4fb159ac962e1df95fe40176e838b883
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Mar 13 11:09:12 2020 +0100

    soc: imx: gpc: fix power up sequencing
    
    [ Upstream commit e0ea2d11f8a08ba7066ff897e16c5217215d1e68 ]
    
    Currently we wait only until the PGC inverts the isolation setting
    before disabling the peripheral clocks. This doesn't ensure that the
    reset is properly propagated through the peripheral devices in the
    power domain.
    
    Wait until the PGC signals that the power up request is done and
    wait a bit for resets to propagate before disabling the clocks.
    
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08afbff24be3ed6c71c38c815386e22c9912f319
Author: Sowjanya Komatineni <skomatineni@nvidia.com>
Date:   Mon Jan 13 23:24:09 2020 -0800

    clk: tegra: Fix Tegra PMC clock out parents
    
    [ Upstream commit 6fe38aa8cac3a5db38154331742835a4d9740788 ]
    
    Tegra PMC clocks clk_out_1, clk_out_2, and clk_out_3 supported parents
    are osc, osc_div2, osc_div4 and extern clock.
    
    Clock driver is using incorrect parents clk_m, clk_m_div2, clk_m_div4
    for PMC clocks.
    
    This patch fixes this.
    
    Tested-by: Dmitry Osipenko <digetx@gmail.com>
    Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c0f9e7fdd2cf550d07f9b9448e7de3713ec7c80
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Mon Mar 9 00:51:43 2020 +0300

    power: supply: bq27xxx_battery: Silence deferred-probe error
    
    [ Upstream commit 583b53ece0b0268c542a1eafadb62e3d4b0aab8c ]
    
    The driver fails to probe with -EPROBE_DEFER if battery's power supply
    (charger driver) isn't ready yet and this results in a bit noisy error
    message in KMSG during kernel's boot up. Let's silence the harmless
    error message.
    
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Reviewed-by: Andrew F. Davis <afd@ti.com>
    Reviewed-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0cc1de475c1a851b86af8dbbb2bdb7f6474c8c12
Author: Claudiu Beznea <claudiu.beznea@microchip.com>
Date:   Fri Jan 17 13:36:46 2020 +0200

    clk: at91: usb: continue if clk_hw_round_rate() return zero
    
    [ Upstream commit b0ecf1c6c6e82da4847900fad0272abfd014666d ]
    
    clk_hw_round_rate() may call round rate function of its parents. In case
    of SAM9X60 two of USB parrents are PLLA and UPLL. These clocks are
    controlled by clk-sam9x60-pll.c driver. The round rate function for this
    driver is sam9x60_pll_round_rate() which call in turn
    sam9x60_pll_get_best_div_mul(). In case the requested rate is not in the
    proper range (rate < characteristics->output[0].min &&
    rate > characteristics->output[0].max) the sam9x60_pll_round_rate() will
    return a negative number to its caller (called by
    clk_core_round_rate_nolock()). clk_hw_round_rate() will return zero in
    case a negative number is returned by clk_core_round_rate_nolock(). With
    this, the USB clock will continue its rate computation even caller of
    clk_hw_round_rate() returned an error. With this, the USB clock on SAM9X60
    may not chose the best parent. I detected this after a suspend/resume
    cycle on SAM9X60.
    
    Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lkml.kernel.org/r/1579261009-4573-2-git-send-email-claudiu.beznea@microchip.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f904261ddab6d9073365a596d9d56e0a4819dda2
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:31 2020 -0700

    x86/Hyper-V: Report crash data in die() when panic_on_oops is set
    
    [ Upstream commit f3a99e761efa616028b255b4de58e9b5b87c5545 ]
    
    When oops happens with panic_on_oops unset, the oops
    thread is killed by die() and system continues to run.
    In such case, guest should not report crash register
    data to host since system still runs. Check panic_on_oops
    and return directly in hyperv_report_panic() when the function
    is called in the die() and panic_on_oops is unset. Fix it.
    
    Fixes: 7ed4325a44ea ("Drivers: hv: vmbus: Make panic reporting to be more useful")
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-7-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 83064464c9bd7de8f323ccb3609117ed803176ce
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:30 2020 -0700

    x86/Hyper-V: Report crash register data when sysctl_record_panic_msg is not set
    
    [ Upstream commit 040026df7088c56ccbad28f7042308f67bde63df ]
    
    When sysctl_record_panic_msg is not set, the panic will
    not be reported to Hyper-V via hyperv_report_panic_msg().
    So the crash should be reported via hyperv_report_panic().
    
    Fixes: 81b18bce48af ("Drivers: HV: Send one page worth of kmsg dump over Hyper-V during panic")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-6-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cefde4e7c979d44e997697b87f06f0b26e8f9fda
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:28 2020 -0700

    x86/Hyper-V: Trigger crash enlightenment only once during system crash.
    
    [ Upstream commit 73f26e526f19afb3a06b76b970a76bcac2cafd05 ]
    
    When a guest VM panics, Hyper-V should be notified only once via the
    crash synthetic MSRs.  Current Linux code might write these crash MSRs
    twice during a system panic:
    1) hyperv_panic/die_event() calling hyperv_report_panic()
    2) hv_kmsg_dump() calling hyperv_report_panic_msg()
    
    Fix this by not calling hyperv_report_panic() if a kmsg dump has been
    successfully registered.  The notification will happen later via
    hyperv_report_panic_msg().
    
    Fixes: 7ed4325a44ea ("Drivers: hv: vmbus: Make panic reporting to be more useful")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-4-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 89b0b47a6fb86c268e662046f31777f6e7c557d7
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:27 2020 -0700

    x86/Hyper-V: Free hv_panic_page when fail to register kmsg dump
    
    [ Upstream commit 7f11a2cc10a4ae3a70e2c73361f4a9a33503539b ]
    
    If kmsg_dump_register() fails, hv_panic_page will not be used
    anywhere.  So free and reset it.
    
    Fixes: 81b18bce48af ("Drivers: HV: Send one page worth of kmsg dump over Hyper-V during panic")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-3-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e059fc0f054309036d3f612bc8b0a502ca58545
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:26 2020 -0700

    x86/Hyper-V: Unload vmbus channel in hv panic callback
    
    [ Upstream commit 74347a99e73ae00b8385f1209aaea193c670f901 ]
    
    When kdump is not configured, a Hyper-V VM might still respond to
    network traffic after a kernel panic when kernel parameter panic=0.
    The panic CPU goes into an infinite loop with interrupts enabled,
    and the VMbus driver interrupt handler still works because the
    VMbus connection is unloaded only in the kdump path.  The network
    responses make the other end of the connection think the VM is
    still functional even though it has panic'ed, which could affect any
    failover actions that should be taken.
    
    Fix this by unloading the VMbus connection during the panic process.
    vmbus_initiate_unload() could then be called twice (e.g., by
    hyperv_panic_event() and hv_crash_handler(), so reset the connection
    state in vmbus_initiate_unload() to ensure the unload is done only
    once.
    
    Fixes: 81b18bce48af ("Drivers: HV: Send one page worth of kmsg dump over Hyper-V during panic")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-2-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ad8fb61c184fe0f8d1e0b5b954d010fb9f94a6ee
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Tue Apr 14 09:35:15 2020 +0200

    xsk: Add missing check on user supplied headroom size
    
    [ Upstream commit 99e3a236dd43d06c65af0a2ef9cb44306aef6e02 ]
    
    Add a check that the headroom cannot be larger than the available
    space in the chunk. In the current code, a malicious user can set the
    headroom to a value larger than the chunk size minus the fixed XDP
    headroom. That way packets with a length larger than the supported
    size in the umem could get accepted and result in an out-of-bounds
    write.
    
    Fixes: c0c77d8fb787 ("xsk: add user memory registration support sockopt")
    Reported-by: Bui Quang Minh <minhquangbui99@gmail.com>
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=207225
    Link: https://lore.kernel.org/bpf/1586849715-23490-1-git-send-email-magnus.karlsson@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b48629885b6f6a0f26bd51f9dbdca1a0bfa217a
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Mon Mar 16 15:52:54 2020 +0100

    rbd: call rbd_dev_unprobe() after unwatching and flushing notifies
    
    [ Upstream commit 952c48b0ed18919bff7528501e9a3fff8a24f8cd ]
    
    rbd_dev_unprobe() is supposed to undo most of rbd_dev_image_probe(),
    including rbd_dev_header_info(), which means that rbd_dev_header_info()
    isn't supposed to be called after rbd_dev_unprobe().
    
    However, rbd_dev_image_release() calls rbd_dev_unprobe() before
    rbd_unregister_watch().  This is racy because a header update notify
    can sneak in:
    
      "rbd unmap" thread                   ceph-watch-notify worker
    
      rbd_dev_image_release()
        rbd_dev_unprobe()
          free and zero out header
                                           rbd_watch_cb()
                                             rbd_dev_refresh()
                                               rbd_dev_header_info()
                                                 read in header
    
    The same goes for "rbd map" because rbd_dev_image_probe() calls
    rbd_dev_unprobe() on errors.  In both cases this results in a memory
    leak.
    
    Fixes: fd22aef8b47c ("rbd: move rbd_unregister_watch() call into rbd_dev_image_release()")
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Jason Dillaman <dillaman@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 26b69a33ff0396c3ab107b8db8e7c14439275ee6
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Fri Mar 13 11:20:51 2020 +0100

    rbd: avoid a deadlock on header_rwsem when flushing notifies
    
    [ Upstream commit 0e4e1de5b63fa423b13593337a27fd2d2b0bcf77 ]
    
    rbd_unregister_watch() flushes notifies and therefore cannot be called
    under header_rwsem because a header update notify takes header_rwsem to
    synchronize with "rbd map".  If mapping an image fails after the watch
    is established and a header update notify sneaks in, we deadlock when
    erroring out from rbd_dev_image_probe().
    
    Move watch registration and unregistration out of the critical section.
    The only reason they were put there was to make header_rwsem management
    slightly more obvious.
    
    Fixes: 811c66887746 ("rbd: fix rbd map vs notify races")
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Jason Dillaman <dillaman@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit adff7c6c512ee857f40addc6d6dcd6f95e934011
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Oct 8 12:57:36 2018 +0200

    video: fbdev: sis: Remove unnecessary parentheses and commented code
    
    commit 864eb1afc60cb43e7df879b97f8ca0d719bbb735 upstream.
    
    Clang warns when multiple pairs of parentheses are used for a single
    conditional statement.
    
    drivers/video/fbdev/sis/init301.c:851:42: warning: equality comparison
    with extraneous parentheses [-Wparentheses-equality]
          } else if((SiS_Pr->SiS_IF_DEF_LVDS == 1) /* ||
                     ~~~~~~~~~~~~~~~~~~~~~~~~^~~~
    drivers/video/fbdev/sis/init301.c:851:42: note: remove extraneous
    parentheses around the comparison to silence this warning
          } else if((SiS_Pr->SiS_IF_DEF_LVDS == 1) /* ||
                    ~                        ^   ~
    drivers/video/fbdev/sis/init301.c:851:42: note: use '=' to turn this
    equality comparison into an assignment
          } else if((SiS_Pr->SiS_IF_DEF_LVDS == 1) /* ||
                                             ^~
                                             =
    1 warning generated.
    
    Remove the parentheses and while we're at it, clean up the commented
    code, which has been here since the beginning of git history.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/118
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Cc: Thomas Winischhofer <thomas@winischhofer.net>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00dd1df3c24fdcdc5331f5ab6e65a82cab1f1412
Author: ndesaulniers@google.com <ndesaulniers@google.com>
Date:   Mon Feb 25 20:03:42 2019 -0800

    lib/raid6: use vdupq_n_u8 to avoid endianness warnings
    
    commit 1ad3935b39da78a403e7df7a3813f866c731bc64 upstream.
    
    Clang warns: vector initializers are not compatible with NEON intrinsics
    in big endian mode [-Wnonportable-vector-initialization]
    
    While this is usually the case, it's not an issue for this case since
    we're initializing the uint8x16_t (16x uint8_t's) with the same value.
    
    Instead, use vdupq_n_u8 which both compilers lower into a single movi
    instruction: https://godbolt.org/z/vBrgzt
    
    This avoids the static storage for a constant value.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/214
    Suggested-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 017917fef5c6a231a54537e349f3eb7fab8b787c
Author: Tianyu Lan <Tianyu.Lan@microsoft.com>
Date:   Mon Apr 6 08:53:29 2020 -0700

    x86/Hyper-V: Report crash register data or kmsg before running crash kernel
    
    commit a11589563e96bf262767294b89b25a9d44e7303b upstream.
    
    We want to notify Hyper-V when a Linux guest VM crash occurs, so
    there is a record of the crash even when kdump is enabled.   But
    crash_kexec_post_notifiers defaults to "false", so the kdump kernel
    runs before the notifiers and Hyper-V never gets notified.  Fix this by
    always setting crash_kexec_post_notifiers to be true for Hyper-V VMs.
    
    Fixes: 81b18bce48af ("Drivers: HV: Send one page worth of kmsg dump over Hyper-V during panic")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
    Link: https://lore.kernel.org/r/20200406155331.2105-5-Tianyu.Lan@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d55d3d74dacef45bf96496c9e3560f101098359c
Author: Frank Rowand <frank.rowand@sony.com>
Date:   Thu Apr 16 16:42:49 2020 -0500

    of: overlay: kmemleak in dup_and_fixup_symbol_prop()
    
    commit 478ff649b1c8eb2409b1a54fb75eb46f7c29f140 upstream.
    
    kmemleak reports several memory leaks from devicetree unittest.
    This is the fix for problem 4 of 5.
    
    target_path was not freed in the non-error path.
    
    Fixes: e0a58f3e08d4 ("of: overlay: remove a dependency on device node full_name")
    Reported-by: Erhard F. <erhard_f@mailbox.org>
    Signed-off-by: Frank Rowand <frank.rowand@sony.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e04087b3f43ae47d646ed83eabc7911a333d1c33
Author: Frank Rowand <frank.rowand@sony.com>
Date:   Thu Apr 16 16:42:48 2020 -0500

    of: unittest: kmemleak in of_unittest_overlay_high_level()
    
    commit 145fc138f9aae4f9e1331352e301df28e16aed35 upstream.
    
    kmemleak reports several memory leaks from devicetree unittest.
    This is the fix for problem 3 of 5.
    
    of_unittest_overlay_high_level() failed to kfree the newly created
    property when the property named 'name' is skipped.
    
    Fixes: 39a751a4cb7e ("of: change overlay apply input data from unflattened to FDT")
    Reported-by: Erhard F. <erhard_f@mailbox.org>
    Signed-off-by: Frank Rowand <frank.rowand@sony.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 842f7bbaf44cdc5da018474c23938843db6e500b
Author: Frank Rowand <frank.rowand@sony.com>
Date:   Thu Apr 16 16:42:47 2020 -0500

    of: unittest: kmemleak in of_unittest_platform_populate()
    
    commit 216830d2413cc61be3f76bc02ffd905e47d2439e upstream.
    
    kmemleak reports several memory leaks from devicetree unittest.
    This is the fix for problem 2 of 5.
    
    of_unittest_platform_populate() left an elevated reference count for
    grandchild nodes (which are platform devices).  Fix the platform
    device reference counts so that the memory will be freed.
    
    Fixes: fb2caa50fbac ("of/selftest: add testcase for nodes with same name and address")
    Reported-by: Erhard F. <erhard_f@mailbox.org>
    Signed-off-by: Frank Rowand <frank.rowand@sony.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3352cc2f7b71077c3914c7bec8cec24a68b4551b
Author: Frank Rowand <frank.rowand@sony.com>
Date:   Thu Apr 16 16:42:46 2020 -0500

    of: unittest: kmemleak on changeset destroy
    
    commit b3fb36ed694b05738d45218ea72cf7feb10ce2b1 upstream.
    
    kmemleak reports several memory leaks from devicetree unittest.
    This is the fix for problem 1 of 5.
    
    of_unittest_changeset() reaches deeply into the dynamic devicetree
    functions.  Several nodes were left with an elevated reference
    count and thus were not properly cleaned up.  Fix the reference
    counts so that the memory will be freed.
    
    Fixes: 201c910bd689 ("of: Transactional DT support.")
    Reported-by: Erhard F. <erhard_f@mailbox.org>
    Signed-off-by: Frank Rowand <frank.rowand@sony.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8fddc945abac6e5532cf70f16d7c7127304cee1
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Apr 13 10:20:29 2020 +0200

    ALSA: hda: Don't release card at firmware loading error
    
    commit 25faa4bd37c10f19e4b848b9032a17a3d44c6f09 upstream.
    
    At the error path of the firmware loading error, the driver tries to
    release the card object and set NULL to drvdata.  This may be referred
    badly at the possible PM action, as the driver itself is still bound
    and the PM callbacks read the card object.
    
    Instead, we continue the probing as if it were no option set.  This is
    often a better choice than the forced abort, too.
    
    Fixes: 5cb543dba986 ("ALSA: hda - Deferred probing with request_firmware_nowait()")
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207043
    Link: https://lore.kernel.org/r/20200413082034.25166-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 654c9adb64e1bbdccc8cf238087d8eb343f3955f
Author: Zenghui Yu <yuzenghui@huawei.com>
Date:   Wed Apr 8 19:43:52 2020 +0800

    irqchip/mbigen: Free msi_desc on device teardown
    
    commit edfc23f6f9fdbd7825d50ac1f380243cde19b679 upstream.
    
    Using irq_domain_free_irqs_common() on the irqdomain free path will
    leave the MSI descriptor unfreed when platform devices get removed.
    Properly free it by MSI domain free function.
    
    Fixes: 9650c60ebfec0 ("irqchip/mbigen: Create irq domain for each mbigen device")
    Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20200408114352.1604-1-yuzenghui@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79f784c999bc43c55125432b791c6f3821b5995f
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Apr 7 14:10:11 2020 +0200

    netfilter: nf_tables: report EOPNOTSUPP on unsupported flags/object type
    
    commit d9583cdf2f38d0f526d9a8c8564dd2e35e649bc7 upstream.
    
    EINVAL should be used for malformed netlink messages. New userspace
    utility and old kernels might easily result in EINVAL when exercising
    new set features, which is misleading.
    
    Fixes: 8aeff920dcc9 ("netfilter: nf_tables: add stateful object reference to set elements")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f539aa273e61eafee912824bd6e3b3f6eedb56da
Author: Martin Fuzzey <martin.fuzzey@flowbird.group>
Date:   Thu Apr 2 15:51:28 2020 +0200

    ARM: dts: imx6: Use gpc for FEC interrupt controller to fix wake on LAN.
    
    commit 4141f1a40fc0789f6fd4330e171e1edf155426aa upstream.
    
    In order to wake from suspend by ethernet magic packets the GPC
    must be used as intc does not have wakeup functionality.
    
    But the FEC DT node currently uses interrupt-extended,
    specificying intc, thus breaking WoL.
    
    This problem is probably fallout from the stacked domain conversion
    as intc used to chain to GPC.
    
    So replace "interrupts-extended" by "interrupts" to use the default
    parent which is GPC.
    
    Fixes: b923ff6af0d5 ("ARM: imx6: convert GPC to stacked domains")
    
    Signed-off-by: Martin Fuzzey <martin.fuzzey@flowbird.group>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c9c3bc8221337aa06d418025f7390c0596a2d03
Author: Luke Nelson <lukenels@cs.washington.edu>
Date:   Wed Apr 8 18:12:29 2020 +0000

    arm, bpf: Fix bugs with ALU64 {RSH, ARSH} BPF_K shift by 0
    
    commit bb9562cf5c67813034c96afb50bd21130a504441 upstream.
    
    The current arm BPF JIT does not correctly compile RSH or ARSH when the
    immediate shift amount is 0. This causes the "rsh64 by 0 imm" and "arsh64
    by 0 imm" BPF selftests to hang the kernel by reaching an instruction
    the verifier determines to be unreachable.
    
    The root cause is in how immediate right shifts are encoded on arm.
    For LSR and ASR (logical and arithmetic right shift), a bit-pattern
    of 00000 in the immediate encodes a shift amount of 32. When the BPF
    immediate is 0, the generated code shifts by 32 instead of the expected
    behavior (a no-op).
    
    This patch fixes the bugs by adding an additional check if the BPF
    immediate is 0. After the change, the above mentioned BPF selftests pass.
    
    Fixes: 39c13c204bb11 ("arm: eBPF JIT compiler")
    Co-developed-by: Xi Wang <xi.wang@gmail.com>
    Signed-off-by: Xi Wang <xi.wang@gmail.com>
    Signed-off-by: Luke Nelson <luke.r.nels@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20200408181229.10909-1-luke.r.nels@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 097852a187d8ceeade75454407fa897c9b648eae
Author: Michael Walle <michael@walle.cc>
Date:   Fri Mar 27 17:24:50 2020 +0100

    watchdog: sp805: fix restart handler
    
    commit ea104a9e4d3e9ebc26fb78dac35585b142ee288b upstream.
    
    The restart handler is missing two things, first, the registers
    has to be unlocked and second there is no synchronization for the
    write_relaxed() calls.
    
    This was tested on a custom board with the NXP LS1028A SoC.
    
    Fixes: 6c5c0d48b686c ("watchdog: sp805: add restart handler")
    Signed-off-by: Michael Walle <michael@walle.cc>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20200327162450.28506-1-michael@walle.cc
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6375c9877a81896837c79877fef874bc8a2023b
Author: Roman Gushchin <guro@fb.com>
Date:   Fri Feb 28 16:14:11 2020 -0800

    ext4: use non-movable memory for superblock readahead
    
    commit d87f639258a6a5980183f11876c884931ad93da2 upstream.
    
    Since commit a8ac900b8163 ("ext4: use non-movable memory for the
    superblock") buffers for ext4 superblock were allocated using
    the sb_bread_unmovable() helper which allocated buffer heads
    out of non-movable memory blocks. It was necessarily to not block
    page migrations and do not cause cma allocation failures.
    
    However commit 85c8f176a611 ("ext4: preload block group descriptors")
    broke this by introducing pre-reading of the ext4 superblock.
    The problem is that __breadahead() is using __getblk() underneath,
    which allocates buffer heads out of movable memory.
    
    It resulted in page migration failures I've seen on a machine
    with an ext4 partition and a preallocated cma area.
    
    Fix this by introducing sb_breadahead_unmovable() and
    __breadahead_gfp() helpers which use non-movable memory for buffer
    head allocations and use them for the ext4 superblock readahead.
    
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Fixes: 85c8f176a611 ("ext4: preload block group descriptors")
    Signed-off-by: Roman Gushchin <guro@fb.com>
    Link: https://lore.kernel.org/r/20200229001411.128010-1-guro@fb.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 45533ebd5e5ceb5b0cbb865c3e67adaff65356b1
Author: Li Bin <huawei.libin@huawei.com>
Date:   Mon Apr 13 19:29:21 2020 +0800

    scsi: sg: add sg_remove_request in sg_common_write
    
    commit 849f8583e955dbe3a1806e03ecacd5e71cce0a08 upstream.
    
    If the dxfer_len is greater than 256M then the request is invalid and we
    need to call sg_remove_request in sg_common_write.
    
    Link: https://lore.kernel.org/r/1586777361-17339-1-git-send-email-huawei.libin@huawei.com
    Fixes: f930c7043663 ("scsi: sg: only check for dxfer_len greater than 256M")
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Li Bin <huawei.libin@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b91a2361d7709ba6c1958ba0b0207f2a3e7cfdc
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Wed Apr 1 13:23:28 2020 -0500

    objtool: Fix switch table detection in .text.unlikely
    
    commit b401efc120a399dfda1f4d2858a4de365c9b08ef upstream.
    
    If a switch jump table's indirect branch is in a ".cold" subfunction in
    .text.unlikely, objtool doesn't detect it, and instead prints a false
    warning:
    
      drivers/media/v4l2-core/v4l2-ioctl.o: warning: objtool: v4l_print_format.cold()+0xd6: sibling call from callable instruction with modified stack frame
      drivers/hwmon/max6650.o: warning: objtool: max6650_probe.cold()+0xa5: sibling call from callable instruction with modified stack frame
      drivers/media/dvb-frontends/drxk_hard.o: warning: objtool: init_drxk.cold()+0x16f: sibling call from callable instruction with modified stack frame
    
    Fix it by comparing the function, instead of the section and offset.
    
    Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions")
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Miroslav Benes <mbenes@suse.cz>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/157c35d42ca9b6354bbb1604fe9ad7d1153ccb21.1585761021.git.jpoimboe@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db9d273b6bad1b589c238ef9378bf3cec15096b3
Author: Luke Nelson <lukenels@cs.washington.edu>
Date:   Thu Apr 9 15:17:52 2020 -0700

    arm, bpf: Fix offset overflow for BPF_MEM BPF_DW
    
    commit 4178417cc5359c329790a4a8f4a6604612338cca upstream.
    
    This patch fixes an incorrect check in how immediate memory offsets are
    computed for BPF_DW on arm.
    
    For BPF_LDX/ST/STX + BPF_DW, the 32-bit arm JIT breaks down an 8-byte
    access into two separate 4-byte accesses using off+0 and off+4. If off
    fits in imm12, the JIT emits a ldr/str instruction with the immediate
    and avoids the use of a temporary register. While the current check off
    <= 0xfff ensures that the first immediate off+0 doesn't overflow imm12,
    it's not sufficient for the second immediate off+4, which may cause the
    second access of BPF_DW to read/write the wrong address.
    
    This patch fixes the problem by changing the check to
    off <= 0xfff - 4 for BPF_DW, ensuring off+4 will never overflow.
    
    A side effect of simplifying the check is that it now allows using
    negative immediate offsets in ldr/str. This means that small negative
    offsets can also avoid the use of a temporary register.
    
    This patch introduces no new failures in test_verifier or test_bpf.c.
    
    Fixes: c5eae692571d6 ("ARM: net: bpf: improve 64-bit store implementation")
    Fixes: ec19e02b343db ("ARM: net: bpf: fix LDX instructions")
    Co-developed-by: Xi Wang <xi.wang@gmail.com>
    Signed-off-by: Xi Wang <xi.wang@gmail.com>
    Signed-off-by: Luke Nelson <luke.r.nels@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20200409221752.28448-1-luke.r.nels@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>