commit 0661b3d6cfd774e28a2e2ba90a3d87479e5c399b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Apr 24 07:59:16 2020 +0200

    Linux 4.9.220

commit 1e3de68962903b4234bd6dfd60a6d829a56db64b
Author: Samuel Neves <sneves@dei.uc.pt>
Date:   Sat Sep 1 21:14:52 2018 +0100

    x86/vdso: Fix lsl operand order
    
    commit e78e5a91456fcecaa2efbb3706572fe043766f4d upstream.
    
    In the __getcpu function, lsl is using the wrong target and destination
    registers. Luckily, the compiler tends to choose %eax for both variables,
    so it has been working so far.
    
    Fixes: a582c540ac1b ("x86/vdso: Use RDPID in preference to LSL when available")
    Signed-off-by: Samuel Neves <sneves@dei.uc.pt>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Andy Lutomirski <luto@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180901201452.27828-1-sneves@dei.uc.pt
    Signed-off-by: Nobuhiro Iwamatsu (CIP) <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 552e8e39e155bf8532a8c602ebf070dd8d4c4c41
Author: Evalds Iodzevics <evalds.iodzevics@gmail.com>
Date:   Wed Apr 22 11:17:59 2020 +0300

    x86/microcode/intel: replace sync_core() with native_cpuid_reg(eax)
    
    On Intel it is required to do CPUID(1) before reading the microcode
    revision MSR. Current code in 4.4 an 4.9 relies on sync_core() to call
    CPUID, unfortunately on 32 bit machines code inside sync_core() always
    jumps past CPUID instruction as it depends on data structure boot_cpu_data
    witch are not populated correctly so early in boot sequence.
    
    It depends on:
    commit 5dedade6dfa2 ("x86/CPU: Add native CPUID variants returning a single
    datum")
    
    This patch is for 4.4 but also should apply to 4.9
    
    Signed-off-by: Evalds Iodzevics <evalds.iodzevics@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 737677595c76821726dc277e15d982d56b98fc26
Author: Borislav Petkov <bp@suse.de>
Date:   Mon Jan 9 12:41:43 2017 +0100

    x86/CPU: Add native CPUID variants returning a single datum
    
    commit 5dedade6dfa243c130b85d1e4daba6f027805033 upstream.
    
    ... similarly to the cpuid_<reg>() variants.
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: http://lkml.kernel.org/r/20170109114147.5082-2-bp@alien8.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Evalds Iodzevics <evalds.iodzevics@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bed37eb4811eaa67803931e54d221f58ed13481b
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 6ada00436ccd126f5090071793253d00a21873c6
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 eb6f402b87f3be2a1407825c78779a9ecc4d1061
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 a8452311e7a02c2b33974b845de754f9c64a9bd2
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 14d59995ffbb4b42ecb1e9fcf5e329cfcbd81615
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 a42a984c7b0cf8ceab08c0ff581d474d9657b5a7
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 2567276be7417e15f6b5b3720575e865a16a01d0
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 24b731dca3005d3bbea7466b5bc7e3454e94e163
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 5ec603feb973029321de78ab99aac028c76f92bb
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 c08f96aeef579baecde12b9e40deaaad26b3cfac
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 dff0fa65a0d312eb7a14ed0cfa5d981151181240
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 8feaf69773e0953dfe956ddae46610b97ea39b1d
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 9729be90f7b18d9ef191039dae34e232e220429c
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 cb04d347625c2629643bc8328586d6602e0dab6e
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 a99b3884353b14c87a4f2402455ed844b4571b84
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 39227f9d37892aa7cd2d68a8c5d740e4c42a786b
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 6d3a2dca549bd0359acae3f6b9fd8199c4e092f5
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 95c48138f2ecaf6b0b048a6fdb8962e2741766dc
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 30c6c66c1778f54c26d1e56274d6dc7fa9989b0a
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 29eb4e18eb1976517b5ae07ff74ca3e4e2237f9f
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 462cd23758889d2908ff1ef1eca3cd3fd7ac9b33
Author: Frank Rowand <frank.rowand@sony.com>
Date:   Thu Apr 16 16:42:47 2020 -0500

    of: unittest: kmemleak in of_unittest_platform_populate()
    
    [ Upstream commit 216830d2413cc61be3f76bc02ffd905e47d2439e ]
    
    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: Sasha Levin <sashal@kernel.org>

commit 462d89c078340ea3a0ffd46d2be37addadb949a1
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jun 5 13:50:07 2018 +0200

    arm64: cpu_errata: include required headers
    
    commit 94a5d8790e79ab78f499d2d9f1ff2cab63849d9f upstream.
    
    Without including psci.h and arm-smccc.h, we now get a build failure in
    some configurations:
    
    arch/arm64/kernel/cpu_errata.c: In function 'arm64_update_smccc_conduit':
    arch/arm64/kernel/cpu_errata.c:278:10: error: 'psci_ops' undeclared (first use in this function); did you mean 'sysfs_ops'?
    
    arch/arm64/kernel/cpu_errata.c: In function 'arm64_set_ssbd_mitigation':
    arch/arm64/kernel/cpu_errata.c:311:3: error: implicit declaration of function 'arm_smccc_1_1_hvc' [-Werror=implicit-function-declaration]
       arm_smccc_1_1_hvc(ARM_SMCCC_ARCH_WORKAROUND_2, state, NULL);
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8063482e1cbc547e496b1e5c62b9d5155c71f378
Author: Rob Herring <robh@kernel.org>
Date:   Tue Apr 21 13:40:16 2020 +0100

    of: fix missing kobject init for !SYSFS && OF_DYNAMIC config
    
    [ Upstream commit bd82bbf38cbe27f2c65660da801900d71bcc5cc8 ]
    
    The ref counting is broken for OF_DYNAMIC when sysfs is disabled because
    the kobject initialization is skipped. Only the properties
    add/remove/update should be skipped for !SYSFS config.
    
    Tested-by: Nicolas Pitre <nico@linaro.org>
    Reviewed-by: Frank Rowand <frowand.list@gmail.com>
    Acked-by: Grant Likely <grant.likely@secretlab.ca>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e0060e277d3f0989247898dc6ff90beca6e5d6b
Author: Chris Lew <clew@codeaurora.org>
Date:   Tue Apr 21 13:40:15 2020 +0100

    soc: qcom: smem: Use le32_to_cpu for comparison
    
    [ Upstream commit a216000f0140f415cec96129f777b5234c9d142f ]
    
    Endianness can vary in the system, add le32_to_cpu when comparing
    partition sizes from smem.
    
    Signed-off-by: Chris Lew <clew@codeaurora.org>
    Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Andy Gross <andy.gross@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 059f3ff19afa3aa3112492e234382f097c27b0fa
Author: Lior David <qca_liord@qca.qualcomm.com>
Date:   Tue Apr 21 13:40:13 2020 +0100

    wil6210: fix length check in __wmi_send
    
    [ Upstream commit 26a6d5274865532502c682ff378ac8ebe2886238 ]
    
    The current length check:
    sizeof(cmd) + len > r->entry_size
    will allow very large values of len (> U16_MAX - sizeof(cmd))
    and can cause a buffer overflow. Fix the check to cover this case.
    In addition, ensure the mailbox entry_size is not too small,
    since this can also bypass the above check.
    
    Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
    Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0a7e39e8a53f474342e727e1edbdb4bd0952f4f
Author: Mohit Aggarwal <maggarwa@codeaurora.org>
Date:   Tue Apr 21 13:40:07 2020 +0100

    rtc: pm8xxx: Fix issue in RTC write path
    
    [ Upstream commit 83220bf38b77a830f8e62ab1a0d0408304f9b966 ]
    
    In order to set time in rtc, need to disable
    rtc hw before writing into rtc registers.
    
    Also fixes disabling of alarm while setting
    rtc time.
    
    Signed-off-by: Mohit Aggarwal <maggarwa@codeaurora.org>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1310452738952eb82c5adaf655772456f352658
Author: Dedy Lansky <dlansky@codeaurora.org>
Date:   Tue Apr 21 13:40:05 2020 +0100

    wil6210: rate limit wil_rx_refill error
    
    [ Upstream commit 3d6b72729cc2933906de8d2c602ae05e920b2122 ]
    
    wil_err inside wil_rx_refill can flood the log buffer.
    Replace it with wil_err_ratelimited.
    
    Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
    Signed-off-by: Maya Erez <merez@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f341c4e18b1d2ea98700c9897717706c1bf035a
Author: Subhash Jadavani <subhashj@codeaurora.org>
Date:   Tue Apr 21 13:40:04 2020 +0100

    scsi: ufs: ufs-qcom: remove broken hci version quirk
    
    [ Upstream commit 69a6fff068567469c0ef1156ae5ac8d3d71701f0 ]
    
    UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION is only applicable for QCOM UFS host
    controller version 2.x.y and this has been fixed from version 3.x.y
    onwards, hence this change removes this quirk for version 3.x.y onwards.
    
    [mkp: applied by hand]
    
    Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
    Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ebfa3b9b37c926b4625b106ce854a277d2a6cb7
Author: Venkat Gopalakrishnan <venkatg@codeaurora.org>
Date:   Tue Apr 21 13:40:03 2020 +0100

    scsi: ufs: make sure all interrupts are processed
    
    [ Upstream commit 7f6ba4f12e6cbfdefbb95cfd8fc67ece6c15d799 ]
    
    As multiple requests are submitted to the ufs host controller in
    parallel there could be instances where the command completion interrupt
    arrives later for a request that is already processed earlier as the
    corresponding doorbell was cleared when handling the previous
    interrupt. Read the interrupt status in a loop after processing the
    received interrupt to catch such interrupts and handle it.
    
    Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
    Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
    Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6457ade9bc42c3ab7eea29e5045c985b0dfc2302
Author: Dedy Lansky <dlansky@codeaurora.org>
Date:   Tue Apr 21 13:40:02 2020 +0100

    wil6210: fix temperature debugfs
    
    [ Upstream commit 6d9eb7ebae3d7e951bc0999235ae7028eb4cae4f ]
    
    For negative temperatures, "temp" debugfs is showing wrong values.
    Use signed types so proper calculations is done for sub zero
    temperatures.
    
    Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
    Signed-off-by: Maya Erez <merez@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 243ec87d96355063c62a992f198e23e3a6b47be2
Author: Hamad Kadmany <hkadmany@codeaurora.org>
Date:   Tue Apr 21 13:40:01 2020 +0100

    wil6210: increase firmware ready timeout
    
    [ Upstream commit 6ccae584014ef7074359eb4151086beef66ecfa9 ]
    
    Firmware ready event may take longer than
    current timeout in some scenarios, for example
    with multiple RFs connected where each
    requires an initial calibration.
    
    Increase the timeout to support these scenarios.
    
    Signed-off-by: Hamad Kadmany <hkadmany@codeaurora.org>
    Signed-off-by: Maya Erez <merez@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1704eb50f37828697a376542e83bb400ccc3f3a9
Author: Timur Tabi <timur@codeaurora.org>
Date:   Tue Apr 21 13:39:56 2020 +0100

    Revert "gpio: set up initial state from .get_direction()"
    
    [ Upstream commit 1ca2a92b2a99323f666f1b669b7484df4bda05e4 ]
    
    This reverts commit 72d3200061776264941be1b5a9bb8e926b3b30a5.
    
    We cannot blindly query the direction of all GPIOs when the pins are
    first registered.  The get_direction callback normally triggers a
    read/write to hardware, but we shouldn't be touching the hardware for
    an individual GPIO until after it's been properly claimed.
    
    Signed-off-by: Timur Tabi <timur@codeaurora.org>
    Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99d85c48b41944fc5f8a128f8254bcdf86b43df8
Author: Joe Moriarty <joe.moriarty@oracle.com>
Date:   Mon Feb 12 14:51:42 2018 -0500

    drm: NULL pointer dereference [null-pointer-deref] (CWE 476) problem
    
    commit 22a07038c0eaf4d1315a493ce66dcd255accba19 upstream.
    
    The Parfait (version 2.1.0) static code analysis tool found the
    following NULL pointer derefernce problem.
    
    - drivers/gpu/drm/drm_dp_mst_topology.c
    The call to drm_dp_calculate_rad() in function drm_dp_port_setup_pdt()
    could result in a NULL pointer being returned to port->mstb due to a
    failure to allocate memory for port->mstb.
    
    Signed-off-by: Joe Moriarty <joe.moriarty@oracle.com>
    Reviewed-by: Steven Sistare <steven.sistare@oracle.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180212195144.98323-3-joe.moriarty@oracle.com
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae6833f4c24289c14ba3f862409179b1936bff44
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 47bbca6e04342d238d4f69e423b80dece12d916b
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 e3544511b3e900d961d370c7b9cadc51c63ec64c
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 7690585f2197278305d514bd8222e4fcd7fd58ed
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 a289fd864722dcf5363fec66a35965d4964df515
Author: Xiao Yang <yangx.jy@cn.fujitsu.com>
Date:   Tue Apr 14 09:51:45 2020 +0800

    tracing: Fix the race between registering 'snapshot' event trigger and triggering 'snapshot' operation
    
    commit 0bbe7f719985efd9adb3454679ecef0984cb6800 upstream.
    
    Traced event can trigger 'snapshot' operation(i.e. calls snapshot_trigger()
    or snapshot_count_trigger()) when register_snapshot_trigger() has completed
    registration but doesn't allocate buffer for 'snapshot' event trigger.  In
    the rare case, 'snapshot' operation always detects the lack of allocated
    buffer so make register_snapshot_trigger() allocate buffer first.
    
    trigger-snapshot.tc in kselftest reproduces the issue on slow vm:
    -----------------------------------------------------------
    cat trace
    ...
    ftracetest-3028  [002] ....   236.784290: sched_process_fork: comm=ftracetest pid=3028 child_comm=ftracetest child_pid=3036
         <...>-2875  [003] ....   240.460335: tracing_snapshot_instance_cond: *** SNAPSHOT NOT ALLOCATED ***
         <...>-2875  [003] ....   240.460338: tracing_snapshot_instance_cond: *** stopping trace here!   ***
    -----------------------------------------------------------
    
    Link: http://lkml.kernel.org/r/20200414015145.66236-1-yangx.jy@cn.fujitsu.com
    
    Cc: stable@vger.kernel.org
    Fixes: 93e31ffbf417a ("tracing: Add 'snapshot' event trigger command")
    Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fadf30330d9dd4725d57cf06e7799c1f9c69edf
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Fri Mar 13 18:06:55 2020 +0100

    scsi: target: fix hang when multiple threads try to destroy the same iscsi session
    
    [ Upstream commit 57c46e9f33da530a2485fa01aa27b6d18c28c796 ]
    
    A number of hangs have been reported against the target driver; they are
    due to the fact that multiple threads may try to destroy the iscsi session
    at the same time. This may be reproduced for example when a "targetcli
    iscsi/iqn.../tpg1 disable" command is executed while a logout operation is
    underway.
    
    When this happens, two or more threads may end up sleeping and waiting for
    iscsit_close_connection() to execute "complete(session_wait_comp)".  Only
    one of the threads will wake up and proceed to destroy the session
    structure, the remaining threads will hang forever.
    
    Note that if the blocked threads are somehow forced to wake up with
    complete_all(), they will try to free the same iscsi session structure
    destroyed by the first thread, causing double frees, memory corruptions
    etc...
    
    With this patch, the threads that want to destroy the iscsi session will
    increase the session refcount and will set the "session_close" flag to 1;
    then they wait for the driver to close the remaining active connections.
    When the last connection is closed, iscsit_close_connection() will wake up
    all the threads and will wait for the session's refcount to reach zero;
    when this happens, iscsit_close_connection() will destroy the session
    structure because no one is referencing it anymore.
    
     INFO: task targetcli:5971 blocked for more than 120 seconds.
           Tainted: P           OE    4.15.0-72-generic #81~16.04.1
     "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
     targetcli       D    0  5971      1 0x00000080
     Call Trace:
      __schedule+0x3d6/0x8b0
      ? vprintk_func+0x44/0xe0
      schedule+0x36/0x80
      schedule_timeout+0x1db/0x370
      ? __dynamic_pr_debug+0x8a/0xb0
      wait_for_completion+0xb4/0x140
      ? wake_up_q+0x70/0x70
      iscsit_free_session+0x13d/0x1a0 [iscsi_target_mod]
      iscsit_release_sessions_for_tpg+0x16b/0x1e0 [iscsi_target_mod]
      iscsit_tpg_disable_portal_group+0xca/0x1c0 [iscsi_target_mod]
      lio_target_tpg_enable_store+0x66/0xe0 [iscsi_target_mod]
      configfs_write_file+0xb9/0x120
      __vfs_write+0x1b/0x40
      vfs_write+0xb8/0x1b0
      SyS_write+0x5c/0xe0
      do_syscall_64+0x73/0x130
      entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Link: https://lore.kernel.org/r/20200313170656.9716-3-mlombard@redhat.com
    Reported-by: Matt Coleman <mcoleman@datto.com>
    Tested-by: Matt Coleman <mcoleman@datto.com>
    Tested-by: Rahul Kundu <rahul.kundu@chelsio.com>
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8347176c04c09be7662550cf2176aae7f494be4
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Fri Mar 13 18:06:54 2020 +0100

    scsi: target: remove boilerplate code
    
    [ Upstream commit e49a7d994379278d3353d7ffc7994672752fb0ad ]
    
    iscsit_free_session() is equivalent to iscsit_stop_session() followed by a
    call to iscsit_close_session().
    
    Link: https://lore.kernel.org/r/20200313170656.9716-2-mlombard@redhat.com
    Tested-by: Rahul Kundu <rahul.kundu@chelsio.com>
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0c49195cd40ad9d4050a8e14c9e59a490c44ce38
Author: Jim Mattson <jmattson@google.com>
Date:   Fri Dec 13 16:15:15 2019 -0800

    kvm: x86: Host feature SSBD doesn't imply guest feature SPEC_CTRL_SSBD
    
    commit 396d2e878f92ec108e4293f1c77ea3bc90b414ff upstream.
    
    The host reports support for the synthetic feature X86_FEATURE_SSBD
    when any of the three following hardware features are set:
      CPUID.(EAX=7,ECX=0):EDX.SSBD[bit 31]
      CPUID.80000008H:EBX.AMD_SSBD[bit 24]
      CPUID.80000008H:EBX.VIRT_SSBD[bit 25]
    
    Either of the first two hardware features implies the existence of the
    IA32_SPEC_CTRL MSR, but CPUID.80000008H:EBX.VIRT_SSBD[bit 25] does
    not. Therefore, CPUID.(EAX=7,ECX=0):EDX.SSBD[bit 31] should only be
    set in the guest if CPUID.(EAX=7,ECX=0):EDX.SSBD[bit 31] or
    CPUID.80000008H:EBX.AMD_SSBD[bit 24] is set on the host.
    
    Fixes: 0c54914d0c52a ("KVM: x86: use Intel speculation bugs and features as derived in generic x86 code")
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: Jacob Xu <jacobhxu@google.com>
    Reviewed-by: Peter Shier <pshier@google.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Reported-by: Eric Biggers <ebiggers@kernel.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [bwh: Backported to 4.x: adjust indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e0a272f8fd262f541ac766883d7ca801a89dbf93
Author: Goldwyn Rodrigues <rgoldwyn@suse.com>
Date:   Sun Dec 3 21:14:12 2017 -0600

    dm flakey: check for null arg_name in parse_features()
    
    [ Upstream commit 7690e25302dc7d0cd42b349e746fe44b44a94f2b ]
    
    One can crash dm-flakey by specifying more feature arguments than the
    number of features supplied.  Checking for null in arg_name avoids
    this.
    
    dmsetup create flakey-test --table "0 66076080 flakey /dev/sdb9 0 0 180 2 drop_writes"
    
    Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 40a88da4d8a1746c61393f38e9e48b6853ee8298
Author: Jan Kara <jack@suse.cz>
Date:   Tue Mar 31 12:50:16 2020 +0200

    ext4: do not zeroout extents beyond i_disksize
    
    commit 801674f34ecfed033b062a0f217506b93c8d5e8a upstream.
    
    We do not want to create initialized extents beyond end of file because
    for e2fsck it is impossible to distinguish them from a case of corrupted
    file size / extent tree and so it complains like:
    
    Inode 12, i_size is 147456, should be 163840.  Fix? no
    
    Code in ext4_ext_convert_to_initialized() and
    ext4_split_convert_extents() try to make sure it does not create
    initialized extents beyond inode size however they check against
    inode->i_size which is wrong. They should instead check against
    EXT4_I(inode)->i_disksize which is the current inode size on disk.
    That's what e2fsck is going to see in case of crash before all dirty
    data is written. This bug manifests as generic/456 test failure (with
    recent enough fstests where fsx got fixed to properly pass
    FALLOC_KEEP_SIZE_FL flags to the kernel) when run with dioread_lock
    mount option.
    
    CC: stable@vger.kernel.org
    Fixes: 21ca087a3891 ("ext4: Do not zero out uninitialized extents beyond i_size")
    Reviewed-by: Lukas Czerner <lczerner@redhat.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Link: https://lore.kernel.org/r/20200331105016.8674-1-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 890339550a9fbfb800fec76bb3527114ff01a7c6
Author: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
Date:   Fri Apr 10 15:32:57 2020 +0300

    mac80211_hwsim: Use kstrndup() in place of kasprintf()
    
    commit 7ea862048317aa76d0f22334202779a25530980c upstream.
    
    syzbot reports a warning:
    
    precision 33020 too large
    WARNING: CPU: 0 PID: 9618 at lib/vsprintf.c:2471 set_precision+0x150/0x180 lib/vsprintf.c:2471
     vsnprintf+0xa7b/0x19a0 lib/vsprintf.c:2547
     kvasprintf+0xb2/0x170 lib/kasprintf.c:22
     kasprintf+0xbb/0xf0 lib/kasprintf.c:59
     hwsim_del_radio_nl+0x63a/0x7e0 drivers/net/wireless/mac80211_hwsim.c:3625
     genl_family_rcv_msg_doit net/netlink/genetlink.c:672 [inline]
     ...
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Thus it seems that kasprintf() with "%.*s" format can not be used for
    duplicating a string with arbitrary length. Replace it with kstrndup().
    
    Note that later this string is limited to NL80211_WIPHY_NAME_MAXLEN == 64,
    but the code is simpler this way.
    
    Reported-by: syzbot+6693adf1698864d21734@syzkaller.appspotmail.com
    Reported-by: syzbot+a4aee3f42d7584d76761@syzkaller.appspotmail.com
    Cc: stable@kernel.org
    Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
    Link: https://lore.kernel.org/r/20200410123257.14559-1-tuomas.tynkkynen@iki.fi
    [johannes: add note about length limit]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32bb4ca97b2cd22117367b4d620ca02b21defb60
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Thu Apr 2 15:51:18 2020 -0400

    btrfs: check commit root generation in should_ignore_root
    
    commit 4d4225fc228e46948486d8b8207955f0c031b92e upstream.
    
    Previously we would set the reloc root's last snapshot to transid - 1.
    However there was a problem with doing this, and we changed it to
    setting the last snapshot to the generation of the commit node of the fs
    root.
    
    This however broke should_ignore_root().  The assumption is that if we
    are in a generation newer than when the reloc root was created, then we
    would find the reloc root through normal backref lookups, and thus can
    ignore any fs roots we find with an old enough reloc root.
    
    Now that the last snapshot could be considerably further in the past
    than before, we'd end up incorrectly ignoring an fs root.  Thus we'd
    find no nodes for the bytenr we were searching for, and we'd fail to
    relocate anything.  We'd loop through the relocate code again and see
    that there were still used space in that block group, attempt to
    relocate those bytenr's again, fail in the same way, and just loop like
    this forever.  This is tricky in that we have to not modify the fs root
    at all during this time, so we need to have a block group that has data
    in this fs root that is not shared by any other root, which is why this
    has been difficult to reproduce.
    
    Fixes: 054570a1dc94 ("Btrfs: fix relocation incorrectly dropping data references")
    CC: stable@vger.kernel.org # 4.9+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5078ff4de5eebaccc96927f7472aa46330f6da09
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Apr 12 10:13:29 2020 +0200

    ALSA: usb-audio: Don't override ignore_ctl_error value from the map
    
    commit 3507245b82b4362dc9721cbc328644905a3efa22 upstream.
    
    The mapping table may contain also ignore_ctl_error flag for devices
    that are known to behave wild.  Since this flag always writes the
    card's own ignore_ctl_error flag, it overrides the value already set
    by the module option, so it doesn't follow user's expectation.
    Let's fix the code not to clear the flag that has been set by user.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206873
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200412081331.4742-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1a86e3078b43e13ca0aa4e6b564340e6f9b62e0
Author: Colin Ian King <colin.king@canonical.com>
Date:   Sat Feb 8 22:07:20 2020 +0000

    ASoC: Intel: mrfld: return error codes when an error occurs
    
    commit 3025571edd9df653e1ad649f0638368a39d1bbb5 upstream.
    
    Currently function sst_platform_get_resources always returns zero and
    error return codes set by the function are never returned. Fix this
    by returning the error return code in variable ret rather than the
    hard coded zero.
    
    Addresses-Coverity: ("Unused value")
    Fixes: f533a035e4da ("ASoC: Intel: mrfld - create separate module for pci part")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Acked-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20200208220720.36657-1-colin.king@canonical.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5bd70be66c0cdba064cc290249d9ead466a980e5
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Nov 19 11:36:40 2019 +0000

    ASoC: Intel: mrfld: fix incorrect check on p->sink
    
    commit f5e056e1e46fcbb5f74ce560792aeb7d57ce79e6 upstream.
    
    The check on p->sink looks bogus, I believe it should be p->source
    since the following code blocks are related to p->source. Fix
    this by replacing p->sink with p->source.
    
    Fixes: 24c8d14192cc ("ASoC: Intel: mrfld: add DSP core controls")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Addresses-Coverity: ("Copy-paste error")
    Link: https://lore.kernel.org/r/20191119113640.166940-1-colin.king@canonical.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b845d41ffc346b2fd2e44d89e51a0af2cffa3168
Author: Josh Triplett <josh@joshtriplett.org>
Date:   Sat Mar 28 15:34:15 2020 -0700

    ext4: fix incorrect inodes per group in error message
    
    commit b9c538da4e52a7b79dfcf4cfa487c46125066dfb upstream.
    
    If ext4_fill_super detects an invalid number of inodes per group, the
    resulting error message printed the number of blocks per group, rather
    than the number of inodes per group. Fix it to print the correct value.
    
    Fixes: cd6bb35bf7f6d ("ext4: use more strict checks for inodes_per_block on mount")
    Link: https://lore.kernel.org/r/8be03355983a08e5d4eed480944613454d7e2550.1585434649.git.josh@joshtriplett.org
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Signed-off-by: Josh Triplett <josh@joshtriplett.org>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 536d20c0442eda15d3822df110929e6a5d3ef6d9
Author: Josh Triplett <josh@joshtriplett.org>
Date:   Sat Mar 28 14:54:01 2020 -0700

    ext4: fix incorrect group count in ext4_fill_super error message
    
    commit df41460a21b06a76437af040d90ccee03888e8e5 upstream.
    
    ext4_fill_super doublechecks the number of groups before mounting; if
    that check fails, the resulting error message prints the group count
    from the ext4_sb_info sbi, which hasn't been set yet. Print the freshly
    computed group count instead (which at that point has just been computed
    in "blocks_count").
    
    Signed-off-by: Josh Triplett <josh@joshtriplett.org>
    Fixes: 4ec1102813798 ("ext4: Add sanity checks for the superblock before mounting the filesystem")
    Link: https://lore.kernel.org/r/8b957cd1513fcc4550fe675c10bcce2175c33a49.1585431964.git.josh@joshtriplett.org
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0064b0f1fff7316e1261d72d318f338ee8fbfd2d
Author: zhangyi (F) <yi.zhang@huawei.com>
Date:   Mon Feb 17 19:27:06 2020 +0800

    jbd2: improve comments about freeing data buffers whose page mapping is NULL
    
    commit 780f66e59231fcf882f36c63f287252ee47cc75a upstream.
    
    Improve comments in jbd2_journal_commit_transaction() to describe why
    we don't need to clear the buffer_mapped bit for freeing file mapping
    buffers whose page mapping is NULL.
    
    Link: https://lore.kernel.org/r/20200217112706.20085-1-yi.zhang@huawei.com
    Fixes: c96dceeabf76 ("jbd2: do not clear the BH_Mapped flag when forgetting a metadata buffer")
    Suggested-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: zhangyi (F) <yi.zhang@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db1b2190d587edc9e02040e98aeb6c3c59356ee8
Author: Can Guo <cang@codeaurora.org>
Date:   Mon Feb 10 19:40:48 2020 -0800

    scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic
    
    commit c63d6099a7959ecc919b2549dc6b71f53521f819 upstream.
    
    The async version of ufshcd_hold(async == true), which is only called in
    queuecommand path as for now, is expected to work in atomic context, thus
    it should not sleep or schedule out. When it runs into the condition that
    clocks are ON but link is still in hibern8 state, it should bail out
    without flushing the clock ungate work.
    
    Fixes: f2a785ac2312 ("scsi: ufshcd: Fix race between clk scaling and ungate work")
    Link: https://lore.kernel.org/r/1581392451-28743-6-git-send-email-cang@codeaurora.org
    Reviewed-by: Hongwu Su <hongwus@codeaurora.org>
    Reviewed-by: Asutosh Das <asutoshd@codeaurora.org>
    Reviewed-by: Bean Huo <beanhuo@micron.com>
    Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
    Signed-off-by: Can Guo <cang@codeaurora.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6047aaf91f76d36dc762a511b6493d1afc7a0da
Author: Tim Stallard <code@timstallard.me.uk>
Date:   Fri Apr 3 21:26:21 2020 +0100

    net: ipv6: do not consider routes via gateways for anycast address check
    
    [ Upstream commit 03e2a984b6165621f287fadf5f4b5cd8b58dcaba ]
    
    The behaviour for what is considered an anycast address changed in
    commit 45e4fd26683c ("ipv6: Only create RTF_CACHE routes after
    encountering pmtu exception"). This now considers the first
    address in a subnet where there is a route via a gateway
    to be an anycast address.
    
    This breaks path MTU discovery and traceroutes when a host in a
    remote network uses the address at the start of a prefix
    (eg 2600:: advertised as 2600::/48 in the DFZ) as ICMP errors
    will not be sent to anycast addresses.
    
    This patch excludes any routes with a gateway, or via point to
    point links, like the behaviour previously from
    rt6_is_gw_or_nonexthop in net/ipv6/route.c.
    
    This can be tested with:
    ip link add v1 type veth peer name v2
    ip netns add test
    ip netns exec test ip link set lo up
    ip link set v2 netns test
    ip link set v1 up
    ip netns exec test ip link set v2 up
    ip addr add 2001:db8::1/64 dev v1 nodad
    ip addr add 2001:db8:100:: dev lo nodad
    ip netns exec test ip addr add 2001:db8::2/64 dev v2 nodad
    ip netns exec test ip route add unreachable 2001:db8:1::1
    ip netns exec test ip route add 2001:db8:100::/64 via 2001:db8::1
    ip netns exec test sysctl net.ipv6.conf.all.forwarding=1
    ip route add 2001:db8:1::1 via 2001:db8::2
    ping -I 2001:db8::1 2001:db8:1::1 -c1
    ping -I 2001:db8:100:: 2001:db8:1::1 -c1
    ip addr delete 2001:db8:100:: dev lo
    ip netns delete test
    
    Currently the first ping will get back a destination unreachable ICMP
    error, but the second will never get a response, with "icmp6_send:
    acast source" logged. After this patch, both get destination
    unreachable ICMP replies.
    
    Fixes: 45e4fd26683c ("ipv6: Only create RTF_CACHE routes after encountering pmtu exception")
    Signed-off-by: Tim Stallard <code@timstallard.me.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f838a404973390475c8003a5e98c3b847d2cea5
Author: Wang Wenhu <wenhu.wang@vivo.com>
Date:   Wed Apr 8 19:53:53 2020 -0700

    net: qrtr: send msgs from local of same id as broadcast
    
    [ Upstream commit 6dbf02acef69b0742c238574583b3068afbd227c ]
    
    If the local node id(qrtr_local_nid) is not modified after its
    initialization, it equals to the broadcast node id(QRTR_NODE_BCAST).
    So the messages from local node should not be taken as broadcast
    and keep the process going to send them out anyway.
    
    The definitions are as follow:
    static unsigned int qrtr_local_nid = NUMA_NO_NODE;
    
    Fixes: fdf5fd397566 ("net: qrtr: Broadcast messages only from control port")
    Signed-off-by: Wang Wenhu <wenhu.wang@vivo.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1cd63ccd59f90dada407d19a3214404a63cc3140
Author: Taras Chornyi <taras.chornyi@plvision.eu>
Date:   Thu Apr 9 20:25:24 2020 +0300

    net: ipv4: devinet: Fix crash when add/del multicast IP with autojoin
    
    [ Upstream commit 690cc86321eb9bcee371710252742fb16fe96824 ]
    
    When CONFIG_IP_MULTICAST is not set and multicast ip is added to the device
    with autojoin flag or when multicast ip is deleted kernel will crash.
    
    steps to reproduce:
    
    ip addr add 224.0.0.0/32 dev eth0
    ip addr del 224.0.0.0/32 dev eth0
    
    or
    
    ip addr add 224.0.0.0/32 dev eth0 autojoin
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000088
     pc : _raw_write_lock_irqsave+0x1e0/0x2ac
     lr : lock_sock_nested+0x1c/0x60
     Call trace:
      _raw_write_lock_irqsave+0x1e0/0x2ac
      lock_sock_nested+0x1c/0x60
      ip_mc_config.isra.28+0x50/0xe0
      inet_rtm_deladdr+0x1a8/0x1f0
      rtnetlink_rcv_msg+0x120/0x350
      netlink_rcv_skb+0x58/0x120
      rtnetlink_rcv+0x14/0x20
      netlink_unicast+0x1b8/0x270
      netlink_sendmsg+0x1a0/0x3b0
      ____sys_sendmsg+0x248/0x290
      ___sys_sendmsg+0x80/0xc0
      __sys_sendmsg+0x68/0xc0
      __arm64_sys_sendmsg+0x20/0x30
      el0_svc_common.constprop.2+0x88/0x150
      do_el0_svc+0x20/0x80
     el0_sync_handler+0x118/0x190
      el0_sync+0x140/0x180
    
    Fixes: 93a714d6b53d ("multicast: Extend ip address command to enable multicast group join/leave on")
    Signed-off-by: Taras Chornyi <taras.chornyi@plvision.eu>
    Signed-off-by: Vadym Kochan <vadym.kochan@plvision.eu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c72ef9ffaca537f9d13235679e4aed98bc0deaf6
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Tue Apr 7 13:23:21 2020 +0000

    hsr: check protocol version in hsr_newlink()
    
    [ Upstream commit 4faab8c446def7667adf1f722456c2f4c304069c ]
    
    In the current hsr code, only 0 and 1 protocol versions are valid.
    But current hsr code doesn't check the version, which is received by
    userspace.
    
    Test commands:
        ip link add dummy0 type dummy
        ip link add dummy1 type dummy
        ip link add hsr0 type hsr slave1 dummy0 slave2 dummy1 version 4
    
    In the test commands, version 4 is invalid.
    So, the command should be failed.
    
    After this patch, following error will occur.
    "Error: hsr: Only versions 0..1 are supported."
    
    Fixes: ee1c27977284 ("net/hsr: Added support for HSR v1")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac703de11c03b9bb0166bf4cf52e077576c96630
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Feb 26 16:51:58 2020 +0200

    mfd: dln2: Fix sanity checking for endpoints
    
    [ Upstream commit fb945c95a482200876993977008b67ea658bd938 ]
    
    While the commit 2b8bd606b1e6 ("mfd: dln2: More sanity checking for endpoints")
    tries to harden the sanity checks it made at the same time a regression,
    i.e.  mixed in and out endpoints. Obviously it should have been not tested on
    real hardware at that time, but unluckily it didn't happen.
    
    So, fix above mentioned typo and make device being enumerated again.
    
    While here, introduce an enumerator for magic values to prevent similar issue
    to happen in the future.
    
    Fixes: 2b8bd606b1e6 ("mfd: dln2: More sanity checking for endpoints")
    Cc: Oliver Neukum <oneukum@suse.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d304d98e2eac2dfbefb8e88d6b0c6635301d3b9
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Fri Sep 14 23:43:37 2018 -0700

    misc: echo: Remove unnecessary parentheses and simplify check for zero
    
    [ Upstream commit 85dc2c65e6c975baaf36ea30f2ccc0a36a8c8add ]
    
    Clang warns when multiple pairs of parentheses are used for a single
    conditional statement.
    
    drivers/misc/echo/echo.c:384:27: warning: equality comparison with
    extraneous parentheses [-Wparentheses-equality]
            if ((ec->nonupdate_dwell == 0)) {
                 ~~~~~~~~~~~~~~~~~~~~^~~~
    drivers/misc/echo/echo.c:384:27: note: remove extraneous parentheses
    around the comparison to silence this warning
            if ((ec->nonupdate_dwell == 0)) {
                ~                    ^   ~
    drivers/misc/echo/echo.c:384:27: note: use '=' to turn this equality
    comparison into an assignment
            if ((ec->nonupdate_dwell == 0)) {
                                     ^~
                                     =
    1 warning generated.
    
    Remove them and while we're at it, simplify the zero check as '!var' is
    used more than 'var == 0'.
    
    Reported-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3c266a931df9ad84ea0a735d7bb6e8cf7c80cdc
Author: Laurentiu Tudor <laurentiu.tudor@nxp.com>
Date:   Thu Jan 23 11:19:25 2020 +0000

    powerpc/fsl_booke: Avoid creating duplicate tlb1 entry
    
    [ Upstream commit aa4113340ae6c2811e046f08c2bc21011d20a072 ]
    
    In the current implementation, the call to loadcam_multi() is wrapped
    between switch_to_as1() and restore_to_as0() calls so, when it tries
    to create its own temporary AS=1 TLB1 entry, it ends up duplicating
    the existing one created by switch_to_as1(). Add a check to skip
    creating the temporary entry if already running in AS=1.
    
    Fixes: d9e1831a4202 ("powerpc/85xx: Load all early TLB entries at once")
    Cc: stable@vger.kernel.org # v4.4+
    Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    Acked-by: Scott Wood <oss@buserror.net>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200123111914.2565-1-laurentiu.tudor@nxp.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62cd9aa3acae84461b94bb01b0bc06460fc7f085
Author: Wen Yang <wenyang@linux.alibaba.com>
Date:   Fri Apr 3 17:04:08 2020 +0800

    ipmi: fix hung processes in __get_guid()
    
    [ Upstream commit 32830a0534700f86366f371b150b17f0f0d140d7 ]
    
    The wait_event() function is used to detect command completion.
    When send_guid_cmd() returns an error, smi_send() has not been
    called to send data. Therefore, wait_event() should not be used
    on the error path, otherwise it will cause the following warning:
    
    [ 1361.588808] systemd-udevd   D    0  1501   1436 0x00000004
    [ 1361.588813]  ffff883f4b1298c0 0000000000000000 ffff883f4b188000 ffff887f7e3d9f40
    [ 1361.677952]  ffff887f64bd4280 ffffc90037297a68 ffffffff8173ca3b ffffc90000000010
    [ 1361.767077]  00ffc90037297ad0 ffff887f7e3d9f40 0000000000000286 ffff883f4b188000
    [ 1361.856199] Call Trace:
    [ 1361.885578]  [<ffffffff8173ca3b>] ? __schedule+0x23b/0x780
    [ 1361.951406]  [<ffffffff8173cfb6>] schedule+0x36/0x80
    [ 1362.010979]  [<ffffffffa071f178>] get_guid+0x118/0x150 [ipmi_msghandler]
    [ 1362.091281]  [<ffffffff810d5350>] ? prepare_to_wait_event+0x100/0x100
    [ 1362.168533]  [<ffffffffa071f755>] ipmi_register_smi+0x405/0x940 [ipmi_msghandler]
    [ 1362.258337]  [<ffffffffa0230ae9>] try_smi_init+0x529/0x950 [ipmi_si]
    [ 1362.334521]  [<ffffffffa022f350>] ? std_irq_setup+0xd0/0xd0 [ipmi_si]
    [ 1362.411701]  [<ffffffffa0232bd2>] init_ipmi_si+0x492/0x9e0 [ipmi_si]
    [ 1362.487917]  [<ffffffffa0232740>] ? ipmi_pci_probe+0x280/0x280 [ipmi_si]
    [ 1362.568219]  [<ffffffff810021a0>] do_one_initcall+0x50/0x180
    [ 1362.636109]  [<ffffffff812231b2>] ? kmem_cache_alloc_trace+0x142/0x190
    [ 1362.714330]  [<ffffffff811b2ae1>] do_init_module+0x5f/0x200
    [ 1362.781208]  [<ffffffff81123ca8>] load_module+0x1898/0x1de0
    [ 1362.848069]  [<ffffffff811202e0>] ? __symbol_put+0x60/0x60
    [ 1362.913886]  [<ffffffff8130696b>] ? security_kernel_post_read_file+0x6b/0x80
    [ 1362.998514]  [<ffffffff81124465>] SYSC_finit_module+0xe5/0x120
    [ 1363.068463]  [<ffffffff81124465>] ? SYSC_finit_module+0xe5/0x120
    [ 1363.140513]  [<ffffffff811244be>] SyS_finit_module+0xe/0x10
    [ 1363.207364]  [<ffffffff81003c04>] do_syscall_64+0x74/0x180
    
    Fixes: 50c812b2b951 ("[PATCH] ipmi: add full sysfs support")
    Signed-off-by: Wen Yang <wenyang@linux.alibaba.com>
    Cc: Corey Minyard <minyard@acm.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: openipmi-developer@lists.sourceforge.net
    Cc: linux-kernel@vger.kernel.org
    Cc: stable@vger.kernel.org # 2.6.17-
    Message-Id: <20200403090408.58745-1-wenyang@linux.alibaba.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9abfa51e0dd74b14425d2201f65d330487178d1e
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sun Feb 2 17:16:31 2020 +0000

    drm: Remove PageReserved manipulation from drm_pci_alloc
    
    [ Upstream commit ea36ec8623f56791c6ff6738d0509b7920f85220 ]
    
    drm_pci_alloc/drm_pci_free are very thin wrappers around the core dma
    facilities, and we have no special reason within the drm layer to behave
    differently. In particular, since
    
    commit de09d31dd38a50fdce106c15abd68432eebbd014
    Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Date:   Fri Jan 15 16:51:42 2016 -0800
    
        page-flags: define PG_reserved behavior on compound pages
    
        As far as I can see there's no users of PG_reserved on compound pages.
        Let's use PF_NO_COMPOUND here.
    
    it has been illegal to combine GFP_COMP with SetPageReserved, so lets
    stop doing both and leave the dma layer to its own devices.
    
    Reported-by: Taketo Kabe
    Bug: https://gitlab.freedesktop.org/drm/intel/issues/1027
    Fixes: de09d31dd38a ("page-flags: define PG_reserved behavior on compound pages")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: <stable@vger.kernel.org> # v4.5+
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200202171635.4039044-1-chris@chris-wilson.co.uk
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 80e21c3e8fabc203e9e6e76a449613033e496539
Author: Lyude Paul <lyude@redhat.com>
Date:   Wed Jan 22 14:43:20 2020 -0500

    drm/dp_mst: Fix clearing payload state on topology disable
    
    [ Upstream commit 8732fe46b20c951493bfc4dba0ad08efdf41de81 ]
    
    The issues caused by:
    
    commit 64e62bdf04ab ("drm/dp_mst: Remove VCPI while disabling topology
    mgr")
    
    Prompted me to take a closer look at how we clear the payload state in
    general when disabling the topology, and it turns out there's actually
    two subtle issues here.
    
    The first is that we're not grabbing &mgr.payload_lock when clearing the
    payloads in drm_dp_mst_topology_mgr_set_mst(). Seeing as the canonical
    lock order is &mgr.payload_lock -> &mgr.lock (because we always want
    &mgr.lock to be the inner-most lock so topology validation always
    works), this makes perfect sense. It also means that -technically- there
    could be racing between someone calling
    drm_dp_mst_topology_mgr_set_mst() to disable the topology, along with a
    modeset occurring that's modifying the payload state at the same time.
    
    The second is the more obvious issue that Wayne Lin discovered, that
    we're not clearing proposed_payloads when disabling the topology.
    
    I actually can't see any obvious places where the racing caused by the
    first issue would break something, and it could be that some of our
    higher-level locks already prevent this by happenstance, but better safe
    then sorry. So, let's make it so that drm_dp_mst_topology_mgr_set_mst()
    first grabs &mgr.payload_lock followed by &mgr.lock so that we never
    race when modifying the payload state. Then, we also clear
    proposed_payloads to fix the original issue of enabling a new topology
    with a dirty payload state. This doesn't clear any of the drm_dp_vcpi
    structures, but those are getting destroyed along with the ports anyway.
    
    Changes since v1:
    * Use sizeof(mgr->payloads[0])/sizeof(mgr->proposed_vcpis[0]) instead -
      vsyrjala
    
    Cc: Sean Paul <sean@poorly.run>
    Cc: Wayne Lin <Wayne.Lin@amd.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: stable@vger.kernel.org # v4.4+
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200122194321.14953-1-lyude@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 68a417b5befc2aa2c52052511624f1bb7ef7fe6a
Author: Filipe Manana <fdmanana@suse.com>
Date:   Fri Feb 28 13:04:36 2020 +0000

    Btrfs: fix crash during unmount due to race with delayed inode workers
    
    [ Upstream commit f0cc2cd70164efe8f75c5d99560f0f69969c72e4 ]
    
    During unmount we can have a job from the delayed inode items work queue
    still running, that can lead to at least two bad things:
    
    1) A crash, because the worker can try to create a transaction just
       after the fs roots were freed;
    
    2) A transaction leak, because the worker can create a transaction
       before the fs roots are freed and just after we committed the last
       transaction and after we stopped the transaction kthread.
    
    A stack trace example of the crash:
    
     [79011.691214] kernel BUG at lib/radix-tree.c:982!
     [79011.692056] invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC PTI
     [79011.693180] CPU: 3 PID: 1394 Comm: kworker/u8:2 Tainted: G        W         5.6.0-rc2-btrfs-next-54 #2
     (...)
     [79011.696789] Workqueue: btrfs-delayed-meta btrfs_work_helper [btrfs]
     [79011.697904] RIP: 0010:radix_tree_tag_set+0xe7/0x170
     (...)
     [79011.702014] RSP: 0018:ffffb3c84a317ca0 EFLAGS: 00010293
     [79011.702949] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
     [79011.704202] RDX: ffffb3c84a317cb0 RSI: ffffb3c84a317ca8 RDI: ffff8db3931340a0
     [79011.705463] RBP: 0000000000000005 R08: 0000000000000005 R09: ffffffff974629d0
     [79011.706756] R10: ffffb3c84a317bc0 R11: 0000000000000001 R12: ffff8db393134000
     [79011.708010] R13: ffff8db3931340a0 R14: ffff8db393134068 R15: 0000000000000001
     [79011.709270] FS:  0000000000000000(0000) GS:ffff8db3b6a00000(0000) knlGS:0000000000000000
     [79011.710699] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     [79011.711710] CR2: 00007f22c2a0a000 CR3: 0000000232ad4005 CR4: 00000000003606e0
     [79011.712958] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     [79011.714205] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     [79011.715448] Call Trace:
     [79011.715925]  record_root_in_trans+0x72/0xf0 [btrfs]
     [79011.716819]  btrfs_record_root_in_trans+0x4b/0x70 [btrfs]
     [79011.717925]  start_transaction+0xdd/0x5c0 [btrfs]
     [79011.718829]  btrfs_async_run_delayed_root+0x17e/0x2b0 [btrfs]
     [79011.719915]  btrfs_work_helper+0xaa/0x720 [btrfs]
     [79011.720773]  process_one_work+0x26d/0x6a0
     [79011.721497]  worker_thread+0x4f/0x3e0
     [79011.722153]  ? process_one_work+0x6a0/0x6a0
     [79011.722901]  kthread+0x103/0x140
     [79011.723481]  ? kthread_create_worker_on_cpu+0x70/0x70
     [79011.724379]  ret_from_fork+0x3a/0x50
     (...)
    
    The following diagram shows a sequence of steps that lead to the crash
    during ummount of the filesystem:
    
            CPU 1                                             CPU 2                                CPU 3
    
     btrfs_punch_hole()
       btrfs_btree_balance_dirty()
         btrfs_balance_delayed_items()
           --> sees
               fs_info->delayed_root->items
               with value 200, which is greater
               than
               BTRFS_DELAYED_BACKGROUND (128)
               and smaller than
               BTRFS_DELAYED_WRITEBACK (512)
           btrfs_wq_run_delayed_node()
             --> queues a job for
                 fs_info->delayed_workers to run
                 btrfs_async_run_delayed_root()
    
                                                                                                btrfs_async_run_delayed_root()
                                                                                                  --> job queued by CPU 1
    
                                                                                                  --> starts picking and running
                                                                                                      delayed nodes from the
                                                                                                      prepare_list list
    
                                                     close_ctree()
    
                                                       btrfs_delete_unused_bgs()
    
                                                       btrfs_commit_super()
    
                                                         btrfs_join_transaction()
                                                           --> gets transaction N
    
                                                         btrfs_commit_transaction(N)
                                                           --> set transaction state
                                                            to TRANTS_STATE_COMMIT_START
    
                                                                                                 btrfs_first_prepared_delayed_node()
                                                                                                   --> picks delayed node X through
                                                                                                       the prepared_list list
    
                                                           btrfs_run_delayed_items()
    
                                                             btrfs_first_delayed_node()
                                                               --> also picks delayed node X
                                                                   but through the node_list
                                                                   list
    
                                                             __btrfs_commit_inode_delayed_items()
                                                                --> runs all delayed items from
                                                                    this node and drops the
                                                                    node's item count to 0
                                                                    through call to
                                                                    btrfs_release_delayed_inode()
    
                                                             --> finishes running any remaining
                                                                 delayed nodes
    
                                                           --> finishes transaction commit
    
                                                       --> stops cleaner and transaction threads
    
                                                       btrfs_free_fs_roots()
                                                         --> frees all roots and removes them
                                                             from the radix tree
                                                             fs_info->fs_roots_radix
    
                                                                                                 btrfs_join_transaction()
                                                                                                   start_transaction()
                                                                                                     btrfs_record_root_in_trans()
                                                                                                       record_root_in_trans()
                                                                                                         radix_tree_tag_set()
                                                                                                           --> crashes because
                                                                                                               the root is not in
                                                                                                               the radix tree
                                                                                                               anymore
    
    If the worker is able to call btrfs_join_transaction() before the unmount
    task frees the fs roots, we end up leaking a transaction and all its
    resources, since after the call to btrfs_commit_super() and stopping the
    transaction kthread, we don't expect to have any transaction open anymore.
    
    When this situation happens the worker has a delayed node that has no
    more items to run, since the task calling btrfs_run_delayed_items(),
    which is doing a transaction commit, picks the same node and runs all
    its items first.
    
    We can not wait for the worker to complete when running delayed items
    through btrfs_run_delayed_items(), because we call that function in
    several phases of a transaction commit, and that could cause a deadlock
    because the worker calls btrfs_join_transaction() and the task doing the
    transaction commit may have already set the transaction state to
    TRANS_STATE_COMMIT_DOING.
    
    Also it's not possible to get into a situation where only some of the
    items of a delayed node are added to the fs/subvolume tree in the current
    transaction and the remaining ones in the next transaction, because when
    running the items of a delayed inode we lock its mutex, effectively
    waiting for the worker if the worker is running the items of the delayed
    node already.
    
    Since this can only cause issues when unmounting a filesystem, fix it in
    a simple way by waiting for any jobs on the delayed workers queue before
    calling btrfs_commit_supper() at close_ctree(). This works because at this
    point no one can call btrfs_btree_balance_dirty() or
    btrfs_balance_delayed_items(), and if we end up waiting for any worker to
    complete, btrfs_commit_super() will commit the transaction created by the
    worker.
    
    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: Sasha Levin <sashal@kernel.org>

commit 71064ebabe713147844ff38f3efbe8743ff8894f
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Tue Mar 31 22:47:19 2020 +1100

    powerpc/64/tm: Don't let userspace set regs->trap via sigreturn
    
    commit c7def7fbdeaa25feaa19caf4a27c5d10bd8789e4 upstream.
    
    In restore_tm_sigcontexts() we take the trap value directly from the
    user sigcontext with no checking:
    
            err |= __get_user(regs->trap, &sc->gp_regs[PT_TRAP]);
    
    This means we can be in the kernel with an arbitrary regs->trap value.
    
    Although that's not immediately problematic, there is a risk we could
    trigger one of the uses of CHECK_FULL_REGS():
    
            #define CHECK_FULL_REGS(regs)   BUG_ON(regs->trap & 1)
    
    It can also cause us to unnecessarily save non-volatile GPRs again in
    save_nvgprs(), which shouldn't be problematic but is still wrong.
    
    It's also possible it could trick the syscall restart machinery, which
    relies on regs->trap not being == 0xc00 (see 9a81c16b5275 ("powerpc:
    fix double syscall restarts")), though I haven't been able to make
    that happen.
    
    Finally it doesn't match the behaviour of the non-TM case, in
    restore_sigcontext() which zeroes regs->trap.
    
    So change restore_tm_sigcontexts() to zero regs->trap.
    
    This was discovered while testing Nick's upcoming rewrite of the
    syscall entry path. In that series the call to save_nvgprs() prior to
    signal handling (do_notify_resume()) is removed, which leaves the
    low-bit of regs->trap uncleared which can then trigger the FULL_REGS()
    WARNs in setup_tm_sigcontexts().
    
    Fixes: 2b0a576d15e0 ("powerpc: Add new transactional memory state to the signal context")
    Cc: stable@vger.kernel.org # v3.9+
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200401023836.3286664-1-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b8a740401525275de0ede58b90dad537f5806c7
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Wed Mar 27 17:02:54 2019 +0800

    libata: Return correct status in sata_pmp_eh_recover_pm() when ATA_DFLAG_DETACH is set
    
    commit 8305f72f952cff21ce8109dc1ea4b321c8efc5af upstream.
    
    During system resume from suspend, this can be observed on ASM1062 PMP
    controller:
    
    ata10.01: SATA link down (SStatus 0 SControl 330)
    ata10.02: hard resetting link
    ata10.02: SATA link down (SStatus 0 SControl 330)
    ata10.00: configured for UDMA/133
    Kernel panic - not syncing: stack-protector: Kernel
     in: sata_pmp_eh_recover+0xa2b/0xa40
    
    CPU: 2 PID: 230 Comm: scsi_eh_9 Tainted: P OE
    #49-Ubuntu
    Hardware name: System manufacturer System Product
     1001 12/10/2017
    Call Trace:
    dump_stack+0x63/0x8b
    panic+0xe4/0x244
    ? sata_pmp_eh_recover+0xa2b/0xa40
    __stack_chk_fail+0x19/0x20
    sata_pmp_eh_recover+0xa2b/0xa40
    ? ahci_do_softreset+0x260/0x260 [libahci]
    ? ahci_do_hardreset+0x140/0x140 [libahci]
    ? ata_phys_link_offline+0x60/0x60
    ? ahci_stop_engine+0xc0/0xc0 [libahci]
    sata_pmp_error_handler+0x22/0x30
    ahci_error_handler+0x45/0x80 [libahci]
    ata_scsi_port_error_handler+0x29b/0x770
    ? ata_scsi_cmd_error_handler+0x101/0x140
    ata_scsi_error+0x95/0xd0
    ? scsi_try_target_reset+0x90/0x90
    scsi_error_handler+0xd0/0x5b0
    kthread+0x121/0x140
    ? scsi_eh_get_sense+0x200/0x200
    ? kthread_create_worker_on_cpu+0x70/0x70
    ret_from_fork+0x22/0x40
    Kernel Offset: 0xcc00000 from 0xffffffff81000000
    (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
    
    Since sata_pmp_eh_recover_pmp() doens't set rc when ATA_DFLAG_DETACH is
    set, sata_pmp_eh_recover() continues to run. During retry it triggers
    the stack protector.
    
    Set correct rc in sata_pmp_eh_recover_pmp() to let sata_pmp_eh_recover()
    jump to pmp_fail directly.
    
    BugLink: https://bugs.launchpad.net/bugs/1821434
    Cc: stable@vger.kernel.org
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ffdfcd878c88a124c3b13b8a37217225f7c1ecfc
Author: Simon Gander <simon@tuxera.com>
Date:   Fri Apr 10 14:32:16 2020 -0700

    hfsplus: fix crash and filesystem corruption when deleting files
    
    commit 25efb2ffdf991177e740b2f63e92b4ec7d310a92 upstream.
    
    When removing files containing extended attributes, the hfsplus driver may
    remove the wrong entries from the attributes b-tree, causing major
    filesystem damage and in some cases even kernel crashes.
    
    To remove a file, all its extended attributes have to be removed as well.
    The driver does this by looking up all keys in the attributes b-tree with
    the cnid of the file.  Each of these entries then gets deleted using the
    key used for searching, which doesn't contain the attribute's name when it
    should.  Since the key doesn't contain the name, the deletion routine will
    not find the correct entry and instead remove the one in front of it.  If
    parent nodes have to be modified, these become corrupt as well.  This
    causes invalid links and unsorted entries that not even macOS's fsck_hfs
    is able to fix.
    
    To fix this, modify the search key before an entry is deleted from the
    attributes b-tree by copying the found entry's key into the search key,
    therefore ensuring that the correct entry gets removed from the tree.
    
    Signed-off-by: Simon Gander <simon@tuxera.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Anton Altaparmakov <anton@tuxera.com>
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20200327155541.1521-1-simon@tuxera.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88a8e3c5a4c6bd353dc69b48f4a9d9331d19299d
Author: Oliver O'Halloran <oohall@gmail.com>
Date:   Thu Feb 6 17:26:21 2020 +1100

    cpufreq: powernv: Fix use-after-free
    
    commit d0a72efac89d1c35ac55197895201b7b94c5e6ef upstream.
    
    The cpufreq driver has a use-after-free that we can hit if:
    
    a) There's an OCC message pending when the notifier is registered, and
    b) The cpufreq driver fails to register with the core.
    
    When a) occurs the notifier schedules a workqueue item to handle the
    message. The backing work_struct is located on chips[].throttle and
    when b) happens we clean up by freeing the array. Once we get to
    the (now free) queued item and the kernel crashes.
    
    Fixes: c5e29ea7ac14 ("cpufreq: powernv: Fix bugs in powernv_cpufreq_{init/exit}")
    Cc: stable@vger.kernel.org # v4.6+
    Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
    Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200206062622.28235-1-oohall@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5fbbb67f27aa65d4c15a19760b42f292955c9e3
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Apr 10 14:33:43 2020 -0700

    kmod: make request_module() return an error when autoloading is disabled
    
    commit d7d27cfc5cf0766a26a8f56868c5ad5434735126 upstream.
    
    Patch series "module autoloading fixes and cleanups", v5.
    
    This series fixes a bug where request_module() was reporting success to
    kernel code when module autoloading had been completely disabled via
    'echo > /proc/sys/kernel/modprobe'.
    
    It also addresses the issues raised on the original thread
    (https://lkml.kernel.org/lkml/20200310223731.126894-1-ebiggers@kernel.org/T/#u)
    bydocumenting the modprobe sysctl, adding a self-test for the empty path
    case, and downgrading a user-reachable WARN_ONCE().
    
    This patch (of 4):
    
    It's long been possible to disable kernel module autoloading completely
    (while still allowing manual module insertion) by setting
    /proc/sys/kernel/modprobe to the empty string.
    
    This can be preferable to setting it to a nonexistent file since it
    avoids the overhead of an attempted execve(), avoids potential
    deadlocks, and avoids the call to security_kernel_module_request() and
    thus on SELinux-based systems eliminates the need to write SELinux rules
    to dontaudit module_request.
    
    However, when module autoloading is disabled in this way,
    request_module() returns 0.  This is broken because callers expect 0 to
    mean that the module was successfully loaded.
    
    Apparently this was never noticed because this method of disabling
    module autoloading isn't used much, and also most callers don't use the
    return value of request_module() since it's always necessary to check
    whether the module registered its functionality or not anyway.
    
    But improperly returning 0 can indeed confuse a few callers, for example
    get_fs_type() in fs/filesystems.c where it causes a WARNING to be hit:
    
            if (!fs && (request_module("fs-%.*s", len, name) == 0)) {
                    fs = __get_fs_type(name, len);
                    WARN_ONCE(!fs, "request_module fs-%.*s succeeded, but still no fs?\n", len, name);
            }
    
    This is easily reproduced with:
    
            echo > /proc/sys/kernel/modprobe
            mount -t NONEXISTENT none /
    
    It causes:
    
            request_module fs-NONEXISTENT succeeded, but still no fs?
            WARNING: CPU: 1 PID: 1106 at fs/filesystems.c:275 get_fs_type+0xd6/0xf0
            [...]
    
    This should actually use pr_warn_once() rather than WARN_ONCE(), since
    it's also user-reachable if userspace immediately unloads the module.
    Regardless, request_module() should correctly return an error when it
    fails.  So let's make it return -ENOENT, which matches the error when
    the modprobe binary doesn't exist.
    
    I've also sent patches to document and test this case.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Jessica Yu <jeyu@kernel.org>
    Acked-by: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jeff Vander Stoep <jeffv@google.com>
    Cc: Ben Hutchings <benh@debian.org>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20200310223731.126894-1-ebiggers@kernel.org
    Link: http://lkml.kernel.org/r/20200312202552.241885-1-ebiggers@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21d228845fe5fee129b880556776e8a5769323b4
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed Apr 1 13:23:06 2020 -0700

    Input: i8042 - add Acer Aspire 5738z to nomux list
    
    commit ebc68cedec4aead47d8d11623d013cca9bf8e825 upstream.
    
    The Acer Aspire 5738z has a button to disable (and re-enable) the
    touchpad next to the touchpad.
    
    When this button is pressed a LED underneath indicates that the touchpad
    is disabled (and an event is send to userspace and GNOME shows its
    touchpad enabled / disable OSD thingie).
    
    So far so good, but after re-enabling the touchpad it no longer works.
    
    The laptop does not have an external ps2 port, so mux mode is not needed
    and disabling mux mode fixes the touchpad no longer working after toggling
    it off and back on again, so lets add this laptop model to the nomux list.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20200331123947.318908-1-hdegoede@redhat.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ad66322588d9e84b17baba63dddb5d12091991e
Author: Michael Mueller <mimu@linux.ibm.com>
Date:   Tue Mar 3 16:42:01 2020 +0100

    s390/diag: fix display of diagnose call statistics
    
    commit 6c7c851f1b666a8a455678a0b480b9162de86052 upstream.
    
    Show the full diag statistic table and not just parts of it.
    
    The issue surfaced in a KVM guest with a number of vcpus
    defined smaller than NR_DIAG_STAT.
    
    Fixes: 1ec2772e0c3c ("s390/diag: add a statistic for diagnose calls")
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael Mueller <mimu@linux.ibm.com>
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75ace9f0deeb267e600c12b9932d949c982cbb10
Author: Changwei Ge <chge@linux.alibaba.com>
Date:   Fri Apr 10 14:32:38 2020 -0700

    ocfs2: no need try to truncate file beyond i_size
    
    commit 783fda856e1034dee90a873f7654c418212d12d7 upstream.
    
    Linux fallocate(2) with FALLOC_FL_PUNCH_HOLE mode set, its offset can
    exceed the inode size.  Ocfs2 now doesn't allow that offset beyond inode
    size.  This restriction is not necessary and violates fallocate(2)
    semantics.
    
    If fallocate(2) offset is beyond inode size, just return success and do
    nothing further.
    
    Otherwise, ocfs2 will crash the kernel.
    
      kernel BUG at fs/ocfs2//alloc.c:7264!
       ocfs2_truncate_inline+0x20f/0x360 [ocfs2]
       ocfs2_remove_inode_range+0x23c/0xcb0 [ocfs2]
       __ocfs2_change_file_space+0x4a5/0x650 [ocfs2]
       ocfs2_fallocate+0x83/0xa0 [ocfs2]
       vfs_fallocate+0x148/0x230
       SyS_fallocate+0x48/0x80
       do_syscall_64+0x79/0x170
    
    Signed-off-by: Changwei Ge <chge@linux.alibaba.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.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: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20200407082754.17565-1-chge@linux.alibaba.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9945c406c8d29c9f024bd2cf97da54ab913f2bce
Author: Qian Cai <cai@lca.pw>
Date:   Fri Feb 21 23:32:58 2020 -0500

    ext4: fix a data race at inode->i_blocks
    
    commit 28936b62e71e41600bab319f262ea9f9b1027629 upstream.
    
    inode->i_blocks could be accessed concurrently as noticed by KCSAN,
    
     BUG: KCSAN: data-race in ext4_do_update_inode [ext4] / inode_add_bytes
    
     write to 0xffff9a00d4b982d0 of 8 bytes by task 22100 on cpu 118:
      inode_add_bytes+0x65/0xf0
      __inode_add_bytes at fs/stat.c:689
      (inlined by) inode_add_bytes at fs/stat.c:702
      ext4_mb_new_blocks+0x418/0xca0 [ext4]
      ext4_ext_map_blocks+0x1a6b/0x27b0 [ext4]
      ext4_map_blocks+0x1a9/0x950 [ext4]
      _ext4_get_block+0xfc/0x270 [ext4]
      ext4_get_block_unwritten+0x33/0x50 [ext4]
      __block_write_begin_int+0x22e/0xae0
      __block_write_begin+0x39/0x50
      ext4_write_begin+0x388/0xb50 [ext4]
      ext4_da_write_begin+0x35f/0x8f0 [ext4]
      generic_perform_write+0x15d/0x290
      ext4_buffered_write_iter+0x11f/0x210 [ext4]
      ext4_file_write_iter+0xce/0x9e0 [ext4]
      new_sync_write+0x29c/0x3b0
      __vfs_write+0x92/0xa0
      vfs_write+0x103/0x260
      ksys_write+0x9d/0x130
      __x64_sys_write+0x4c/0x60
      do_syscall_64+0x91/0xb05
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
     read to 0xffff9a00d4b982d0 of 8 bytes by task 8 on cpu 65:
      ext4_do_update_inode+0x4a0/0xf60 [ext4]
      ext4_inode_blocks_set at fs/ext4/inode.c:4815
      ext4_mark_iloc_dirty+0xaf/0x160 [ext4]
      ext4_mark_inode_dirty+0x129/0x3e0 [ext4]
      ext4_convert_unwritten_extents+0x253/0x2d0 [ext4]
      ext4_convert_unwritten_io_end_vec+0xc5/0x150 [ext4]
      ext4_end_io_rsv_work+0x22c/0x350 [ext4]
      process_one_work+0x54f/0xb90
      worker_thread+0x80/0x5f0
      kthread+0x1cd/0x1f0
      ret_from_fork+0x27/0x50
    
     4 locks held by kworker/u256:0/8:
      #0: ffff9a025abc4328 ((wq_completion)ext4-rsv-conversion){+.+.}, at: process_one_work+0x443/0xb90
      #1: ffffab5a862dbe20 ((work_completion)(&ei->i_rsv_conversion_work)){+.+.}, at: process_one_work+0x443/0xb90
      #2: ffff9a025a9d0f58 (jbd2_handle){++++}, at: start_this_handle+0x1c1/0x9d0 [jbd2]
      #3: ffff9a00d4b985d8 (&(&ei->i_raw_lock)->rlock){+.+.}, at: ext4_do_update_inode+0xaa/0xf60 [ext4]
     irq event stamp: 3009267
     hardirqs last  enabled at (3009267): [<ffffffff980da9b7>] __find_get_block+0x107/0x790
     hardirqs last disabled at (3009266): [<ffffffff980da8f9>] __find_get_block+0x49/0x790
     softirqs last  enabled at (3009230): [<ffffffff98a0034c>] __do_softirq+0x34c/0x57c
     softirqs last disabled at (3009223): [<ffffffff97cc67a2>] irq_exit+0xa2/0xc0
    
     Reported by Kernel Concurrency Sanitizer on:
     CPU: 65 PID: 8 Comm: kworker/u256:0 Tainted: G L 5.6.0-rc2-next-20200221+ #7
     Hardware name: HPE ProLiant DL385 Gen10/ProLiant DL385 Gen10, BIOS A40 07/10/2019
     Workqueue: ext4-rsv-conversion ext4_end_io_rsv_work [ext4]
    
    The plain read is outside of inode->i_lock critical section which
    results in a data race. Fix it by adding READ_ONCE() there.
    
    Link: https://lore.kernel.org/r/20200222043258.2279-1-cai@lca.pw
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b580a8004a54a8bca16111e4f5b74a050711f92a
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Wed Oct 31 17:55:02 2018 -0700

    rtc: omap: Use define directive for PIN_CONFIG_ACTIVE_HIGH
    
    commit c50156526a2f7176b50134e3e5fb108ba09791b2 upstream.
    
    Clang warns when one enumerated type is implicitly converted to another:
    
    drivers/rtc/rtc-omap.c:574:21: warning: implicit conversion from
    enumeration type 'enum rtc_pin_config_param' to different enumeration
    type 'enum pin_config_param' [-Wenum-conversion]
            {"ti,active-high", PIN_CONFIG_ACTIVE_HIGH, 0},
            ~                  ^~~~~~~~~~~~~~~~~~~~~~
    drivers/rtc/rtc-omap.c:579:12: warning: implicit conversion from
    enumeration type 'enum rtc_pin_config_param' to different enumeration
    type 'enum pin_config_param' [-Wenum-conversion]
            PCONFDUMP(PIN_CONFIG_ACTIVE_HIGH, "input active high", NULL, false),
            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ./include/linux/pinctrl/pinconf-generic.h:163:11: note: expanded from
    macro 'PCONFDUMP'
            .param = a, .display = b, .format = c, .has_arg = d     \
                     ^
    2 warnings generated.
    
    It is expected that pinctrl drivers can extend pin_config_param because
    of the gap between PIN_CONFIG_END and PIN_CONFIG_MAX so this conversion
    isn't an issue. Most drivers that take advantage of this define the
    PIN_CONFIG variables as constants, rather than enumerated values. Do the
    same thing here so that Clang no longer warns.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/144
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e2dadfec520e018085314ce1a4bad5173dad1b0
Author: Fredrik Strupe <fredrik@strupe.net>
Date:   Wed Apr 8 13:29:41 2020 +0200

    arm64: armv8_deprecated: Fix undef_hook mask for thumb setend
    
    commit fc2266011accd5aeb8ebc335c381991f20e26e33 upstream.
    
    For thumb instructions, call_undef_hook() in traps.c first reads a u16,
    and if the u16 indicates a T32 instruction (u16 >= 0xe800), a second
    u16 is read, which then makes up the the lower half-word of a T32
    instruction. For T16 instructions, the second u16 is not read,
    which makes the resulting u32 opcode always have the upper half set to
    0.
    
    However, having the upper half of instr_mask in the undef_hook set to 0
    masks out the upper half of all thumb instructions - both T16 and T32.
    This results in trapped T32 instructions with the lower half-word equal
    to the T16 encoding of setend (b650) being matched, even though the upper
    half-word is not 0000 and thus indicates a T32 opcode.
    
    An example of such a T32 instruction is eaa0b650, which should raise a
    SIGILL since T32 instructions with an eaa prefix are unallocated as per
    Arm ARM, but instead works as a SETEND because the second half-word is set
    to b650.
    
    This patch fixes the issue by extending instr_mask to include the
    upper u32 half, which will still match T16 instructions where the upper
    half is 0, but not T32 instructions.
    
    Fixes: 2d888f48e056 ("arm64: Emulate SETEND for AArch32 tasks")
    Cc: <stable@vger.kernel.org> # 4.0.x-
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Fredrik Strupe <fredrik@strupe.net>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4224680529164e09c4ad2408248616c0232681f7
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Thu Mar 12 18:44:56 2020 +0100

    scsi: zfcp: fix missing erp_lock in port recovery trigger for point-to-point
    
    commit 819732be9fea728623e1ed84eba28def7384ad1f upstream.
    
    v2.6.27 commit cc8c282963bd ("[SCSI] zfcp: Automatically attach remote
    ports") introduced zfcp automatic port scan.
    
    Before that, the user had to use the sysfs attribute "port_add" of an FCP
    device (adapter) to add and open remote (target) ports, even for the remote
    peer port in point-to-point topology. That code path did a proper port open
    recovery trigger taking the erp_lock.
    
    Since above commit, a new helper function zfcp_erp_open_ptp_port()
    performed an UNlocked port open recovery trigger. This can race with other
    parallel recovery triggers. In zfcp_erp_action_enqueue() this could corrupt
    e.g. adapter->erp_total_count or adapter->erp_ready_head.
    
    As already found for fabric topology in v4.17 commit fa89adba1941 ("scsi:
    zfcp: fix infinite iteration on ERP ready list"), there was an endless loop
    during tracing of rport (un)block.  A subsequent v4.18 commit 9e156c54ace3
    ("scsi: zfcp: assert that the ERP lock is held when tracing a recovery
    trigger") introduced a lockdep assertion for that case.
    
    As a side effect, that lockdep assertion now uncovered the unlocked code
    path for PtP. It is from within an adapter ERP action:
    
    zfcp_erp_strategy[1479]  intentionally DROPs erp lock around
                             zfcp_erp_strategy_do_action()
    zfcp_erp_strategy_do_action[1441]      NO erp lock
    zfcp_erp_adapter_strategy[876]         NO erp lock
    zfcp_erp_adapter_strategy_open[855]    NO erp lock
    zfcp_erp_adapter_strategy_open_fsf[806]NO erp lock
    zfcp_erp_adapter_strat_fsf_xconf[772]  erp lock only around
                                           zfcp_erp_action_to_running(),
                                           BUT *_not_* around
                                           zfcp_erp_enqueue_ptp_port()
    zfcp_erp_enqueue_ptp_port[728]         BUG: *_not_* taking erp lock
    _zfcp_erp_port_reopen[432]             assumes to be called with erp lock
    zfcp_erp_action_enqueue[314]           assumes to be called with erp lock
    zfcp_dbf_rec_trig[288]                 _checks_ to be called with erp lock:
            lockdep_assert_held(&adapter->erp_lock);
    
    It causes the following lockdep warning:
    
    WARNING: CPU: 2 PID: 775 at drivers/s390/scsi/zfcp_dbf.c:288
                                zfcp_dbf_rec_trig+0x16a/0x188
    no locks held by zfcperp0.0.17c0/775.
    
    Fix this by using the proper locked recovery trigger helper function.
    
    Link: https://lore.kernel.org/r/20200312174505.51294-2-maier@linux.ibm.com
    Fixes: cc8c282963bd ("[SCSI] zfcp: Automatically attach remote ports")
    Cc: <stable@vger.kernel.org> #v2.6.27+
    Reviewed-by: Jens Remus <jremus@linux.ibm.com>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c02b23ac278fdd610581c24852119e6916f9f60
Author: Shetty, Harshini X (EXT-Sony Mobile) <Harshini.X.Shetty@sony.com>
Date:   Tue Mar 17 09:15:45 2020 +0000

    dm verity fec: fix memory leak in verity_fec_dtr
    
    commit 75fa601934fda23d2f15bf44b09c2401942d8e15 upstream.
    
    Fix below kmemleak detected in verity_fec_ctr. output_pool is
    allocated for each dm-verity-fec device. But it is not freed when
    dm-table for the verity target is removed. Hence free the output
    mempool in destructor function verity_fec_dtr.
    
    unreferenced object 0xffffffffa574d000 (size 4096):
      comm "init", pid 1667, jiffies 4294894890 (age 307.168s)
      hex dump (first 32 bytes):
        8e 36 00 98 66 a8 0b 9b 00 00 00 00 00 00 00 00  .6..f...........
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<0000000060e82407>] __kmalloc+0x2b4/0x340
        [<00000000dd99488f>] mempool_kmalloc+0x18/0x20
        [<000000002560172b>] mempool_init_node+0x98/0x118
        [<000000006c3574d2>] mempool_init+0x14/0x20
        [<0000000008cb266e>] verity_fec_ctr+0x388/0x3b0
        [<000000000887261b>] verity_ctr+0x87c/0x8d0
        [<000000002b1e1c62>] dm_table_add_target+0x174/0x348
        [<000000002ad89eda>] table_load+0xe4/0x328
        [<000000001f06f5e9>] dm_ctl_ioctl+0x3b4/0x5a0
        [<00000000bee5fbb7>] do_vfs_ioctl+0x5dc/0x928
        [<00000000b475b8f5>] __arm64_sys_ioctl+0x70/0x98
        [<000000005361e2e8>] el0_svc_common+0xa0/0x158
        [<000000001374818f>] el0_svc_handler+0x6c/0x88
        [<000000003364e9f4>] el0_svc+0x8/0xc
        [<000000009d84cec9>] 0xffffffffffffffff
    
    Fixes: a739ff3f543af ("dm verity: add support for forward error correction")
    Depends-on: 6f1c819c219f7 ("dm: convert to bioset_init()/mempool_init()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Harshini Shetty <harshini.x.shetty@sony.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b59a2e0a56515df9439b0974d6af92323865e4e5
Author: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Date:   Fri Feb 15 14:44:12 2019 -0800

    mm: Use fixed constant in page_frag_alloc instead of size + 1
    
    commit 8644772637deb121f7ac2df690cbf83fa63d3b70 upstream.
    
    This patch replaces the size + 1 value introduced with the recent fix for 1
    byte allocs with a constant value.
    
    The idea here is to reduce code overhead as the previous logic would have
    to read size into a register, then increment it, and write it back to
    whatever field was being used. By using a constant we can avoid those
    memory reads and arithmetic operations in favor of just encoding the
    maximum value into the operation itself.
    
    Fixes: 2c2ade81741c ("mm: page_alloc: fix ref bias in page_frag_alloc() for 1-byte allocs")
    Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bd075802b09f5062744ddfde7ecf5cde826e5377
Author: Anssi Hannula <anssi.hannula@bitwise.fi>
Date:   Wed Mar 25 12:31:54 2020 +0200

    tools: gpio: Fix out-of-tree build regression
    
    commit 82f04bfe2aff428b063eefd234679b2d693228ed upstream.
    
    Commit 0161a94e2d1c7 ("tools: gpio: Correctly add make dependencies for
    gpio_utils") added a make rule for gpio-utils-in.o but used $(output)
    instead of the correct $(OUTPUT) for the output directory, breaking
    out-of-tree build (O=xx) with the following error:
    
      No rule to make target 'out/tools/gpio/gpio-utils-in.o', needed by 'out/tools/gpio/lsgpio-in.o'.  Stop.
    
    Fix that.
    
    Fixes: 0161a94e2d1c ("tools: gpio: Correctly add make dependencies for gpio_utils")
    Cc: <stable@vger.kernel.org>
    Cc: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
    Link: https://lore.kernel.org/r/20200325103154.32235-1-anssi.hannula@bitwise.fi
    Reviewed-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2a02afce64066409928d68d6f70e222529eb519
Author: Zhenzhong Duan <zhenzhong.duan@oracle.com>
Date:   Thu Jan 17 02:10:59 2019 -0800

    x86/speculation: Remove redundant arch_smt_update() invocation
    
    commit 34d66caf251df91ff27b24a3a786810d29989eca upstream.
    
    With commit a74cfffb03b7 ("x86/speculation: Rework SMT state change"),
    arch_smt_update() is invoked from each individual CPU hotplug function.
    
    Therefore the extra arch_smt_update() call in the sysfs SMT control is
    redundant.
    
    Fixes: a74cfffb03b7 ("x86/speculation: Rework SMT state change")
    Signed-off-by: Zhenzhong Duan <zhenzhong.duan@oracle.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: <konrad.wilk@oracle.com>
    Cc: <dwmw@amazon.co.uk>
    Cc: <bp@suse.de>
    Cc: <srinivas.eeda@oracle.com>
    Cc: <peterz@infradead.org>
    Cc: <hpa@zytor.com>
    Link: https://lkml.kernel.org/r/e2e064f2-e8ef-42ca-bf4f-76b612964752@default
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c91df26c71058853a7e97f403e45163db1be0472
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Apr 13 10:04:49 2019 +0200

    ALSA: hda: Initialize power_state field properly
    
    commit 183ab39eb0ea9879bb68422a83e65f750f3192f0 upstream.
    
    The recent commit 98081ca62cba ("ALSA: hda - Record the current power
    state before suspend/resume calls") made the HD-audio driver to store
    the PM state in power_state field.  This forgot, however, the
    initialization at power up.  Although the codec drivers usually don't
    need to refer to this field in the normal operation, let's initialize
    it properly for consistency.
    
    Fixes: 98081ca62cba ("ALSA: hda - Record the current power state before suspend/resume calls")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e367644b464ab83f6ce5955458bd81299a77252f
Author: Rosioru Dragos <dragos.rosioru@nxp.com>
Date:   Tue Feb 25 17:05:52 2020 +0200

    crypto: mxs-dcp - fix scatterlist linearization for hash
    
    commit fa03481b6e2e82355c46644147b614f18c7a8161 upstream.
    
    The incorrect traversal of the scatterlist, during the linearization phase
    lead to computing the hash value of the wrong input buffer.
    New implementation uses scatterwalk_map_and_copy()
    to address this issue.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 15b59e7c3733 ("crypto: mxs - Add Freescale MXS DCP driver")
    Signed-off-by: Rosioru Dragos <dragos.rosioru@nxp.com>
    Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7b7daf956babcde75c4fddd99244d20f25ddedc
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Mar 4 11:18:23 2020 -0500

    btrfs: drop block from cache on error in relocation
    
    commit 8e19c9732ad1d127b5575a10f4fbcacf740500ff upstream.
    
    If we have an error while building the backref tree in relocation we'll
    process all the pending edges and then free the node.  However if we
    integrated some edges into the cache we'll lose our link to those edges
    by simply freeing this node, which means we'll leak memory and
    references to any roots that we've found.
    
    Instead we need to use remove_backref_node(), which walks through all of
    the edges that are still linked to this node and free's them up and
    drops any root references we may be holding.
    
    CC: stable@vger.kernel.org # 4.9+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.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 b2f7d0adc1260fa33ff3e992d18ff15873e68a67
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Wed Apr 1 10:13:48 2020 +0200

    KVM: VMX: fix crash cleanup when KVM wasn't used
    
    commit dbef2808af6c594922fe32833b30f55f35e9da6d upstream.
    
    If KVM wasn't used at all before we crash the cleanup procedure fails with
     BUG: unable to handle page fault for address: ffffffffffffffc8
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
     PGD 23215067 P4D 23215067 PUD 23217067 PMD 0
     Oops: 0000 [#8] SMP PTI
     CPU: 0 PID: 3542 Comm: bash Kdump: loaded Tainted: G      D           5.6.0-rc2+ #823
     RIP: 0010:crash_vmclear_local_loaded_vmcss.cold+0x19/0x51 [kvm_intel]
    
    The root cause is that loaded_vmcss_on_cpu list is not yet initialized,
    we initialize it in hardware_enable() but this only happens when we start
    a VM.
    
    Previously, we used to have a bitmap with enabled CPUs and that was
    preventing [masking] the issue.
    
    Initialized loaded_vmcss_on_cpu list earlier, right before we assign
    crash_vmclear_loaded_vmcss pointer. blocked_vcpu_on_cpu list and
    blocked_vcpu_on_cpu_lock are moved altogether for consistency.
    
    Fixes: 31603d4fc2bb ("KVM: VMX: Always VMCLEAR in-use VMCSes during crash with kexec support")
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20200401081348.1345307-1-vkuznets@redhat.com>
    Reviewed-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 b1bbaee4759f443210bbdb9025840a382200d630
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Sat Mar 21 12:37:49 2020 -0700

    KVM: VMX: Always VMCLEAR in-use VMCSes during crash with kexec support
    
    commit 31603d4fc2bb4f0815245d496cb970b27b4f636a upstream.
    
    VMCLEAR all in-use VMCSes during a crash, even if kdump's NMI shootdown
    interrupted a KVM update of the percpu in-use VMCS list.
    
    Because NMIs are not blocked by disabling IRQs, it's possible that
    crash_vmclear_local_loaded_vmcss() could be called while the percpu list
    of VMCSes is being modified, e.g. in the middle of list_add() in
    vmx_vcpu_load_vmcs().  This potential corner case was called out in the
    original commit[*], but the analysis of its impact was wrong.
    
    Skipping the VMCLEARs is wrong because it all but guarantees that a
    loaded, and therefore cached, VMCS will live across kexec and corrupt
    memory in the new kernel.  Corruption will occur because the CPU's VMCS
    cache is non-coherent, i.e. not snooped, and so the writeback of VMCS
    memory on its eviction will overwrite random memory in the new kernel.
    The VMCS will live because the NMI shootdown also disables VMX, i.e. the
    in-progress VMCLEAR will #UD, and existing Intel CPUs do not flush the
    VMCS cache on VMXOFF.
    
    Furthermore, interrupting list_add() and list_del() is safe due to
    crash_vmclear_local_loaded_vmcss() using forward iteration.  list_add()
    ensures the new entry is not visible to forward iteration unless the
    entire add completes, via WRITE_ONCE(prev->next, new).  A bad "prev"
    pointer could be observed if the NMI shootdown interrupted list_del() or
    list_add(), but list_for_each_entry() does not consume ->prev.
    
    In addition to removing the temporary disabling of VMCLEAR, open code
    loaded_vmcs_init() in __loaded_vmcs_clear() and reorder VMCLEAR so that
    the VMCS is deleted from the list only after it's been VMCLEAR'd.
    Deleting the VMCS before VMCLEAR would allow a race where the NMI
    shootdown could arrive between list_del() and vmcs_clear() and thus
    neither flow would execute a successful VMCLEAR.  Alternatively, more
    code could be moved into loaded_vmcs_init(), but that gets rather silly
    as the only other user, alloc_loaded_vmcs(), doesn't need the smp_wmb()
    and would need to work around the list_del().
    
    Update the smp_*() comments related to the list manipulation, and
    opportunistically reword them to improve clarity.
    
    [*] https://patchwork.kernel.org/patch/1675731/#3720461
    
    Fixes: 8f536b7697a0 ("KVM: VMX: provide the vmclear function and a bitmap to support VMCLEAR in kdump")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Message-Id: <20200321193751.24985-2-sean.j.christopherson@intel.com>
    Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5163dcd34fdc25865b7bd209eac69f230e21b466
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Tue Feb 18 13:07:15 2020 -0800

    KVM: x86: Allocate new rmap and large page tracking when moving memslot
    
    commit edd4fa37baa6ee8e44dc65523b27bd6fe44c94de upstream.
    
    Reallocate a rmap array and recalcuate large page compatibility when
    moving an existing memslot to correctly handle the alignment properties
    of the new memslot.  The number of rmap entries required at each level
    is dependent on the alignment of the memslot's base gfn with respect to
    that level, e.g. moving a large-page aligned memslot so that it becomes
    unaligned will increase the number of rmap entries needed at the now
    unaligned level.
    
    Not updating the rmap array is the most obvious bug, as KVM accesses
    garbage data beyond the end of the rmap.  KVM interprets the bad data as
    pointers, leading to non-canonical #GPs, unexpected #PFs, etc...
    
      general protection fault: 0000 [#1] SMP
      CPU: 0 PID: 1909 Comm: move_memory_reg Not tainted 5.4.0-rc7+ #139
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
      RIP: 0010:rmap_get_first+0x37/0x50 [kvm]
      Code: <48> 8b 3b 48 85 ff 74 ec e8 6c f4 ff ff 85 c0 74 e3 48 89 d8 5b c3
      RSP: 0018:ffffc9000021bbc8 EFLAGS: 00010246
      RAX: ffff00617461642e RBX: ffff00617461642e RCX: 0000000000000012
      RDX: ffff88827400f568 RSI: ffffc9000021bbe0 RDI: ffff88827400f570
      RBP: 0010000000000000 R08: ffffc9000021bd00 R09: ffffc9000021bda8
      R10: ffffc9000021bc48 R11: 0000000000000000 R12: 0030000000000000
      R13: 0000000000000000 R14: ffff88827427d700 R15: ffffc9000021bce8
      FS:  00007f7eda014700(0000) GS:ffff888277a00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f7ed9216ff8 CR3: 0000000274391003 CR4: 0000000000162eb0
      Call Trace:
       kvm_mmu_slot_set_dirty+0xa1/0x150 [kvm]
       __kvm_set_memory_region.part.64+0x559/0x960 [kvm]
       kvm_set_memory_region+0x45/0x60 [kvm]
       kvm_vm_ioctl+0x30f/0x920 [kvm]
       do_vfs_ioctl+0xa1/0x620
       ksys_ioctl+0x66/0x70
       __x64_sys_ioctl+0x16/0x20
       do_syscall_64+0x4c/0x170
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f7ed9911f47
      Code: <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 21 6f 2c 00 f7 d8 64 89 01 48
      RSP: 002b:00007ffc00937498 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
      RAX: ffffffffffffffda RBX: 0000000001ab0010 RCX: 00007f7ed9911f47
      RDX: 0000000001ab1350 RSI: 000000004020ae46 RDI: 0000000000000004
      RBP: 000000000000000a R08: 0000000000000000 R09: 00007f7ed9214700
      R10: 00007f7ed92149d0 R11: 0000000000000246 R12: 00000000bffff000
      R13: 0000000000000003 R14: 00007f7ed9215000 R15: 0000000000000000
      Modules linked in: kvm_intel kvm irqbypass
      ---[ end trace 0c5f570b3358ca89 ]---
    
    The disallow_lpage tracking is more subtle.  Failure to update results
    in KVM creating large pages when it shouldn't, either due to stale data
    or again due to indexing beyond the end of the metadata arrays, which
    can lead to memory corruption and/or leaking data to guest/userspace.
    
    Note, the arrays for the old memslot are freed by the unconditional call
    to kvm_free_memslot() in __kvm_set_memory_region().
    
    Fixes: 05da45583de9b ("KVM: MMU: large page support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Reviewed-by: Peter Xu <peterx@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5910635639129a19da105ec9f7391633008eb49a
Author: David Hildenbrand <david@redhat.com>
Date:   Fri Apr 3 17:30:47 2020 +0200

    KVM: s390: vsie: Fix delivery of addressing exceptions
    
    commit 4d4cee96fb7a3cc53702a9be8299bf525be4ee98 upstream.
    
    Whenever we get an -EFAULT, we failed to read in guest 2 physical
    address space. Such addressing exceptions are reported via a program
    intercept to the nested hypervisor.
    
    We faked the intercept, we have to return to guest 2. Instead, right
    now we would be returning -EFAULT from the intercept handler, eventually
    crashing the VM.
    the correct thing to do is to return 1 as rc == 1 is the internal
    representation of "we have to go back into g2".
    
    Addressing exceptions can only happen if the g2->g3 page tables
    reference invalid g2 addresses (say, either a table or the final page is
    not accessible - so something that basically never happens in sane
    environments.
    
    Identified by manual code inspection.
    
    Fixes: a3508fbe9dc6 ("KVM: s390: vsie: initial support for nested virtualization")
    Cc: <stable@vger.kernel.org> # v4.8+
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Link: https://lore.kernel.org/r/20200403153050.20569-3-david@redhat.com
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    [borntraeger@de.ibm.com: fix patch description]
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34fbbaef6100b3945a8da589096222b3de0cfc4a
Author: David Hildenbrand <david@redhat.com>
Date:   Fri Apr 3 17:30:46 2020 +0200

    KVM: s390: vsie: Fix region 1 ASCE sanity shadow address checks
    
    commit a1d032a49522cb5368e5dfb945a85899b4c74f65 upstream.
    
    In case we have a region 1 the following calculation
    (31 + ((gmap->asce & _ASCE_TYPE_MASK) >> 2)*11)
    results in 64. As shifts beyond the size are undefined the compiler is
    free to use instructions like sllg. sllg will only use 6 bits of the
    shift value (here 64) resulting in no shift at all. That means that ALL
    addresses will be rejected.
    
    The can result in endless loops, e.g. when prefix cannot get mapped.
    
    Fixes: 4be130a08420 ("s390/mm: add shadow gmap support")
    Tested-by: Janosch Frank <frankja@linux.ibm.com>
    Reported-by: Janosch Frank <frankja@linux.ibm.com>
    Cc: <stable@vger.kernel.org> # v4.8+
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Link: https://lore.kernel.org/r/20200403153050.20569-2-david@redhat.com
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    [borntraeger@de.ibm.com: fix patch description, remove WARN_ON_ONCE]
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit acbc191c1845e3730277e80ce1f9ce330df65050
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Feb 25 22:36:37 2020 +0100

    x86/entry/32: Add missing ASM_CLAC to general_protection entry
    
    commit 3d51507f29f2153a658df4a0674ec5b592b62085 upstream.
    
    All exception entry points must have ASM_CLAC right at the
    beginning. The general_protection entry is missing one.
    
    Fixes: e59d1b0a2419 ("x86-32, smap: Add STAC/CLAC instructions to 32-bit kernel entry")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
    Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com>
    Reviewed-by: Andy Lutomirski <luto@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20200225220216.219537887@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 110012a2c94ad4fa28234a1b39e54fd4114fbaf2
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Mon Mar 30 19:01:04 2020 -0500

    signal: Extend exec_id to 64bits
    
    commit d1e7fd6462ca9fc76650fbe6ca800e35b24267da upstream.
    
    Replace the 32bit exec_id with a 64bit exec_id to make it impossible
    to wrap the exec_id counter.  With care an attacker can cause exec_id
    wrap and send arbitrary signals to a newly exec'd parent.  This
    bypasses the signal sending checks if the parent changes their
    credentials during exec.
    
    The severity of this problem can been seen that in my limited testing
    of a 32bit exec_id it can take as little as 19s to exec 65536 times.
    Which means that it can take as little as 14 days to wrap a 32bit
    exec_id.  Adam Zabrocki has succeeded wrapping the self_exe_id in 7
    days.  Even my slower timing is in the uptime of a typical server.
    Which means self_exec_id is simply a speed bump today, and if exec
    gets noticably faster self_exec_id won't even be a speed bump.
    
    Extending self_exec_id to 64bits introduces a problem on 32bit
    architectures where reading self_exec_id is no longer atomic and can
    take two read instructions.  Which means that is is possible to hit
    a window where the read value of exec_id does not match the written
    value.  So with very lucky timing after this change this still
    remains expoiltable.
    
    I have updated the update of exec_id on exec to use WRITE_ONCE
    and the read of exec_id in do_notify_parent to use READ_ONCE
    to make it clear that there is no locking between these two
    locations.
    
    Link: https://lore.kernel.org/kernel-hardening/20200324215049.GA3710@pi3.com.pl
    Fixes: 2.3.23pre2
    Cc: stable@vger.kernel.org
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e5f3ab397f09ec37c96046bee0e0c644b6c045a
Author: Remi Pommarel <repk@triplefau.lt>
Date:   Sat Feb 29 17:13:47 2020 +0100

    ath9k: Handle txpower changes even when TPC is disabled
    
    commit 968ae2caad0782db5dbbabb560d3cdefd2945d38 upstream.
    
    When TPC is disabled IEEE80211_CONF_CHANGE_POWER event can be handled to
    reconfigure HW's maximum txpower.
    
    This fixes 0dBm txpower setting when user attaches to an interface for
    the first time with the following scenario:
    
    ieee80211_do_open()
        ath9k_add_interface()
            ath9k_set_txpower() /* Set TX power with not yet initialized
                                   sc->hw->conf.power_level */
    
        ieee80211_hw_config() /* Iniatilize sc->hw->conf.power_level and
                                 raise IEEE80211_CONF_CHANGE_POWER */
    
        ath9k_config() /* IEEE80211_CONF_CHANGE_POWER is ignored */
    
    This issue can be reproduced with the following:
    
      $ modprobe -r ath9k
      $ modprobe ath9k
      $ wpa_supplicant -i wlan0 -c /tmp/wpa.conf &
      $ iw dev /* Here TX power is either 0 or 3 depending on RF chain */
      $ killall wpa_supplicant
      $ iw dev /* TX power goes back to calibrated value and subsequent
                  calls will be fine */
    
    Fixes: 283dd11994cde ("ath9k: add per-vif TX power capability")
    Cc: stable@vger.kernel.org
    Signed-off-by: Remi Pommarel <repk@triplefau.lt>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60fa37e53512cd147c6c07fde6a13b5269544d2f
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Jan 22 14:18:42 2019 -0600

    MIPS: OCTEON: irq: Fix potential NULL pointer dereference
    
    commit 792a402c2840054533ef56279c212ef6da87d811 upstream.
    
    There is a potential NULL pointer dereference in case kzalloc()
    fails and returns NULL.
    
    Fix this by adding a NULL check on *cd*
    
    This bug was detected with the help of Coccinelle.
    
    Fixes: 64b139f97c01 ("MIPS: OCTEON: irq: add CIB and other fixes")
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd8faa3ad5d46e08a641fee2bf6306e2b7f0d4c6
Author: Sungbo Eo <mans0n@gorani.run>
Date:   Sat Mar 21 22:38:42 2020 +0900

    irqchip/versatile-fpga: Apply clear-mask earlier
    
    commit 6a214a28132f19ace3d835a6d8f6422ec80ad200 upstream.
    
    Clear its own IRQs before the parent IRQ get enabled, so that the
    remaining IRQs do not accidentally interrupt the parent IRQ controller.
    
    This patch also fixes a reboot bug on OX820 SoC, where the remaining
    rps-timer IRQ raises a GIC interrupt that is left pending. After that,
    the rps-timer IRQ is cleared during driver initialization, and there's
    no IRQ left in rps-irq when local_irq_enable() is called, which evokes
    an error message "unexpected IRQ trap".
    
    Fixes: bdd272cbb97a ("irqchip: versatile FPGA: support cascaded interrupts from DT")
    Signed-off-by: Sungbo Eo <mans0n@gorani.run>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200321133842.2408823-1-mans0n@gorani.run
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7681c217a57642ee53fb86c5ad054510fa00463
Author: Yang Xu <xuyang2018.jy@cn.fujitsu.com>
Date:   Fri Feb 28 12:41:51 2020 +0800

    KEYS: reaching the keys quotas correctly
    
    commit 2e356101e72ab1361821b3af024d64877d9a798d upstream.
    
    Currently, when we add a new user key, the calltrace as below:
    
    add_key()
      key_create_or_update()
        key_alloc()
        __key_instantiate_and_link
          generic_key_instantiate
            key_payload_reserve
              ......
    
    Since commit a08bf91ce28e ("KEYS: allow reaching the keys quotas exactly"),
    we can reach max bytes/keys in key_alloc, but we forget to remove this
    limit when we reserver space for payload in key_payload_reserve. So we
    can only reach max keys but not max bytes when having delta between plen
    and type->def_datalen. Remove this limit when instantiating the key, so we
    can keep consistent with key_alloc.
    
    Also, fix the similar problem in keyctl_chown_key().
    
    Fixes: 0b77f5bfb45c ("keys: make the keyring quotas controllable through /proc/sys")
    Fixes: a08bf91ce28e ("KEYS: allow reaching the keys quotas exactly")
    Cc: stable@vger.kernel.org # 5.0.x
    Cc: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Reviewed-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit acca1bdda6bdc3858ce963eec6487db56cd2e2c0
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Fri Apr 3 22:51:33 2020 +0200

    thermal: devfreq_cooling: inline all stubs for CONFIG_DEVFREQ_THERMAL=n
    
    commit 3f5b9959041e0db6dacbea80bb833bff5900999f upstream.
    
    When CONFIG_DEVFREQ_THERMAL is disabled all functions except
    of_devfreq_cooling_register_power() were already inlined. Also inline
    the last function to avoid compile errors when multiple drivers call
    of_devfreq_cooling_register_power() when CONFIG_DEVFREQ_THERMAL is not
    set. Compilation failed with the following message:
      multiple definition of `of_devfreq_cooling_register_power'
    (which then lists all usages of of_devfreq_cooling_register_power())
    
    Thomas Zimmermann reported this problem [0] on a kernel config with
    CONFIG_DRM_LIMA={m,y}, CONFIG_DRM_PANFROST={m,y} and
    CONFIG_DEVFREQ_THERMAL=n after both, the lima and panfrost drivers
    gained devfreq cooling support.
    
    [0] https://www.spinics.net/lists/dri-devel/msg252825.html
    
    Fixes: a76caf55e5b356 ("thermal: Add devfreq cooling")
    Cc: stable@vger.kernel.org
    Reported-by: Thomas Zimmermann <tzimmermann@suse.de>
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Tested-by: Thomas Zimmermann <tzimmermann@suse.de>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20200403205133.1101808-1-martin.blumenstingl@googlemail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d701332022322a5cc2dd683816e589a72cbb814
Author: Jan Engelhardt <jengelh@inai.de>
Date:   Thu Mar 5 13:24:25 2020 +0100

    acpi/x86: ignore unspecified bit positions in the ACPI global lock field
    
    commit ecb9c790999fd6c5af0f44783bd0217f0b89ec2b upstream.
    
    The value in "new" is constructed from "old" such that all bits defined
    as reserved by the ACPI spec[1] are left untouched. But if those bits
    do not happen to be all zero, "new < 3" will not evaluate to true.
    
    The firmware of the laptop(s) Medion MD63490 / Akoya P15648 comes with
    garbage inside the "FACS" ACPI table. The starting value is
    old=0x4944454d, therefore new=0x4944454e, which is >= 3. Mask off
    the reserved bits.
    
    [1] https://uefi.org/sites/default/files/resources/ACPI_6_2.pdf
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=206553
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Jan Engelhardt <jengelh@inai.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f562b19f32749962d2698dc709eb5a8b927ffc99
Author: Benoit Parrot <bparrot@ti.com>
Date:   Mon Mar 2 14:56:52 2020 +0100

    media: ti-vpe: cal: fix disable_irqs to only the intended target
    
    commit 1db56284b9da9056093681f28db48a09a243274b upstream.
    
    disable_irqs() was mistakenly disabling all interrupts when called.
    This cause all port stream to stop even if only stopping one of them.
    
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Benoit Parrot <bparrot@ti.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dc784d2ea15d3126710007b1971cfa638860e9d
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Apr 3 09:25:15 2020 +0200

    ALSA: pcm: oss: Fix regression by buffer overflow fix
    
    commit ae769d3556644888c964635179ef192995f40793 upstream.
    
    The recent fix for the OOB access in PCM OSS plugins (commit
    f2ecf903ef06: "ALSA: pcm: oss: Avoid plugin buffer overflow") caused a
    regression on OSS applications.  The patch introduced the size check
    in client and slave size calculations to limit to each plugin's buffer
    size, but I overlooked that some code paths call those without
    allocating the buffer but just for estimation.
    
    This patch fixes the bug by skipping the size check for those code
    paths while keeping checking in the actual transfer calls.
    
    Fixes: f2ecf903ef06 ("ALSA: pcm: oss: Avoid plugin buffer overflow")
    Tested-and-reported-by: Jari Ruusu <jari.ruusu@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200403072515.25539-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d21de4b3be0ba001ba081c4d3508ff86f9a7699
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 7 10:44:02 2020 +0200

    ALSA: ice1724: Fix invalid access for enumerated ctl items
    
    commit c47914c00be346bc5b48c48de7b0da5c2d1a296c upstream.
    
    The access to Analog Capture Source control value implemented in
    prodigy_hifi.c is wrong, as caught by the recently introduced sanity
    check; it should be accessing value.enumerated.item[] instead of
    value.integer.value[].  This patch corrects the wrong access pattern.
    
    Fixes: 6b8d6e5518e2 ("[ALSA] ICE1724: Added support for Audiotrak Prodigy 7.1 HiFi & HD2, Hercules Fortissimo IV")
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207139
    Reviewed-by: Jaroslav Kysela <perex@perex.cz>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200407084402.25589-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08f1f7271b76c93ef593e006b46c00042fac7250
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Apr 7 10:44:01 2020 +0200

    ALSA: hda: Fix potential access overflow in beep helper
    
    commit 0ad3f0b384d58f3bd1f4fb87d0af5b8f6866f41a upstream.
    
    The beep control helper function blindly stores the values in two
    stereo channels no matter whether the actual control is mono or
    stereo.  This is practically harmless, but it annoys the recently
    introduced sanity check, resulting in an error when the checker is
    enabled.
    
    This patch corrects the behavior to store only on the defined array
    member.
    
    Fixes: 0401e8548eac ("ALSA: hda - Move beep helper functions to hda_beep.c")
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207139
    Reviewed-by: Jaroslav Kysela <perex@perex.cz>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200407084402.25589-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit feef183962f831194940cbffae46e743390c78d8
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Apr 8 16:04:49 2020 +0200

    ALSA: hda: Add driver blacklist
    
    commit 3c6fd1f07ed03a04debbb9a9d782205f1ef5e2ab upstream.
    
    The recent AMD platform exposes an HD-audio bus but without any actual
    codecs, which is internally tied with a USB-audio device, supposedly.
    It results in "no codecs" error of HD-audio bus driver, and it's
    nothing but a waste of resources.
    
    This patch introduces a static blacklist table for skipping such a
    known bogus PCI SSID entry.  As of writing this patch, the known SSIDs
    are:
    * 1043:874f - ASUS ROG Zenith II / Strix
    * 1462:cb59 - MSI TRX40 Creator
    * 1462:cb60 - MSI TRX40
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206543
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200408140449.22319-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81942cd1c40050de94e2e77846c5ab65bfc6d772
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Apr 8 16:04:48 2020 +0200

    ALSA: usb-audio: Add mixer workaround for TRX40 and co
    
    commit 2a48218f8e23d47bd3e23cfdfb8aa9066f7dc3e6 upstream.
    
    Some recent boards (supposedly with a new AMD platform) contain the
    USB audio class 2 device that is often tied with HD-audio.  The device
    exposes an Input Gain Pad control (id=19, control=12) but this node
    doesn't behave correctly, returning an error for each inquiry of
    GET_MIN and GET_MAX that should have been mandatory.
    
    As a workaround, simply ignore this node by adding a usbmix_name_map
    table entry.  The currently known devices are:
    * 0414:a002 - Gigabyte TRX40 Aorus Pro WiFi
    * 0b05:1916 - ASUS ROG Zenith II
    * 0b05:1917 - ASUS ROG Strix
    * 0db0:0d64 - MSI TRX40 Creator
    * 0db0:543d - MSI TRX40
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206543
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200408140449.22319-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3a0f74cacb193b1d82fb0d578ce696da9c30975
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Mon Feb 3 18:05:32 2020 -0800

    usb: gadget: composite: Inform controller driver of self-powered
    
    commit 5e5caf4fa8d3039140b4548b6ab23dd17fce9b2c upstream.
    
    Different configuration/condition may draw different power. Inform the
    controller driver of the change so it can respond properly (e.g.
    GET_STATUS request). This fixes an issue with setting MaxPower from
    configfs. The composite driver doesn't check this value when setting
    self-powered.
    
    Cc: stable@vger.kernel.org
    Fixes: 88af8bbe4ef7 ("usb: gadget: the start of the configfs interface")
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1cb53343f0eb6cdf0609d4421fad34eeafe731c2
Author: Sriharsha Allenki <sallenki@codeaurora.org>
Date:   Thu Mar 26 17:26:20 2020 +0530

    usb: gadget: f_fs: Fix use after free issue as part of queue failure
    
    commit f63ec55ff904b2f2e126884fcad93175f16ab4bb upstream.
    
    In AIO case, the request is freed up if ep_queue fails.
    However, io_data->req still has the reference to this freed
    request. In the case of this failure if there is aio_cancel
    call on this io_data it will lead to an invalid dequeue
    operation and a potential use after free issue.
    Fix this by setting the io_data->req to NULL when the request
    is freed as part of queue failure.
    
    Fixes: 2e4c7553cd6f ("usb: gadget: f_fs: add aio support")
    Signed-off-by: Sriharsha Allenki <sallenki@codeaurora.org>
    CC: stable <stable@vger.kernel.org>
    Reviewed-by: Peter Chen <peter.chen@nxp.com>
    Link: https://lore.kernel.org/r/20200326115620.12571-1-sallenki@codeaurora.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 427b13485247d35a2cdb9255ae0b391ca94fd21c
Author: 이경택 <gt82.lee@samsung.com>
Date:   Wed Apr 1 18:05:24 2020 +0900

    ASoC: topology: use name_prefix for new kcontrol
    
    commit abca9e4a04fbe9c6df4d48ca7517e1611812af25 upstream.
    
    Current topology doesn't add prefix of component to new kcontrol.
    
    Signed-off-by: Gyeongtaek Lee <gt82.lee@samsung.com>
    Link: https://lore.kernel.org/r/009b01d60804$ae25c2d0$0a714870$@samsung.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bcead1f0d58259db8ddabd919008637fc4299d0
Author: 이경택 <gt82.lee@samsung.com>
Date:   Wed Apr 1 10:04:21 2020 +0900

    ASoC: dpcm: allow start or stop during pause for backend
    
    commit 21fca8bdbb64df1297e8c65a746c4c9f4a689751 upstream.
    
    soc_compr_trigger_fe() allows start or stop after pause_push.
    In dpcm_be_dai_trigger(), however, only pause_release is allowed
    command after pause_push.
    So, start or stop after pause in compress offload is always
    returned as error if the compress offload is used with dpcm.
    To fix the problem, SND_SOC_DPCM_STATE_PAUSED should be allowed
    for start or stop command.
    
    Signed-off-by: Gyeongtaek Lee <gt82.lee@samsung.com>
    Reviewed-by: Vinod Koul <vkoul@kernel.org>
    Link: https://lore.kernel.org/r/004d01d607c1$7a3d5250$6eb7f6f0$@samsung.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 559c37e5f244c721f304641f2a8c903704d327aa
Author: 이경택 <gt82.lee@samsung.com>
Date:   Tue Mar 31 16:55:16 2020 +0900

    ASoC: dapm: connect virtual mux with default value
    
    commit 3bbbb7728fc853d71dbce4073fef9f281fbfb4dd upstream.
    
    Since a virtual mixer has no backing registers
    to decide which path to connect,
    it will try to match with initial state.
    This is to ensure that the default mixer choice will be
    correctly powered up during initialization.
    Invert flag is used to select initial state of the virtual switch.
    Since actual hardware can't be disconnected by virtual switch,
    connected is better choice as initial state in many cases.
    
    Signed-off-by: Gyeongtaek Lee <gt82.lee@samsung.com>
    Link: https://lore.kernel.org/r/01a301d60731$b724ea10$256ebe30$@samsung.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eef86099885b948f0035639142e135bee7a7c5b2
Author: 이경택 <gt82.lee@samsung.com>
Date:   Mon Mar 30 16:35:59 2020 +0900

    ASoC: fix regwmask
    
    commit 0ab070917afdc93670c2d0ea02ab6defb6246a7c upstream.
    
    If regwshift is 32 and the selected architecture compiles '<<' operator
    for signed int literal into rotating shift, '1<<regwshift' became 1 and
    it makes regwmask to 0x0.
    The literal is set to unsigned long to get intended regwmask.
    
    Signed-off-by: Gyeongtaek Lee <gt82.lee@samsung.com>
    Link: https://lore.kernel.org/r/001001d60665$db7af3e0$9270dba0$@samsung.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3b12f19305aac4f0751a85cc35d902e9b11ef73
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu Mar 26 11:26:18 2020 +0800

    misc: rtsx: set correct pcr_ops for rts522A
    
    [ Upstream commit 10cea23b6aae15e8324f4101d785687f2c514fe5 ]
    
    rts522a should use rts522a_pcr_ops, which is
    diffrent with rts5227 in phy/hw init setting.
    
    Fixes: ce6a5acc9387 ("mfd: rtsx: Add support for rts522A")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200326032618.20472-1-yuehaibing@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce216cff2d58b1fce51bb47b9a66666b8c21ed47
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Fri Mar 13 17:17:08 2020 -0400

    btrfs: track reloc roots based on their commit root bytenr
    
    [ Upstream commit ea287ab157c2816bf12aad4cece41372f9d146b4 ]
    
    We always search the commit root of the extent tree for looking up back
    references, however we track the reloc roots based on their current
    bytenr.
    
    This is wrong, if we commit the transaction between relocating tree
    blocks we could end up in this code in build_backref_tree
    
      if (key.objectid == key.offset) {
              /*
               * Only root blocks of reloc trees use backref
               * pointing to itself.
               */
              root = find_reloc_root(rc, cur->bytenr);
              ASSERT(root);
              cur->root = root;
              break;
      }
    
    find_reloc_root() is looking based on the bytenr we had in the commit
    root, but if we've COWed this reloc root we will not find that bytenr,
    and we will trip over the ASSERT(root).
    
    Fix this by using the commit_root->start bytenr for indexing the commit
    root.  Then we change the __update_reloc_root() caller to be used when
    we switch the commit root for the reloc root during commit.
    
    This fixes the panic I was seeing when we started throttling relocation
    for delayed refs.
    
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit daa2bddfcffacedf995c846427c88209e6f99023
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Mar 4 11:18:30 2020 -0500

    btrfs: remove a BUG_ON() from merge_reloc_roots()
    
    [ Upstream commit 7b7b74315b24dc064bc1c683659061c3d48f8668 ]
    
    This was pretty subtle, we default to reloc roots having 0 root refs, so
    if we crash in the middle of the relocation they can just be deleted.
    If we successfully complete the relocation operations we'll set our root
    refs to 1 in prepare_to_merge() and then go on to merge_reloc_roots().
    
    At prepare_to_merge() time if any of the reloc roots have a 0 reference
    still, we will remove that reloc root from our reloc root rb tree, and
    then clean it up later.
    
    However this only happens if we successfully start a transaction.  If
    we've aborted previously we will skip this step completely, and only
    have reloc roots with a reference count of 0, but were never properly
    removed from the reloc control's rb tree.
    
    This isn't a problem per-se, our references are held by the list the
    reloc roots are on, and by the original root the reloc root belongs to.
    If we end up in this situation all the reloc roots will be added to the
    dirty_reloc_list, and then properly dropped at that point.  The reloc
    control will be free'd and the rb tree is no longer used.
    
    There were two options when fixing this, one was to remove the BUG_ON(),
    the other was to make prepare_to_merge() handle the case where we
    couldn't start a trans handle.
    
    IMO this is the cleaner solution.  I started with handling the error in
    prepare_to_merge(), but it turned out super ugly.  And in the end this
    BUG_ON() simply doesn't matter, the cleanup was happening properly, we
    were just panicing because this BUG_ON() only matters in the success
    case.  So I've opted to just remove it and add a comment where it was.
    
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7cdad70ba4fce697ac839249020a0a9c35985435
Author: Boqun Feng <boqun.feng@gmail.com>
Date:   Thu Mar 12 23:12:55 2020 +0800

    locking/lockdep: Avoid recursion in lockdep_count_{for,back}ward_deps()
    
    [ Upstream commit 25016bd7f4caf5fc983bbab7403d08e64cba3004 ]
    
    Qian Cai reported a bug when PROVE_RCU_LIST=y, and read on /proc/lockdep
    triggered a warning:
    
      [ ] DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled)
      ...
      [ ] Call Trace:
      [ ]  lock_is_held_type+0x5d/0x150
      [ ]  ? rcu_lockdep_current_cpu_online+0x64/0x80
      [ ]  rcu_read_lock_any_held+0xac/0x100
      [ ]  ? rcu_read_lock_held+0xc0/0xc0
      [ ]  ? __slab_free+0x421/0x540
      [ ]  ? kasan_kmalloc+0x9/0x10
      [ ]  ? __kmalloc_node+0x1d7/0x320
      [ ]  ? kvmalloc_node+0x6f/0x80
      [ ]  __bfs+0x28a/0x3c0
      [ ]  ? class_equal+0x30/0x30
      [ ]  lockdep_count_forward_deps+0x11a/0x1a0
    
    The warning got triggered because lockdep_count_forward_deps() call
    __bfs() without current->lockdep_recursion being set, as a result
    a lockdep internal function (__bfs()) is checked by lockdep, which is
    unexpected, and the inconsistency between the irq-off state and the
    state traced by lockdep caused the warning.
    
    Apart from this warning, lockdep internal functions like __bfs() should
    always be protected by current->lockdep_recursion to avoid potential
    deadlocks and data inconsistency, therefore add the
    current->lockdep_recursion on-and-off section to protect __bfs() in both
    lockdep_count_forward_deps() and lockdep_count_backward_deps()
    
    Reported-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20200312151258.128036-1-boqun.feng@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ee0ba8c3e615a4912c990bdf01ebabc5607b976e
Author: Arvind Sankar <nivedita@alum.mit.edu>
Date:   Sun Mar 8 09:08:44 2020 +0100

    x86/boot: Use unsigned comparison for addresses
    
    [ Upstream commit 81a34892c2c7c809f9c4e22c5ac936ae673fb9a2 ]
    
    The load address is compared with LOAD_PHYSICAL_ADDR using a signed
    comparison currently (using jge instruction).
    
    When loading a 64-bit kernel using the new efi32_pe_entry() point added by:
    
      97aa276579b2 ("efi/x86: Add true mixed mode entry point into .compat section")
    
    using Qemu with -m 3072, the firmware actually loads us above 2Gb,
    resulting in a very early crash.
    
    Use the JAE instruction to perform a unsigned comparison instead, as physical
    addresses should be considered unsigned.
    
    Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20200301230436.2246909-6-nivedita@alum.mit.edu
    Link: https://lore.kernel.org/r/20200308080859.21568-14-ardb@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e0d199c1ebb28b5e2b9609134fcb95b7e66ddca2
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Wed Nov 13 14:08:45 2019 -0600

    gfs2: Don't demote a glock until its revokes are written
    
    [ Upstream commit df5db5f9ee112e76b5202fbc331f990a0fc316d6 ]
    
    Before this patch, run_queue would demote glocks based on whether
    there are any more holders. But if the glock has pending revokes that
    haven't been written to the media, giving up the glock might end in
    file system corruption if the revokes never get written due to
    io errors, node crashes and fences, etc. In that case, another node
    will replay the metadata blocks associated with the glock, but
    because the revoke was never written, it could replay that block
    even though the glock had since been granted to another node who
    might have made changes.
    
    This patch changes the logic in run_queue so that it never demotes
    a glock until its count of pending revokes reaches zero.
    
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Reviewed-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2e70b9a8adbdb7ec8d743f0a6abe77954eb1f71f
Author: John Garry <john.garry@huawei.com>
Date:   Fri Feb 28 19:33:35 2020 +0800

    libata: Remove extra scsi_host_put() in ata_scsi_add_hosts()
    
    [ Upstream commit 1d72f7aec3595249dbb83291ccac041a2d676c57 ]
    
    If the call to scsi_add_host_with_dma() in ata_scsi_add_hosts() fails,
    then we may get use-after-free KASAN warns:
    
    ==================================================================
    BUG: KASAN: use-after-free in kobject_put+0x24/0x180
    Read of size 1 at addr ffff0026b8c80364 by task swapper/0/1
    CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W         5.6.0-rc3-00004-g5a71b206ea82-dirty #1765
    Hardware name: Huawei TaiShan 200 (Model 2280)/BC82AMDD, BIOS 2280-V2 CS V3.B160.01 02/24/2020
    Call trace:
    dump_backtrace+0x0/0x298
    show_stack+0x14/0x20
    dump_stack+0x118/0x190
    print_address_description.isra.9+0x6c/0x3b8
    __kasan_report+0x134/0x23c
    kasan_report+0xc/0x18
    __asan_load1+0x5c/0x68
    kobject_put+0x24/0x180
    put_device+0x10/0x20
    scsi_host_put+0x10/0x18
    ata_devres_release+0x74/0xb0
    release_nodes+0x2d0/0x470
    devres_release_all+0x50/0x78
    really_probe+0x2d4/0x560
    driver_probe_device+0x7c/0x148
    device_driver_attach+0x94/0xa0
    __driver_attach+0xa8/0x110
    bus_for_each_dev+0xe8/0x158
    driver_attach+0x30/0x40
    bus_add_driver+0x220/0x2e0
    driver_register+0xbc/0x1d0
    __pci_register_driver+0xbc/0xd0
    ahci_pci_driver_init+0x20/0x28
    do_one_initcall+0xf0/0x608
    kernel_init_freeable+0x31c/0x384
    kernel_init+0x10/0x118
    ret_from_fork+0x10/0x18
    
    Allocated by task 5:
    save_stack+0x28/0xc8
    __kasan_kmalloc.isra.8+0xbc/0xd8
    kasan_kmalloc+0xc/0x18
    __kmalloc+0x1a8/0x280
    scsi_host_alloc+0x44/0x678
    ata_scsi_add_hosts+0x74/0x268
    ata_host_register+0x228/0x488
    ahci_host_activate+0x1c4/0x2a8
    ahci_init_one+0xd18/0x1298
    local_pci_probe+0x74/0xf0
    work_for_cpu_fn+0x2c/0x48
    process_one_work+0x488/0xc08
    worker_thread+0x330/0x5d0
    kthread+0x1c8/0x1d0
    ret_from_fork+0x10/0x18
    
    Freed by task 5:
    save_stack+0x28/0xc8
    __kasan_slab_free+0x118/0x180
    kasan_slab_free+0x10/0x18
    slab_free_freelist_hook+0xa4/0x1a0
    kfree+0xd4/0x3a0
    scsi_host_dev_release+0x100/0x148
    device_release+0x7c/0xe0
    kobject_put+0xb0/0x180
    put_device+0x10/0x20
    scsi_host_put+0x10/0x18
    ata_scsi_add_hosts+0x210/0x268
    ata_host_register+0x228/0x488
    ahci_host_activate+0x1c4/0x2a8
    ahci_init_one+0xd18/0x1298
    local_pci_probe+0x74/0xf0
    work_for_cpu_fn+0x2c/0x48
    process_one_work+0x488/0xc08
    worker_thread+0x330/0x5d0
    kthread+0x1c8/0x1d0
    ret_from_fork+0x10/0x18
    
    There is also refcount issue, as well:
    WARNING: CPU: 1 PID: 1 at lib/refcount.c:28 refcount_warn_saturate+0xf8/0x170
    
    The issue is that we make an erroneous extra call to scsi_host_put()
    for that host:
    
    So in ahci_init_one()->ata_host_alloc_pinfo()->ata_host_alloc(), we setup
    a device release method - ata_devres_release() - which intends to release
    the SCSI hosts:
    
    static void ata_devres_release(struct device *gendev, void *res)
    {
            ...
            for (i = 0; i < host->n_ports; i++) {
                    struct ata_port *ap = host->ports[i];
    
                    if (!ap)
                            continue;
    
                    if (ap->scsi_host)
                            scsi_host_put(ap->scsi_host);
    
            }
            ...
    }
    
    However in the ata_scsi_add_hosts() error path, we also call
    scsi_host_put() for the SCSI hosts.
    
    Fix by removing the the scsi_host_put() calls in ata_scsi_add_hosts() and
    leave this to ata_devres_release().
    
    Fixes: f31871951b38 ("libata: separate out ata_host_alloc() and ata_host_register()")
    Signed-off-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e9a6040f7a9d60e490ece8bc548ec47f50851a0a
Author: Andy Lutomirski <luto@kernel.org>
Date:   Thu Mar 12 15:35:51 2020 -0700

    selftests/x86/ptrace_syscall_32: Fix no-vDSO segfault
    
    [ Upstream commit 630b99ab60aa972052a4202a1ff96c7e45eb0054 ]
    
    If AT_SYSINFO is not present, don't try to call a NULL pointer.
    
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/faaf688265a7e1a5b944d6f8bc0f6368158306d3.1584052409.git.luto@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7539ebd22e9d42c19e12de6d4488a388d51572a
Author: Michael Wang <yun.wang@linux.alibaba.com>
Date:   Wed Mar 18 10:15:15 2020 +0800

    sched: Avoid scale real weight down to zero
    
    [ Upstream commit 26cf52229efc87e2effa9d788f9b33c40fb3358a ]
    
    During our testing, we found a case that shares no longer
    working correctly, the cgroup topology is like:
    
      /sys/fs/cgroup/cpu/A          (shares=102400)
      /sys/fs/cgroup/cpu/A/B        (shares=2)
      /sys/fs/cgroup/cpu/A/B/C      (shares=1024)
    
      /sys/fs/cgroup/cpu/D          (shares=1024)
      /sys/fs/cgroup/cpu/D/E        (shares=1024)
      /sys/fs/cgroup/cpu/D/E/F      (shares=1024)
    
    The same benchmark is running in group C & F, no other tasks are
    running, the benchmark is capable to consumed all the CPUs.
    
    We suppose the group C will win more CPU resources since it could
    enjoy all the shares of group A, but it's F who wins much more.
    
    The reason is because we have group B with shares as 2, since
    A->cfs_rq.load.weight == B->se.load.weight == B->shares/nr_cpus,
    so A->cfs_rq.load.weight become very small.
    
    And in calc_group_shares() we calculate shares as:
    
      load = max(scale_load_down(cfs_rq->load.weight), cfs_rq->avg.load_avg);
      shares = (tg_shares * load) / tg_weight;
    
    Since the 'cfs_rq->load.weight' is too small, the load become 0
    after scale down, although 'tg_shares' is 102400, shares of the se
    which stand for group A on root cfs_rq become 2.
    
    While the se of D on root cfs_rq is far more bigger than 2, so it
    wins the battle.
    
    Thus when scale_load_down() scale real weight down to 0, it's no
    longer telling the real story, the caller will have the wrong
    information and the calculation will be buggy.
    
    This patch add check in scale_load_down(), so the real weight will
    be >= MIN_SHARES after scale, after applied the group C wins as
    expected.
    
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Michael Wang <yun.wang@linux.alibaba.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>
    Link: https://lkml.kernel.org/r/38e8e212-59a1-64b2-b247-b6d0b52d8dc1@linux.alibaba.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b8147a176e30219e708d325a9b39831b1a73efa
Author: Sungbo Eo <mans0n@gorani.run>
Date:   Thu Mar 19 11:34:48 2020 +0900

    irqchip/versatile-fpga: Handle chained IRQs properly
    
    [ Upstream commit 486562da598c59e9f835b551d7cf19507de2d681 ]
    
    Enclose the chained handler with chained_irq_{enter,exit}(), so that the
    muxed interrupts get properly acked.
    
    This patch also fixes a reboot bug on OX820 SoC, where the jiffies timer
    interrupt is never acked. The kernel waits a clock tick forever in
    calibrate_delay_converge(), which leads to a boot hang.
    
    Fixes: c41b16f8c9d9 ("ARM: integrator/versatile: consolidate FPGA IRQ handling code")
    Signed-off-by: Sungbo Eo <mans0n@gorani.run>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20200319023448.1479701-1-mans0n@gorani.run
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bdeeb6cbfa5f8374877609932dfad743d7e8cdbd
Author: Alain Volmat <avolmat@me.com>
Date:   Thu Mar 26 22:22:43 2020 +0100

    i2c: st: fix missing struct parameter description
    
    [ Upstream commit f491c6687332920e296d0209e366fe2ca7eab1c6 ]
    
    Fix a missing struct parameter description to allow
    warning free W=1 compilation.
    
    Signed-off-by: Alain Volmat <avolmat@me.com>
    Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f535c7506dfe3c0e829b4232b5c2d205254bc981
Author: Xu Wang <vulab@iscas.ac.cn>
Date:   Thu Mar 26 18:14:29 2020 +0800

    qlcnic: Fix bad kzalloc null test
    
    [ Upstream commit bcaeb886ade124331a6f3a5cef34a3f1484c0a03 ]
    
    In qlcnic_83xx_get_reset_instruction_template, the variable
    of null test is bad, so correct it.
    
    Signed-off-by: Xu Wang <vulab@iscas.ac.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3c56ccde964aef46c69e6f7065090743bc7512b9
Author: Zheng Wei <wei.zheng@vivo.com>
Date:   Mon Mar 16 22:23:47 2020 +0800

    net: vxge: fix wrong __VA_ARGS__ usage
    
    [ Upstream commit b317538c47943f9903860d83cc0060409e12d2ff ]
    
    printk in macro vxge_debug_ll uses __VA_ARGS__ without "##" prefix,
    it causes a build error when there is no variable
    arguments(e.g. only fmt is specified.).
    
    Signed-off-by: Zheng Wei <wei.zheng@vivo.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b41174d9214db1451b1137288e3051317f647bf1
Author: Ondrej Jirman <megous@megous.com>
Date:   Fri Feb 21 21:27:26 2020 +0100

    bus: sunxi-rsb: Return correct data when mixing 16-bit and 8-bit reads
    
    [ Upstream commit a43ab30dcd4a1abcdd0d2461bf1cf7c0817f6cd3 ]
    
    When doing a 16-bit read that returns data in the MSB byte, the
    RSB_DATA register will keep the MSB byte unchanged when doing
    the following 8-bit read. sunxi_rsb_read() will then return
    a result that contains high byte from 16-bit read mixed with
    the 8-bit result.
    
    The consequence is that after this happens the PMIC's regmap will
    look like this: (0x33 is the high byte from the 16-bit read)
    
    % cat /sys/kernel/debug/regmap/sunxi-rsb-3a3/registers
    00: 33
    01: 33
    02: 33
    03: 33
    04: 33
    05: 33
    06: 33
    07: 33
    08: 33
    09: 33
    0a: 33
    0b: 33
    0c: 33
    0d: 33
    0e: 33
    [snip]
    
    Fix this by masking the result of the read with the correct mask
    based on the size of the read. There are no 16-bit users in the
    mainline kernel, so this doesn't need to get into the stable tree.
    
    Signed-off-by: Ondrej Jirman <megous@megous.com>
    Acked-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Signed-off-by: Sasha Levin <sashal@kernel.org>