commit bae31eef2a167ef160ab2703b6a2f5bbecd98d92
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Oct 1 13:12:53 2020 +0200

    Linux 4.14.200
    
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Link: https://lore.kernel.org/r/20200929105935.184737111@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7d9b2ec6d95b82b6da47bbcb61c64a6923f20d2
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Oct 31 10:59:46 2019 +0100

    ata: sata_mv, avoid trigerrable BUG_ON
    
    commit e9f691d899188679746eeb96e6cb520459eda9b4 upstream.
    
    There are several reports that the BUG_ON on unsupported command in
    mv_qc_prep can be triggered under some circumstances:
    https://bugzilla.suse.com/show_bug.cgi?id=1110252
    https://serverfault.com/questions/888897/raid-problems-after-power-outage
    https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1652185
    https://bugs.centos.org/view.php?id=14998
    
    Let sata_mv handle the failure gracefully: warn about that incl. the
    failed command number and return an AC_ERR_INVALID error. We can do that
    now thanks to the previous patch.
    
    Remove also the long-standing FIXME.
    
    [v2] use %.2x as commands are defined as hexa.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: linux-ide@vger.kernel.org
    Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 306a1c5b5683c1d37565e575386139a64bdbec6f
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Oct 31 10:59:45 2019 +0100

    ata: make qc_prep return ata_completion_errors
    
    commit 95364f36701e62dd50eee91e1303187fd1a9f567 upstream.
    
    In case a driver wants to return an error from qc_prep, return enum
    ata_completion_errors. sata_mv is one of those drivers -- see the next
    patch. Other drivers return the newly defined AC_ERR_OK.
    
    [v2] use enum ata_completion_errors and AC_ERR_OK.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: linux-ide@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5639b8cb857f3a9998421c697fccb28c54a1c2b1
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Oct 31 10:59:44 2019 +0100

    ata: define AC_ERR_OK
    
    commit 25937580a5065d6fbd92d9c8ebd47145ad80052e upstream.
    
    Since we will return enum ata_completion_errors from qc_prep in the next
    patch, let's define AC_ERR_OK to mark the OK status.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: linux-ide@vger.kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6d38137c19f96f46496a689c533e882943bc409
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Fri Sep 25 21:19:18 2020 -0700

    lib/string.c: implement stpcpy
    
    commit 1e1b6d63d6340764e00356873e5794225a2a03ea upstream.
    
    LLVM implemented a recent "libcall optimization" that lowers calls to
    `sprintf(dest, "%s", str)` where the return value is used to
    `stpcpy(dest, str) - dest`.
    
    This generally avoids the machinery involved in parsing format strings.
    `stpcpy` is just like `strcpy` except it returns the pointer to the new
    tail of `dest`.  This optimization was introduced into clang-12.
    
    Implement this so that we don't observe linkage failures due to missing
    symbol definitions for `stpcpy`.
    
    Similar to last year's fire drill with: commit 5f074f3e192f
    ("lib/string.c: implement a basic bcmp")
    
    The kernel is somewhere between a "freestanding" environment (no full
    libc) and "hosted" environment (many symbols from libc exist with the
    same type, function signature, and semantics).
    
    As Peter Anvin notes, there's not really a great way to inform the
    compiler that you're targeting a freestanding environment but would like
    to opt-in to some libcall optimizations (see pr/47280 below), rather
    than opt-out.
    
    Arvind notes, -fno-builtin-* behaves slightly differently between GCC
    and Clang, and Clang is missing many __builtin_* definitions, which I
    consider a bug in Clang and am working on fixing.
    
    Masahiro summarizes the subtle distinction between compilers justly:
      To prevent transformation from foo() into bar(), there are two ways in
      Clang to do that; -fno-builtin-foo, and -fno-builtin-bar.  There is
      only one in GCC; -fno-buitin-foo.
    
    (Any difference in that behavior in Clang is likely a bug from a missing
    __builtin_* definition.)
    
    Masahiro also notes:
      We want to disable optimization from foo() to bar(),
      but we may still benefit from the optimization from
      foo() into something else. If GCC implements the same transform, we
      would run into a problem because it is not -fno-builtin-bar, but
      -fno-builtin-foo that disables that optimization.
    
      In this regard, -fno-builtin-foo would be more future-proof than
      -fno-built-bar, but -fno-builtin-foo is still potentially overkill. We
      may want to prevent calls from foo() being optimized into calls to
      bar(), but we still may want other optimization on calls to foo().
    
    It seems that compilers today don't quite provide the fine grain control
    over which libcall optimizations pseudo-freestanding environments would
    prefer.
    
    Finally, Kees notes that this interface is unsafe, so we should not
    encourage its use.  As such, I've removed the declaration from any
    header, but it still needs to be exported to avoid linkage errors in
    modules.
    
    Reported-by: Sami Tolvanen <samitolvanen@google.com>
    Suggested-by: Andy Lavr <andy.lavr@gmail.com>
    Suggested-by: Arvind Sankar <nivedita@alum.mit.edu>
    Suggested-by: Joe Perches <joe@perches.com>
    Suggested-by: Kees Cook <keescook@chromium.org>
    Suggested-by: Masahiro Yamada <masahiroy@kernel.org>
    Suggested-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20200914161643.938408-1-ndesaulniers@google.com
    Link: https://bugs.llvm.org/show_bug.cgi?id=47162
    Link: https://bugs.llvm.org/show_bug.cgi?id=47280
    Link: https://github.com/ClangBuiltLinux/linux/issues/1126
    Link: https://man7.org/linux/man-pages/man3/stpcpy.3.html
    Link: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stpcpy.html
    Link: https://reviews.llvm.org/D85963
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f082d13c95bb42e94314767caa803e7b38190c02
Author: Gao Xiang <hsiangkao@redhat.com>
Date:   Fri Sep 25 21:19:01 2020 -0700

    mm, THP, swap: fix allocating cluster for swapfile by mistake
    
    commit 41663430588c737dd735bad5a0d1ba325dcabd59 upstream.
    
    SWP_FS is used to make swap_{read,write}page() go through the
    filesystem, and it's only used for swap files over NFS.  So, !SWP_FS
    means non NFS for now, it could be either file backed or device backed.
    Something similar goes with legacy SWP_FILE.
    
    So in order to achieve the goal of the original patch, SWP_BLKDEV should
    be used instead.
    
    FS corruption can be observed with SSD device + XFS + fragmented
    swapfile due to CONFIG_THP_SWAP=y.
    
    I reproduced the issue with the following details:
    
    Environment:
    
      QEMU + upstream kernel + buildroot + NVMe (2 GB)
    
    Kernel config:
    
      CONFIG_BLK_DEV_NVME=y
      CONFIG_THP_SWAP=y
    
    Some reproducible steps:
    
      mkfs.xfs -f /dev/nvme0n1
      mkdir /tmp/mnt
      mount /dev/nvme0n1 /tmp/mnt
      bs="32k"
      sz="1024m"    # doesn't matter too much, I also tried 16m
      xfs_io -f -c "pwrite -R -b $bs 0 $sz" -c "fdatasync" /tmp/mnt/sw
      xfs_io -f -c "pwrite -R -b $bs 0 $sz" -c "fdatasync" /tmp/mnt/sw
      xfs_io -f -c "pwrite -R -b $bs 0 $sz" -c "fdatasync" /tmp/mnt/sw
      xfs_io -f -c "pwrite -F -S 0 -b $bs 0 $sz" -c "fdatasync" /tmp/mnt/sw
      xfs_io -f -c "pwrite -R -b $bs 0 $sz" -c "fsync" /tmp/mnt/sw
    
      mkswap /tmp/mnt/sw
      swapon /tmp/mnt/sw
    
      stress --vm 2 --vm-bytes 600M   # doesn't matter too much as well
    
    Symptoms:
     - FS corruption (e.g. checksum failure)
     - memory corruption at: 0xd2808010
     - segfault
    
    Fixes: f0eea189e8e9 ("mm, THP, swap: Don't allocate huge cluster for file backed swap device")
    Fixes: 38d8b4e6bdc8 ("mm, THP, swap: delay splitting THP during swap out")
    Signed-off-by: Gao Xiang <hsiangkao@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: "Huang, Ying" <ying.huang@intel.com>
    Reviewed-by: Yang Shi <shy828301@gmail.com>
    Acked-by: Rafael Aquini <aquini@redhat.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Carlos Maiolino <cmaiolino@redhat.com>
    Cc: Eric Sandeen <esandeen@redhat.com>
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20200820045323.7809-1-hsiangkao@redhat.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2295608b44c91df767a5c68027f9c9e52ecb28e7
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Tue Sep 1 00:12:07 2020 +0900

    kprobes: Fix to check probe enabled before disarm_kprobe_ftrace()
    
    commit 3031313eb3d549b7ad6f9fbcc52ba04412e3eb9e upstream.
    
    Commit 0cb2f1372baa ("kprobes: Fix NULL pointer dereference at
    kprobe_ftrace_handler") fixed one bug but not completely fixed yet.
    If we run a kprobe_module.tc of ftracetest, kernel showed a warning
    as below.
    
    # ./ftracetest test.d/kprobe/kprobe_module.tc
    === Ftrace unit tests ===
    [1] Kprobe dynamic event - probing module
    ...
    [   22.400215] ------------[ cut here ]------------
    [   22.400962] Failed to disarm kprobe-ftrace at trace_printk_irq_work+0x0/0x7e [trace_printk] (-2)
    [   22.402139] WARNING: CPU: 7 PID: 200 at kernel/kprobes.c:1091 __disarm_kprobe_ftrace.isra.0+0x7e/0xa0
    [   22.403358] Modules linked in: trace_printk(-)
    [   22.404028] CPU: 7 PID: 200 Comm: rmmod Not tainted 5.9.0-rc2+ #66
    [   22.404870] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1 04/01/2014
    [   22.406139] RIP: 0010:__disarm_kprobe_ftrace.isra.0+0x7e/0xa0
    [   22.406947] Code: 30 8b 03 eb c9 80 3d e5 09 1f 01 00 75 dc 49 8b 34 24 89 c2 48 c7 c7 a0 c2 05 82 89 45 e4 c6 05 cc 09 1f 01 01 e8 a9 c7 f0 ff <0f> 0b 8b 45 e4 eb b9 89 c6 48 c7 c7 70 c2 05 82 89 45 e4 e8 91 c7
    [   22.409544] RSP: 0018:ffffc90000237df0 EFLAGS: 00010286
    [   22.410385] RAX: 0000000000000000 RBX: ffffffff83066024 RCX: 0000000000000000
    [   22.411434] RDX: 0000000000000001 RSI: ffffffff810de8d3 RDI: ffffffff810de8d3
    [   22.412687] RBP: ffffc90000237e10 R08: 0000000000000001 R09: 0000000000000001
    [   22.413762] R10: 0000000000000000 R11: 0000000000000001 R12: ffff88807c478640
    [   22.414852] R13: ffffffff8235ebc0 R14: ffffffffa00060c0 R15: 0000000000000000
    [   22.415941] FS:  00000000019d48c0(0000) GS:ffff88807d7c0000(0000) knlGS:0000000000000000
    [   22.417264] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   22.418176] CR2: 00000000005bb7e3 CR3: 0000000078f7a000 CR4: 00000000000006a0
    [   22.419309] Call Trace:
    [   22.419990]  kill_kprobe+0x94/0x160
    [   22.420652]  kprobes_module_callback+0x64/0x230
    [   22.421470]  notifier_call_chain+0x4f/0x70
    [   22.422184]  blocking_notifier_call_chain+0x49/0x70
    [   22.422979]  __x64_sys_delete_module+0x1ac/0x240
    [   22.423733]  do_syscall_64+0x38/0x50
    [   22.424366]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [   22.425176] RIP: 0033:0x4bb81d
    [   22.425741] Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e0 ff ff ff f7 d8 64 89 01 48
    [   22.428726] RSP: 002b:00007ffc70fef008 EFLAGS: 00000246 ORIG_RAX: 00000000000000b0
    [   22.430169] RAX: ffffffffffffffda RBX: 00000000019d48a0 RCX: 00000000004bb81d
    [   22.431375] RDX: 0000000000000000 RSI: 0000000000000880 RDI: 00007ffc70fef028
    [   22.432543] RBP: 0000000000000880 R08: 00000000ffffffff R09: 00007ffc70fef320
    [   22.433692] R10: 0000000000656300 R11: 0000000000000246 R12: 00007ffc70fef028
    [   22.434635] R13: 0000000000000000 R14: 0000000000000002 R15: 0000000000000000
    [   22.435682] irq event stamp: 1169
    [   22.436240] hardirqs last  enabled at (1179): [<ffffffff810df542>] console_unlock+0x422/0x580
    [   22.437466] hardirqs last disabled at (1188): [<ffffffff810df19b>] console_unlock+0x7b/0x580
    [   22.438608] softirqs last  enabled at (866): [<ffffffff81c0038e>] __do_softirq+0x38e/0x490
    [   22.439637] softirqs last disabled at (859): [<ffffffff81a00f42>] asm_call_on_stack+0x12/0x20
    [   22.440690] ---[ end trace 1e7ce7e1e4567276 ]---
    [   22.472832] trace_kprobe: This probe might be able to register after target module is loaded. Continue.
    
    This is because the kill_kprobe() calls disarm_kprobe_ftrace() even
    if the given probe is not enabled. In that case, ftrace_set_filter_ip()
    fails because the given probe point is not registered to ftrace.
    
    Fix to check the given (going) probe is enabled before invoking
    disarm_kprobe_ftrace().
    
    Link: https://lkml.kernel.org/r/159888672694.1411785.5987998076694782591.stgit@devnote2
    
    Fixes: 0cb2f1372baa ("kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler")
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: "Naveen N . Rao" <naveen.n.rao@linux.ibm.com>
    Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Cc: David Miller <davem@davemloft.net>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Chengming Zhou <zhouchengming@bytedance.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96975433969122f63ba3974b912d409d2c502e93
Author: Jan Höppner <hoeppner@linux.ibm.com>
Date:   Mon Sep 14 13:56:47 2020 +0200

    s390/dasd: Fix zero write for FBA devices
    
    commit 709192d531e5b0a91f20aa14abfe2fc27ddd47af upstream.
    
    A discard request that writes zeros using the global kernel internal
    ZERO_PAGE will fail for machines with more than 2GB of memory due to the
    location of the ZERO_PAGE.
    
    Fix this by using a driver owned global zero page allocated with GFP_DMA
    flag set.
    
    Fixes: 28b841b3a7cb ("s390/dasd: Add discard support for FBA devices")
    Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
    Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
    Cc: <stable@vger.kernel.org> # 4.14+
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 588ff5207a1024309873d4b0931195406b1a8feb
Author: Wei Li <liwei391@huawei.com>
Date:   Wed Sep 23 14:53:12 2020 +0800

    MIPS: Add the missing 'CPU_1074K' into __get_cpu_type()
    
    [ Upstream commit e393fbe6fa27af23f78df6e16a8fd2963578a8c4 ]
    
    Commit 442e14a2c55e ("MIPS: Add 1074K CPU support explicitly.") split
    1074K from the 74K as an unique CPU type, while it missed to add the
    'CPU_1074K' in __get_cpu_type(). So let's add it back.
    
    Fixes: 442e14a2c55e ("MIPS: Add 1074K CPU support explicitly.")
    Signed-off-by: Wei Li <liwei391@huawei.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9c3c9d37ae1e430a2a31edfcd4c518125547223c
Author: Tom Rix <trix@redhat.com>
Date:   Sun Sep 13 09:52:30 2020 -0700

    ALSA: asihpi: fix iounmap in error handler
    
    [ Upstream commit 472eb39103e885f302fd8fd6eff104fcf5503f1b ]
    
    clang static analysis flags this problem
    hpioctl.c:513:7: warning: Branch condition evaluates to
      a garbage value
                    if (pci.ap_mem_base[idx]) {
                        ^~~~~~~~~~~~~~~~~~~~
    
    If there is a failure in the middle of the memory space loop,
    only some of the memory spaces need to be cleaned up.
    
    At the error handler, idx holds the number of successful
    memory spaces mapped.  So rework the handler loop to use the
    old idx.
    
    There is a second problem, the memory space loop conditionally
    iomaps()/sets the mem_base so it is necessay to initize pci.
    
    Fixes: 719f82d3987a ("ALSA: Add support of AudioScience ASI boards")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Link: https://lore.kernel.org/r/20200913165230.17166-1-trix@redhat.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8413d9717513f828e38f69895c1b4f5d3e82f1a2
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Tue Sep 15 09:54:09 2020 +0200

    batman-adv: mcast: fix duplicate mcast packets in BLA backbone from mesh
    
    [ Upstream commit 74c09b7275126da1b642b90c9cdc3ae8b729ad4b ]
    
    Scenario:
    * Multicast frame send from mesh to a BLA backbone (multiple nodes
      with their bat0 bridged together, with BLA enabled)
    
    Issue:
    * BLA backbone nodes receive the frame multiple times on bat0,
      once from mesh->bat0 and once from each backbone_gw from LAN
    
    For unicast, a node will send only to the best backbone gateway
    according to the TQ. However for multicast we currently cannot determine
    if multiple destination nodes share the same backbone if they don't share
    the same backbone with us. So we need to keep sending the unicasts to
    all backbone gateways and let the backbone gateways decide which one
    will forward the frame. We can use the CLAIM mechanism to make this
    decision.
    
    One catch: The batman-adv gateway feature for DHCP packets potentially
    sends multicast packets in the same batman-adv unicast header as the
    multicast optimizations code. And we are not allowed to drop those even
    if we did not claim the source address of the sender, as for such
    packets there is only this one multicast-in-unicast packet.
    
    How can we distinguish the two cases?
    
    The gateway feature uses a batman-adv unicast 4 address header. While
    the multicast-to-unicasts feature uses a simple, 3 address batman-adv
    unicast header. So let's use this to distinguish.
    
    Fixes: fe2da6ff27c7 ("batman-adv: check incoming packet type for bla")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b34723ef18a27d2c2bc7eee82c9aea4876f1b7d
Author: Sven Eckelmann <sven@narfation.org>
Date:   Mon Sep 14 13:58:16 2020 +0200

    batman-adv: Add missing include for in_interrupt()
    
    [ Upstream commit 4bba9dab86b6ac15ca560ef1f2b5aa4529cbf784 ]
    
    The fix for receiving (internally generated) bla packets outside the
    interrupt context introduced the usage of in_interrupt(). But this
    functionality is only defined in linux/preempt.h which was not included
    with the same patch.
    
    Fixes: 279e89b2281a ("batman-adv: bla: use netif_rx_ni when not in interrupt context")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 847d6719fb6744f44ed51c2ec41ab5ce0af2069f
Author: Dmitry Bogdanov <dbogdanov@marvell.com>
Date:   Wed Sep 9 20:43:10 2020 +0300

    net: qed: RDMA personality shouldn't fail VF load
    
    [ Upstream commit ce1cf9e5025f4e2d2198728391f1847b3e168bc6 ]
    
    Fix the assert during VF driver installation when the personality is iWARP
    
    Fixes: 1fe614d10f45 ("qed: Relax VF firmware requirements")
    Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
    Signed-off-by: Michal Kalderon <michal.kalderon@marvell.com>
    Signed-off-by: Dmitry Bogdanov <dbogdanov@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 18d2e3a1c0bb02bca327dffffd7fb896e91cb4f9
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Wed Jul 1 09:39:49 2020 +0200

    drm/vc4/vc4_hdmi: fill ASoC card owner
    
    [ Upstream commit ec653df2a0cbc306a4bfcb0e3484d318fa779002 ]
    
    card->owner is a required property and since commit 81033c6b584b ("ALSA:
    core: Warn on empty module") a warning is issued if it is empty. Fix lack
    of it. This fixes following warning observed on RaspberryPi 3B board
    with ARM 32bit kernel and multi_v7_defconfig:
    
    ------------[ cut here ]------------
    WARNING: CPU: 1 PID: 210 at sound/core/init.c:207 snd_card_new+0x378/0x398 [snd]
    Modules linked in: vc4(+) snd_soc_core ac97_bus snd_pcm_dmaengine bluetooth snd_pcm snd_timer crc32_arm_ce raspberrypi_hwmon snd soundcore ecdh_generic ecc bcm2835_thermal phy_generic
    CPU: 1 PID: 210 Comm: systemd-udevd Not tainted 5.8.0-rc1-00027-g81033c6b584b #1087
    Hardware name: BCM2835
    [<c03113c0>] (unwind_backtrace) from [<c030bcb4>] (show_stack+0x10/0x14)
    [<c030bcb4>] (show_stack) from [<c071cef8>] (dump_stack+0xd4/0xe8)
    [<c071cef8>] (dump_stack) from [<c0345bfc>] (__warn+0xdc/0xf4)
    [<c0345bfc>] (__warn) from [<c0345cc4>] (warn_slowpath_fmt+0xb0/0xb8)
    [<c0345cc4>] (warn_slowpath_fmt) from [<bf02ff74>] (snd_card_new+0x378/0x398 [snd])
    [<bf02ff74>] (snd_card_new [snd]) from [<bf11f0b4>] (snd_soc_bind_card+0x280/0x99c [snd_soc_core])
    [<bf11f0b4>] (snd_soc_bind_card [snd_soc_core]) from [<bf12f000>] (devm_snd_soc_register_card+0x34/0x6c [snd_soc_core])
    [<bf12f000>] (devm_snd_soc_register_card [snd_soc_core]) from [<bf165654>] (vc4_hdmi_bind+0x43c/0x5f4 [vc4])
    [<bf165654>] (vc4_hdmi_bind [vc4]) from [<c09d660c>] (component_bind_all+0xec/0x24c)
    [<c09d660c>] (component_bind_all) from [<bf15c44c>] (vc4_drm_bind+0xd4/0x174 [vc4])
    [<bf15c44c>] (vc4_drm_bind [vc4]) from [<c09d6ac0>] (try_to_bring_up_master+0x160/0x1b0)
    [<c09d6ac0>] (try_to_bring_up_master) from [<c09d6f38>] (component_master_add_with_match+0xd0/0x104)
    [<c09d6f38>] (component_master_add_with_match) from [<bf15c588>] (vc4_platform_drm_probe+0x9c/0xbc [vc4])
    [<bf15c588>] (vc4_platform_drm_probe [vc4]) from [<c09df740>] (platform_drv_probe+0x6c/0xa4)
    [<c09df740>] (platform_drv_probe) from [<c09dd6f0>] (really_probe+0x210/0x350)
    [<c09dd6f0>] (really_probe) from [<c09dd940>] (driver_probe_device+0x5c/0xb4)
    [<c09dd940>] (driver_probe_device) from [<c09ddb38>] (device_driver_attach+0x58/0x60)
    [<c09ddb38>] (device_driver_attach) from [<c09ddbc0>] (__driver_attach+0x80/0xbc)
    [<c09ddbc0>] (__driver_attach) from [<c09db820>] (bus_for_each_dev+0x68/0xb4)
    [<c09db820>] (bus_for_each_dev) from [<c09dc9f8>] (bus_add_driver+0x130/0x1e8)
    [<c09dc9f8>] (bus_add_driver) from [<c09de648>] (driver_register+0x78/0x110)
    [<c09de648>] (driver_register) from [<c0302038>] (do_one_initcall+0x50/0x220)
    [<c0302038>] (do_one_initcall) from [<c03db544>] (do_init_module+0x60/0x210)
    [<c03db544>] (do_init_module) from [<c03da4f8>] (load_module+0x1e34/0x2338)
    [<c03da4f8>] (load_module) from [<c03dac00>] (sys_finit_module+0xac/0xbc)
    [<c03dac00>] (sys_finit_module) from [<c03000c0>] (ret_fast_syscall+0x0/0x54)
    Exception stack(0xeded9fa8 to 0xeded9ff0)
    ...
    ---[ end trace 6414689569c2bc08 ]---
    
    Fixes: bb7d78568814 ("drm/vc4: Add HDMI audio support")
    Suggested-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200701073949.28941-1-m.szyprowski@samsung.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b6e7f0e4089f5c7243d94355320d3375f56280e3
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Sep 8 03:40:25 2020 -0700

    mac802154: tx: fix use-after-free
    
    [ Upstream commit 0ff4628f4c6c1ab87eef9f16b25355cadc426d64 ]
    
    syzbot reported a bug in ieee802154_tx() [1]
    
    A similar issue in ieee802154_xmit_worker() is also fixed in this patch.
    
    [1]
    BUG: KASAN: use-after-free in ieee802154_tx+0x3d2/0x480 net/mac802154/tx.c:88
    Read of size 4 at addr ffff8880251a8c70 by task syz-executor.3/928
    
    CPU: 0 PID: 928 Comm: syz-executor.3 Not tainted 5.9.0-rc3-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x198/0x1fd lib/dump_stack.c:118
     print_address_description.constprop.0.cold+0xae/0x497 mm/kasan/report.c:383
     __kasan_report mm/kasan/report.c:513 [inline]
     kasan_report.cold+0x1f/0x37 mm/kasan/report.c:530
     ieee802154_tx+0x3d2/0x480 net/mac802154/tx.c:88
     ieee802154_subif_start_xmit+0xbe/0xe4 net/mac802154/tx.c:130
     __netdev_start_xmit include/linux/netdevice.h:4634 [inline]
     netdev_start_xmit include/linux/netdevice.h:4648 [inline]
     dev_direct_xmit+0x4e9/0x6e0 net/core/dev.c:4203
     packet_snd net/packet/af_packet.c:2989 [inline]
     packet_sendmsg+0x2413/0x5290 net/packet/af_packet.c:3014
     sock_sendmsg_nosec net/socket.c:651 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:671
     ____sys_sendmsg+0x6e8/0x810 net/socket.c:2353
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2407
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2440
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x45d5b9
    Code: 5d b4 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 2b b4 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fc98e749c78 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 000000000002ccc0 RCX: 000000000045d5b9
    RDX: 0000000000000000 RSI: 0000000020007780 RDI: 000000000000000b
    RBP: 000000000118d020 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 000000000118cfec
    R13: 00007fff690c720f R14: 00007fc98e74a9c0 R15: 000000000118cfec
    
    Allocated by task 928:
     kasan_save_stack+0x1b/0x40 mm/kasan/common.c:48
     kasan_set_track mm/kasan/common.c:56 [inline]
     __kasan_kmalloc.constprop.0+0xbf/0xd0 mm/kasan/common.c:461
     slab_post_alloc_hook mm/slab.h:518 [inline]
     slab_alloc_node mm/slab.c:3254 [inline]
     kmem_cache_alloc_node+0x136/0x3e0 mm/slab.c:3574
     __alloc_skb+0x71/0x550 net/core/skbuff.c:198
     alloc_skb include/linux/skbuff.h:1094 [inline]
     alloc_skb_with_frags+0x92/0x570 net/core/skbuff.c:5771
     sock_alloc_send_pskb+0x72a/0x880 net/core/sock.c:2348
     packet_alloc_skb net/packet/af_packet.c:2837 [inline]
     packet_snd net/packet/af_packet.c:2932 [inline]
     packet_sendmsg+0x19fb/0x5290 net/packet/af_packet.c:3014
     sock_sendmsg_nosec net/socket.c:651 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:671
     ____sys_sendmsg+0x6e8/0x810 net/socket.c:2353
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2407
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2440
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Freed by task 928:
     kasan_save_stack+0x1b/0x40 mm/kasan/common.c:48
     kasan_set_track+0x1c/0x30 mm/kasan/common.c:56
     kasan_set_free_info+0x1b/0x30 mm/kasan/generic.c:355
     __kasan_slab_free+0xd8/0x120 mm/kasan/common.c:422
     __cache_free mm/slab.c:3418 [inline]
     kmem_cache_free.part.0+0x74/0x1e0 mm/slab.c:3693
     kfree_skbmem+0xef/0x1b0 net/core/skbuff.c:622
     __kfree_skb net/core/skbuff.c:679 [inline]
     consume_skb net/core/skbuff.c:838 [inline]
     consume_skb+0xcf/0x160 net/core/skbuff.c:832
     __dev_kfree_skb_any+0x9c/0xc0 net/core/dev.c:3107
     fakelb_hw_xmit+0x20e/0x2a0 drivers/net/ieee802154/fakelb.c:81
     drv_xmit_async net/mac802154/driver-ops.h:16 [inline]
     ieee802154_tx+0x282/0x480 net/mac802154/tx.c:81
     ieee802154_subif_start_xmit+0xbe/0xe4 net/mac802154/tx.c:130
     __netdev_start_xmit include/linux/netdevice.h:4634 [inline]
     netdev_start_xmit include/linux/netdevice.h:4648 [inline]
     dev_direct_xmit+0x4e9/0x6e0 net/core/dev.c:4203
     packet_snd net/packet/af_packet.c:2989 [inline]
     packet_sendmsg+0x2413/0x5290 net/packet/af_packet.c:3014
     sock_sendmsg_nosec net/socket.c:651 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:671
     ____sys_sendmsg+0x6e8/0x810 net/socket.c:2353
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2407
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2440
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    The buggy address belongs to the object at ffff8880251a8c00
     which belongs to the cache skbuff_head_cache of size 224
    The buggy address is located 112 bytes inside of
     224-byte region [ffff8880251a8c00, ffff8880251a8ce0)
    The buggy address belongs to the page:
    page:0000000062b6a4f1 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x251a8
    flags: 0xfffe0000000200(slab)
    raw: 00fffe0000000200 ffffea0000435c88 ffffea00028b6c08 ffff8880a9055d00
    raw: 0000000000000000 ffff8880251a80c0 000000010000000c 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8880251a8b00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8880251a8b80: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc
    >ffff8880251a8c00: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                                 ^
     ffff8880251a8c80: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
     ffff8880251a8d00: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb
    
    Fixes: 409c3b0c5f03 ("mac802154: tx: move stats tx increment")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Alexander Aring <alex.aring@gmail.com>
    Cc: Stefan Schmidt <stefan@datenfreihafen.org>
    Cc: linux-wpan@vger.kernel.org
    Link: https://lore.kernel.org/r/20200908104025.4009085-1-edumazet@google.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d494b6143aa5e9cb07194596e2f065dcda342f0
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Fri Sep 4 20:28:00 2020 +0200

    batman-adv: mcast/TT: fix wrongly dropped or rerouted packets
    
    [ Upstream commit 7dda5b3384121181c4e79f6eaeac2b94c0622c8d ]
    
    The unicast packet rerouting code makes several assumptions. For
    instance it assumes that there is always exactly one destination in the
    TT. This breaks for multicast frames in a unicast packets in several ways:
    
    For one thing if there is actually no TT entry and the destination node
    was selected due to the multicast tvlv flags it announced. Then an
    intermediate node will wrongly drop the packet.
    
    For another thing if there is a TT entry but the TTVN of this entry is
    newer than the originally addressed destination node: Then the
    intermediate node will wrongly redirect the packet, leading to
    duplicated multicast packets at a multicast listener and missing
    packets at other multicast listeners or multicast routers.
    
    Fixing this by not applying the unicast packet rerouting to batman-adv
    unicast packets with a multicast payload. We are not able to detect a
    roaming multicast listener at the moment and will just continue to send
    the multicast frame to both the new and old destination for a while in
    case of such a roaming multicast listener.
    
    Fixes: a73105b8d4c7 ("batman-adv: improved client announcement mechanism")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 354e25d6fc06afcb4673f9ac72128c672dfadf48
Author: Jing Xiangfeng <jingxiangfeng@huawei.com>
Date:   Fri Sep 4 10:51:03 2020 +0800

    atm: eni: fix the missed pci_disable_device() for eni_init_one()
    
    [ Upstream commit c2b947879ca320ac5505c6c29a731ff17da5e805 ]
    
    eni_init_one() misses to call pci_disable_device() in an error path.
    Jump to err_disable to fix it.
    
    Fixes: ede58ef28e10 ("atm: remove deprecated use of pci api")
    Signed-off-by: Jing Xiangfeng <jingxiangfeng@huawei.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 567b62686e1ce04d3ac6eb5a584bbf578495dc7d
Author: Linus Lüssing <ll@simonwunderlich.de>
Date:   Thu Aug 27 17:34:48 2020 +0200

    batman-adv: bla: fix type misuse for backbone_gw hash indexing
    
    [ Upstream commit 097930e85f90f252c44dc0d084598265dd44ca48 ]
    
    It seems that due to a copy & paste error the void pointer
    in batadv_choose_backbone_gw() is cast to the wrong type.
    
    Fixing this by using "struct batadv_bla_backbone_gw" instead of "struct
    batadv_bla_claim" which better matches the caller's side.
    
    For now it seems that we were lucky because the two structs both have
    their orig/vid and addr/vid in the beginning. However I stumbled over
    this issue when I was trying to add some debug variables in front of
    "orig" in batadv_backbone_gw, which caused hash lookups to fail.
    
    Fixes: 07568d0369f9 ("batman-adv: don't rely on positions in struct for hashing")
    Signed-off-by: Linus Lüssing <ll@simonwunderlich.de>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e201ea36e3ec418ce37b119d5cdc2e658230dce3
Author: Maximilian Luz <luzmaximilian@gmail.com>
Date:   Tue Aug 25 17:38:29 2020 +0200

    mwifiex: Increase AES key storage size to 256 bits
    
    [ Upstream commit 4afc850e2e9e781976fb2c7852ce7bac374af938 ]
    
    Following commit e18696786548 ("mwifiex: Prevent memory corruption
    handling keys") the mwifiex driver fails to authenticate with certain
    networks, specifically networks with 256 bit keys, and repeatedly asks
    for the password. The kernel log repeats the following lines (id and
    bssid redacted):
    
        mwifiex_pcie 0000:01:00.0: info: trying to associate to '<id>' bssid <bssid>
        mwifiex_pcie 0000:01:00.0: info: associated to bssid <bssid> successfully
        mwifiex_pcie 0000:01:00.0: crypto keys added
        mwifiex_pcie 0000:01:00.0: info: successfully disconnected from <bssid>: reason code 3
    
    Tracking down this problem lead to the overflow check introduced by the
    aforementioned commit into mwifiex_ret_802_11_key_material_v2(). This
    check fails on networks with 256 bit keys due to the current storage
    size for AES keys in struct mwifiex_aes_param being only 128 bit.
    
    To fix this issue, increase the storage size for AES keys to 256 bit.
    
    Fixes: e18696786548 ("mwifiex: Prevent memory corruption handling keys")
    Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
    Reported-by: Kaloyan Nikolov <konik98@gmail.com>
    Tested-by: Kaloyan Nikolov <konik98@gmail.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Tested-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20200825153829.38043-1-luzmaximilian@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47662437672be7b993611e0dfb182480eafcf570
Author: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Date:   Sun Aug 2 19:15:41 2020 +0800

    clocksource/drivers/h8300_timer8: Fix wrong return value in h8300_8timer_init()
    
    [ Upstream commit 400d033f5a599120089b5f0c54d14d198499af5a ]
    
    In the init function, if the call to of_iomap() fails, the return
    value is ENXIO instead of -ENXIO.
    
    Change to the right negative errno.
    
    Fixes: 691f8f878290f ("clocksource/drivers/h8300_timer8: Convert init function to return error")
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20200802111541.5429-1-tianjia.zhang@linux.alibaba.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6bc01e3cf5f0967ba7133202b51c450b37f9bbc1
Author: Tom Rix <trix@redhat.com>
Date:   Sun Aug 2 07:23:39 2020 -0700

    ieee802154/adf7242: check status of adf7242_read_reg
    
    [ Upstream commit e3914ed6cf44bfe1f169e26241f8314556fd1ac1 ]
    
    Clang static analysis reports this error
    
    adf7242.c:887:6: warning: Assigned value is garbage or undefined
            len = len_u8;
                ^ ~~~~~~
    
    len_u8 is set in
           adf7242_read_reg(lp, 0, &len_u8);
    
    When this call fails, len_u8 is not set.
    
    So check the return code.
    
    Fixes: 7302b9d90117 ("ieee802154/adf7242: Driver for ADF7242 MAC IEEE802154")
    
    Signed-off-by: Tom Rix <trix@redhat.com>
    Acked-by: Michael Hennerich <michael.hennerich@analog.com>
    Link: https://lore.kernel.org/r/20200802142339.21091-1-trix@redhat.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6ef8ad0605b07f90b3a4816494e7e0f111563625
Author: Liu Jian <liujian56@huawei.com>
Date:   Mon Jul 20 22:33:15 2020 +0800

    ieee802154: fix one possible memleak in ca8210_dev_com_init
    
    [ Upstream commit 88f46b3fe2ac41c381770ebad9f2ee49346b57a2 ]
    
    We should call destroy_workqueue to destroy mlme_workqueue in error branch.
    
    Fixes: ded845a781a5 ("ieee802154: Add CA8210 IEEE 802.15.4 device driver")
    Signed-off-by: Liu Jian <liujian56@huawei.com>
    Link: https://lore.kernel.org/r/20200720143315.40523-1-liujian56@huawei.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a59182b3c136838441bf4983f67e423656c78eb4
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Thu Sep 10 10:24:57 2020 -0500

    objtool: Fix noreturn detection for ignored functions
    
    [ Upstream commit db6c6a0df840e3f52c84cc302cc1a08ba11a4416 ]
    
    When a function is annotated with STACK_FRAME_NON_STANDARD, objtool
    doesn't validate its code paths.  It also skips sibling call detection
    within the function.
    
    But sibling call detection is actually needed for the case where the
    ignored function doesn't have any return instructions.  Otherwise
    objtool naively marks the function as implicit static noreturn, which
    affects the reachability of its callers, resulting in "unreachable
    instruction" warnings.
    
    Fix it by just enabling sibling call detection for ignored functions.
    The 'insn->ignore' check in add_jump_destinations() is no longer needed
    after
    
      e6da9567959e ("objtool: Don't use ignore flag for fake jumps").
    
    Fixes the following warning:
    
      arch/x86/kvm/vmx/vmx.o: warning: objtool: vmx_handle_exit_irqoff()+0x142: unreachable instruction
    
    which triggers on an allmodconfig with CONFIG_GCOV_KERNEL unset.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Link: https://lkml.kernel.org/r/5b1e2536cdbaa5246b60d7791b76130a74082c62.1599751464.git.jpoimboe@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3e64bb76a42194f315fd9fad3624f0f5cd3104f1
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed Sep 9 12:32:33 2020 +0200

    i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices()
    
    [ Upstream commit 21653a4181ff292480599dad996a2b759ccf050f ]
    
    Some ACPI i2c-devices _STA method (which is used to detect if the device
    is present) use autodetection code which probes which device is present
    over i2c. This requires the I2C ACPI OpRegion handler to be registered
    before we enumerate i2c-clients under the i2c-adapter.
    
    This fixes the i2c touchpad on the Lenovo ThinkBook 14-IIL and
    ThinkBook 15 IIL not getting an i2c-client instantiated and thus not
    working.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1842039
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit adf0d3483b0d7a3f1d036855df6fce48ea456d3f
Author: Ilya Leoshkevich <iii@linux.ibm.com>
Date:   Wed Sep 9 14:27:25 2020 +0200

    s390/init: add missing __init annotations
    
    [ Upstream commit fcb2b70cdb194157678fb1a75f9ff499aeba3d2a ]
    
    Add __init to reserve_memory_end, reserve_oldmem and remove_oldmem.
    Sometimes these functions are not inlined, and then the build
    complains about section mismatch.
    
    Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df7f40323573f5b78fc1d4187b53feccb86df8be
Author: Qu Wenruo <wqu@suse.com>
Date:   Fri Jul 17 15:12:05 2020 +0800

    btrfs: qgroup: fix data leak caused by race between writeback and truncate
    
    [ Upstream commit fa91e4aa1716004ea8096d5185ec0451e206aea0 ]
    
    [BUG]
    When running tests like generic/013 on test device with btrfs quota
    enabled, it can normally lead to data leak, detected at unmount time:
    
      BTRFS warning (device dm-3): qgroup 0/5 has unreleased space, type 0 rsv 4096
      ------------[ cut here ]------------
      WARNING: CPU: 11 PID: 16386 at fs/btrfs/disk-io.c:4142 close_ctree+0x1dc/0x323 [btrfs]
      RIP: 0010:close_ctree+0x1dc/0x323 [btrfs]
      Call Trace:
       btrfs_put_super+0x15/0x17 [btrfs]
       generic_shutdown_super+0x72/0x110
       kill_anon_super+0x18/0x30
       btrfs_kill_super+0x17/0x30 [btrfs]
       deactivate_locked_super+0x3b/0xa0
       deactivate_super+0x40/0x50
       cleanup_mnt+0x135/0x190
       __cleanup_mnt+0x12/0x20
       task_work_run+0x64/0xb0
       __prepare_exit_to_usermode+0x1bc/0x1c0
       __syscall_return_slowpath+0x47/0x230
       do_syscall_64+0x64/0xb0
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      ---[ end trace caf08beafeca2392 ]---
      BTRFS error (device dm-3): qgroup reserved space leaked
    
    [CAUSE]
    In the offending case, the offending operations are:
    2/6: writev f2X[269 1 0 0 0 0] [1006997,67,288] 0
    2/7: truncate f2X[269 1 0 0 48 1026293] 18388 0
    
    The following sequence of events could happen after the writev():
            CPU1 (writeback)                |               CPU2 (truncate)
    -----------------------------------------------------------------
    btrfs_writepages()                      |
    |- extent_write_cache_pages()           |
       |- Got page for 1003520              |
       |  1003520 is Dirty, no writeback    |
       |  So (!clear_page_dirty_for_io())   |
       |  gets called for it                |
       |- Now page 1003520 is Clean.        |
       |                                    | btrfs_setattr()
       |                                    | |- btrfs_setsize()
       |                                    |    |- truncate_setsize()
       |                                    |       New i_size is 18388
       |- __extent_writepage()              |
       |  |- page_offset() > i_size         |
          |- btrfs_invalidatepage()         |
             |- Page is clean, so no qgroup |
                callback executed
    
    This means, the qgroup reserved data space is not properly released in
    btrfs_invalidatepage() as the page is Clean.
    
    [FIX]
    Instead of checking the dirty bit of a page, call
    btrfs_qgroup_free_data() unconditionally in btrfs_invalidatepage().
    
    As qgroup rsv are completely bound to the QGROUP_RESERVED bit of
    io_tree, not bound to page status, thus we won't cause double freeing
    anyway.
    
    Fixes: 0b34c261e235 ("btrfs: qgroup: Prevent qgroup->reserved from going subzero")
    CC: stable@vger.kernel.org # 4.14+
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 197211ac41d9d61a77eec453a114999747ebac85
Author: Zeng Tao <prime.zeng@hisilicon.com>
Date:   Wed Jul 15 15:34:41 2020 +0800

    vfio/pci: fix racy on error and request eventfd ctx
    
    [ Upstream commit b872d0640840018669032b20b6375a478ed1f923 ]
    
    The vfio_pci_release call will free and clear the error and request
    eventfd ctx while these ctx could be in use at the same time in the
    function like vfio_pci_request, and it's expected to protect them under
    the vdev->igate mutex, which is missing in vfio_pci_release.
    
    This issue is introduced since commit 1518ac272e78 ("vfio/pci: fix memory
    leaks of eventfd ctx"),and since commit 5c5866c593bb ("vfio/pci: Clear
    error and request eventfd ctx after releasing"), it's very easily to
    trigger the kernel panic like this:
    
    [ 9513.904346] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
    [ 9513.913091] Mem abort info:
    [ 9513.915871]   ESR = 0x96000006
    [ 9513.918912]   EC = 0x25: DABT (current EL), IL = 32 bits
    [ 9513.924198]   SET = 0, FnV = 0
    [ 9513.927238]   EA = 0, S1PTW = 0
    [ 9513.930364] Data abort info:
    [ 9513.933231]   ISV = 0, ISS = 0x00000006
    [ 9513.937048]   CM = 0, WnR = 0
    [ 9513.940003] user pgtable: 4k pages, 48-bit VAs, pgdp=0000007ec7d12000
    [ 9513.946414] [0000000000000008] pgd=0000007ec7d13003, p4d=0000007ec7d13003, pud=0000007ec728c003, pmd=0000000000000000
    [ 9513.956975] Internal error: Oops: 96000006 [#1] PREEMPT SMP
    [ 9513.962521] Modules linked in: vfio_pci vfio_virqfd vfio_iommu_type1 vfio hclge hns3 hnae3 [last unloaded: vfio_pci]
    [ 9513.972998] CPU: 4 PID: 1327 Comm: bash Tainted: G        W         5.8.0-rc4+ #3
    [ 9513.980443] Hardware name: Huawei TaiShan 2280 V2/BC82AMDC, BIOS 2280-V2 CS V3.B270.01 05/08/2020
    [ 9513.989274] pstate: 80400089 (Nzcv daIf +PAN -UAO BTYPE=--)
    [ 9513.994827] pc : _raw_spin_lock_irqsave+0x48/0x88
    [ 9513.999515] lr : eventfd_signal+0x6c/0x1b0
    [ 9514.003591] sp : ffff800038a0b960
    [ 9514.006889] x29: ffff800038a0b960 x28: ffff007ef7f4da10
    [ 9514.012175] x27: ffff207eefbbfc80 x26: ffffbb7903457000
    [ 9514.017462] x25: ffffbb7912191000 x24: ffff007ef7f4d400
    [ 9514.022747] x23: ffff20be6e0e4c00 x22: 0000000000000008
    [ 9514.028033] x21: 0000000000000000 x20: 0000000000000000
    [ 9514.033321] x19: 0000000000000008 x18: 0000000000000000
    [ 9514.038606] x17: 0000000000000000 x16: ffffbb7910029328
    [ 9514.043893] x15: 0000000000000000 x14: 0000000000000001
    [ 9514.049179] x13: 0000000000000000 x12: 0000000000000002
    [ 9514.054466] x11: 0000000000000000 x10: 0000000000000a00
    [ 9514.059752] x9 : ffff800038a0b840 x8 : ffff007ef7f4de60
    [ 9514.065038] x7 : ffff007fffc96690 x6 : fffffe01faffb748
    [ 9514.070324] x5 : 0000000000000000 x4 : 0000000000000000
    [ 9514.075609] x3 : 0000000000000000 x2 : 0000000000000001
    [ 9514.080895] x1 : ffff007ef7f4d400 x0 : 0000000000000000
    [ 9514.086181] Call trace:
    [ 9514.088618]  _raw_spin_lock_irqsave+0x48/0x88
    [ 9514.092954]  eventfd_signal+0x6c/0x1b0
    [ 9514.096691]  vfio_pci_request+0x84/0xd0 [vfio_pci]
    [ 9514.101464]  vfio_del_group_dev+0x150/0x290 [vfio]
    [ 9514.106234]  vfio_pci_remove+0x30/0x128 [vfio_pci]
    [ 9514.111007]  pci_device_remove+0x48/0x108
    [ 9514.115001]  device_release_driver_internal+0x100/0x1b8
    [ 9514.120200]  device_release_driver+0x28/0x38
    [ 9514.124452]  pci_stop_bus_device+0x68/0xa8
    [ 9514.128528]  pci_stop_and_remove_bus_device+0x20/0x38
    [ 9514.133557]  pci_iov_remove_virtfn+0xb4/0x128
    [ 9514.137893]  sriov_disable+0x3c/0x108
    [ 9514.141538]  pci_disable_sriov+0x28/0x38
    [ 9514.145445]  hns3_pci_sriov_configure+0x48/0xb8 [hns3]
    [ 9514.150558]  sriov_numvfs_store+0x110/0x198
    [ 9514.154724]  dev_attr_store+0x44/0x60
    [ 9514.158373]  sysfs_kf_write+0x5c/0x78
    [ 9514.162018]  kernfs_fop_write+0x104/0x210
    [ 9514.166010]  __vfs_write+0x48/0x90
    [ 9514.169395]  vfs_write+0xbc/0x1c0
    [ 9514.172694]  ksys_write+0x74/0x100
    [ 9514.176079]  __arm64_sys_write+0x24/0x30
    [ 9514.179987]  el0_svc_common.constprop.4+0x110/0x200
    [ 9514.184842]  do_el0_svc+0x34/0x98
    [ 9514.188144]  el0_svc+0x14/0x40
    [ 9514.191185]  el0_sync_handler+0xb0/0x2d0
    [ 9514.195088]  el0_sync+0x140/0x180
    [ 9514.198389] Code: b9001020 d2800000 52800022 f9800271 (885ffe61)
    [ 9514.204455] ---[ end trace 648de00c8406465f ]---
    [ 9514.212308] note: bash[1327] exited with preempt_count 1
    
    Cc: Qian Cai <cai@lca.pw>
    Cc: Alex Williamson <alex.williamson@redhat.com>
    Fixes: 1518ac272e78 ("vfio/pci: fix memory leaks of eventfd ctx")
    Signed-off-by: Zeng Tao <prime.zeng@hisilicon.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3650a8cd89c66eaa41e01ca228a4d9b8b3a8baff
Author: Andy Lutomirski <luto@kernel.org>
Date:   Fri Jun 26 10:21:15 2020 -0700

    selftests/x86/syscall_nt: Clear weird flags after each test
    
    [ Upstream commit a61fa2799ef9bf6c4f54cf7295036577cececc72 ]
    
    Clear the weird flags before logging to improve strace output --
    logging results while, say, TF is set does no one any favors.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/907bfa5a42d4475b8245e18b67a04b13ca51ffdb.1593191971.git.luto@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 117413cd30aa64fca2b14261f9eaff4573204933
Author: Javed Hasan <jhasan@marvell.com>
Date:   Fri Jun 26 02:49:59 2020 -0700

    scsi: libfc: Skip additional kref updating work event
    
    [ Upstream commit 823a65409c8990f64c5693af98ce0e7819975cba ]
    
    When an rport event (RPORT_EV_READY) is updated without work being queued,
    avoid taking an additional reference.
    
    This issue was leading to memory leak. Trace from KMEMLEAK tool:
    
      unreferenced object 0xffff8888259e8780 (size 512):
      comm "kworker/2:1", jiffies 4433237386 (age 113021.971s)
        hex dump (first 32 bytes):
            58 0a ec cf 83 88 ff ff 00 00 00 00 00 00 00 00
            01 00 00 00 08 00 00 00 13 7d f0 1e 0e 00 00 10
      backtrace:
      [<000000006b25760f>] fc_rport_recv_req+0x3c6/0x18f0 [libfc]
      [<00000000f208d994>] fc_lport_recv_els_req+0x120/0x8a0 [libfc]
      [<00000000a9c437b8>] fc_lport_recv+0xb9/0x130 [libfc]
      [<00000000a9c437b8>] fc_lport_recv+0xb9/0x130 [libfc]
      [<00000000ad5be37b>] qedf_ll2_process_skb+0x73d/0xad0 [qedf]
      [<00000000e0eb6893>] process_one_work+0x382/0x6c0
      [<000000002dfd9e21>] worker_thread+0x57/0x5c0
      [<00000000b648204f>] kthread+0x1a0/0x1c0
      [<0000000072f5ab20>] ret_from_fork+0x35/0x40
      [<000000001d5c05d8>] 0xffffffffffffffff
    
    Below is the log sequence which leads to memory leak.  Here we get the
    RPORT_EV_READY and RPORT_EV_STOP back to back, which lead to overwrite the
    event RPORT_EV_READY by event RPORT_EV_STOP.  Because of this, kref_count
    gets incremented by 1.
    
      kernel: host0: rport fffce5: Received PLOGI request
      kernel: host0: rport fffce5: Received PLOGI in INIT state
      kernel: host0: rport fffce5: Port is Ready
      kernel: host0: rport fffce5: Received PRLI request while in state Ready
      kernel: host0: rport fffce5: PRLI rspp type 8 active 1 passive 0
      kernel: host0: rport fffce5: Received LOGO request while in state Ready
      kernel: host0: rport fffce5: Delete port
      kernel: host0: rport fffce5: Received PLOGI request
      kernel: host0: rport fffce5: Received PLOGI in state Delete - send busy
      kernel: host0: rport fffce5: work event 3
      kernel: host0: rport fffce5: lld callback ev 3
      kernel: host0: rport fffce5: work delete
    
    Link: https://lore.kernel.org/r/20200626094959.32151-1-jhasan@marvell.com
    Reviewed-by: Girish Basrur <gbasrur@marvell.com>
    Reviewed-by: Saurav Kashyap <skashyap@marvell.com>
    Reviewed-by: Shyam Sundar <ssundar@marvell.com>
    Signed-off-by: Javed Hasan <jhasan@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd6084652261ccd56a0a53d1c230daae4fa021d9
Author: Javed Hasan <jhasan@marvell.com>
Date:   Mon Jun 22 03:12:11 2020 -0700

    scsi: libfc: Handling of extra kref
    
    [ Upstream commit 71f2bf85e90d938d4a9ef9dd9bfa8d9b0b6a03f7 ]
    
    Handling of extra kref which is done by lookup table in case rdata is
    already present in list.
    
    This issue was leading to memory leak. Trace from KMEMLEAK tool:
    
      unreferenced object 0xffff8888259e8780 (size 512):
        comm "kworker/2:1", pid 182614, jiffies 4433237386 (age 113021.971s)
        hex dump (first 32 bytes):
        58 0a ec cf 83 88 ff ff 00 00 00 00 00 00 00 00
        01 00 00 00 08 00 00 00 13 7d f0 1e 0e 00 00 10
      backtrace:
            [<000000006b25760f>] fc_rport_recv_req+0x3c6/0x18f0 [libfc]
            [<00000000f208d994>] fc_lport_recv_els_req+0x120/0x8a0 [libfc]
            [<00000000a9c437b8>] fc_lport_recv+0xb9/0x130 [libfc]
            [<00000000ad5be37b>] qedf_ll2_process_skb+0x73d/0xad0 [qedf]
            [<00000000e0eb6893>] process_one_work+0x382/0x6c0
            [<000000002dfd9e21>] worker_thread+0x57/0x5c0
            [<00000000b648204f>] kthread+0x1a0/0x1c0
            [<0000000072f5ab20>] ret_from_fork+0x35/0x40
            [<000000001d5c05d8>] 0xffffffffffffffff
    
    Below is the log sequence which leads to memory leak. Here we get the
    nested "Received PLOGI request" for same port and this request leads to
    call the fc_rport_create() twice for the same rport.
    
            kernel: host1: rport fffce5: Received PLOGI request
            kernel: host1: rport fffce5: Received PLOGI in INIT state
            kernel: host1: rport fffce5: Port is Ready
            kernel: host1: rport fffce5: Received PRLI request while in state Ready
            kernel: host1: rport fffce5: PRLI rspp type 8 active 1 passive 0
            kernel: host1: rport fffce5: Received LOGO request while in state Ready
            kernel: host1: rport fffce5: Delete port
            kernel: host1: rport fffce5: Received PLOGI request
            kernel: host1: rport fffce5: Received PLOGI in state Delete - send busy
    
    Link: https://lore.kernel.org/r/20200622101212.3922-2-jhasan@marvell.com
    Reviewed-by: Girish Basrur <gbasrur@marvell.com>
    Reviewed-by: Saurav Kashyap <skashyap@marvell.com>
    Reviewed-by: Shyam Sundar <ssundar@marvell.com>
    Signed-off-by: Javed Hasan <jhasan@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e7be96ae04518f41fe29b4906587bdf9d19bd8b
Author: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Date:   Mon Jun 22 05:30:19 2020 -0400

    cifs: Fix double add page to memcg when cifs_readpages
    
    [ Upstream commit 95a3d8f3af9b0d63b43f221b630beaab9739d13a ]
    
    When xfstests generic/451, there is an BUG at mm/memcontrol.c:
      page:ffffea000560f2c0 refcount:2 mapcount:0 mapping:000000008544e0ea
           index:0xf
      mapping->aops:cifs_addr_ops dentry name:"tst-aio-dio-cycle-write.451"
      flags: 0x2fffff80000001(locked)
      raw: 002fffff80000001 ffffc90002023c50 ffffea0005280088 ffff88815cda0210
      raw: 000000000000000f 0000000000000000 00000002ffffffff ffff88817287d000
      page dumped because: VM_BUG_ON_PAGE(page->mem_cgroup)
      page->mem_cgroup:ffff88817287d000
      ------------[ cut here ]------------
      kernel BUG at mm/memcontrol.c:2659!
      invalid opcode: 0000 [#1] SMP
      CPU: 2 PID: 2038 Comm: xfs_io Not tainted 5.8.0-rc1 #44
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS ?-20190727_
        073836-buildvm-ppc64le-16.ppc.4
      RIP: 0010:commit_charge+0x35/0x50
      Code: 0d 48 83 05 54 b2 02 05 01 48 89 77 38 c3 48 c7
            c6 78 4a ea ba 48 83 05 38 b2 02 05 01 e8 63 0d9
      RSP: 0018:ffffc90002023a50 EFLAGS: 00010202
      RAX: 0000000000000000 RBX: ffff88817287d000 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: ffff88817ac97ea0 RDI: ffff88817ac97ea0
      RBP: ffffea000560f2c0 R08: 0000000000000203 R09: 0000000000000005
      R10: 0000000000000030 R11: ffffc900020237a8 R12: 0000000000000000
      R13: 0000000000000001 R14: 0000000000000001 R15: ffff88815a1272c0
      FS:  00007f5071ab0800(0000) GS:ffff88817ac80000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 000055efcd5ca000 CR3: 000000015d312000 CR4: 00000000000006e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       mem_cgroup_charge+0x166/0x4f0
       __add_to_page_cache_locked+0x4a9/0x710
       add_to_page_cache_locked+0x15/0x20
       cifs_readpages+0x217/0x1270
       read_pages+0x29a/0x670
       page_cache_readahead_unbounded+0x24f/0x390
       __do_page_cache_readahead+0x3f/0x60
       ondemand_readahead+0x1f1/0x470
       page_cache_async_readahead+0x14c/0x170
       generic_file_buffered_read+0x5df/0x1100
       generic_file_read_iter+0x10c/0x1d0
       cifs_strict_readv+0x139/0x170
       new_sync_read+0x164/0x250
       __vfs_read+0x39/0x60
       vfs_read+0xb5/0x1e0
       ksys_pread64+0x85/0xf0
       __x64_sys_pread64+0x22/0x30
       do_syscall_64+0x69/0x150
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f5071fcb1af
      Code: Bad RIP value.
      RSP: 002b:00007ffde2cdb8e0 EFLAGS: 00000293 ORIG_RAX: 0000000000000011
      RAX: ffffffffffffffda RBX: 00007ffde2cdb990 RCX: 00007f5071fcb1af
      RDX: 0000000000001000 RSI: 000055efcd5ca000 RDI: 0000000000000003
      RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000001000 R11: 0000000000000293 R12: 0000000000000001
      R13: 000000000009f000 R14: 0000000000000000 R15: 0000000000001000
      Modules linked in:
      ---[ end trace 725fa14a3e1af65c ]---
    
    Since commit 3fea5a499d57 ("mm: memcontrol: convert page cache to a new
    mem_cgroup_charge() API") not cancel the page charge, the pages maybe
    double add to pagecache:
    thread1                       | thread2
    cifs_readpages
    readpages_get_pages
     add_to_page_cache_locked(head,index=n)=0
                                  | readpages_get_pages
                                  | add_to_page_cache_locked(head,index=n+1)=0
     add_to_page_cache_locked(head, index=n+1)=-EEXIST
     then, will next loop with list head page's
     index=n+1 and the page->mapping not NULL
    readpages_get_pages
    add_to_page_cache_locked(head, index=n+1)
     commit_charge
      VM_BUG_ON_PAGE
    
    So, we should not do the next loop when any page add to page cache
    failed.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Acked-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c415d51721e4f5fd460e39d625af833ef55f82d1
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Tue Jun 16 15:26:36 2020 -0600

    vfio/pci: Clear error and request eventfd ctx after releasing
    
    [ Upstream commit 5c5866c593bbd444d0339ede6a8fb5f14ff66d72 ]
    
    The next use of the device will generate an underflow from the
    stale reference.
    
    Cc: Qian Cai <cai@lca.pw>
    Fixes: 1518ac272e78 ("vfio/pci: fix memory leaks of eventfd ctx")
    Reported-by: Daniel Wagner <dwagner@suse.de>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Tested-by: Daniel Wagner <dwagner@suse.de>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52f7d8a4b5291d830dc22f680f072246342659f7
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Mar 4 12:49:18 2020 +0100

    x86/speculation/mds: Mark mds_user_clear_cpu_buffers() __always_inline
    
    [ Upstream commit a7ef9ba986b5fae9d80f8a7b31db0423687efe4e ]
    
    Prevent the compiler from uninlining and creating traceable/probable
    functions as this is invoked _after_ context tracking switched to
    CONTEXT_USER and rcu idle.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com>
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20200505134340.902709267@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5426f2dae95016839927195e242e51a8cb9ecc88
Author: Boris Brezillon <boris.brezillon@collabora.com>
Date:   Wed Apr 29 09:53:47 2020 -0700

    mtd: parser: cmdline: Support MTD names containing one or more colons
    
    [ Upstream commit eb13fa0227417e84aecc3bd9c029d376e33474d3 ]
    
    Looks like some drivers define MTD names with a colon in it, thus
    making mtdpart= parsing impossible. Let's fix the parser to gracefully
    handle that case: the last ':' in a partition definition sequence is
    considered instead of the first one.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Signed-off-by: Ron Minnich <rminnich@google.com>
    Tested-by: Ron Minnich <rminnich@google.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da45411b2e3050b2fc3ee210e4a08e24690717a2
Author: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
Date:   Thu Jun 4 16:51:21 2020 -0700

    rapidio: avoid data race between file operation callbacks and mport_cdev_add().
    
    [ Upstream commit e1c3cdb26ab881b77486dc50370356a349077c74 ]
    
    Fields of md(mport_dev) are set after cdev_device_add().  However, the
    file operation callbacks can be called after cdev_device_add() and
    therefore accesses to fields of md in the callbacks can race with the rest
    of the mport_cdev_add() function.
    
    One such example is INIT_LIST_HEAD(&md->portwrites) in mport_cdev_add(),
    the list is initialised after cdev_device_add().  This can race with
    list_add_tail(&pw_filter->md_node,&md->portwrites) in
    rio_mport_add_pw_filter() which is called by unlocked_ioctl.
    
    To avoid such data races use cdev_device_add() after initializing md.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Alexandre Bounine <alex.bou9@gmail.com>
    Cc: Matt Porter <mporter@kernel.crashing.org>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Mike Marshall <hubcap@omnibond.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ira Weiny <ira.weiny@intel.com>
    Cc: Allison Randal <allison@lohutok.net>
    Cc: Pavel Andrianov <andrianov@ispras.ru>
    Link: http://lkml.kernel.org/r/20200426112950.1803-1-madhuparnabhowmik10@gmail.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d9fdd1325a2409f43ce5670766deaad12d9dd97
Author: Qian Cai <cai@lca.pw>
Date:   Mon Jun 1 21:48:40 2020 -0700

    mm/swap_state: fix a data race in swapin_nr_pages
    
    [ Upstream commit d6c1f098f2a7ba62627c9bc17cda28f534ef9e4a ]
    
    "prev_offset" is a static variable in swapin_nr_pages() that can be
    accessed concurrently with only mmap_sem held in read mode as noticed by
    KCSAN,
    
     BUG: KCSAN: data-race in swap_cluster_readahead / swap_cluster_readahead
    
     write to 0xffffffff92763830 of 8 bytes by task 14795 on cpu 17:
      swap_cluster_readahead+0x2a6/0x5e0
      swapin_readahead+0x92/0x8dc
      do_swap_page+0x49b/0xf20
      __handle_mm_fault+0xcfb/0xd70
      handle_mm_fault+0xfc/0x2f0
      do_page_fault+0x263/0x715
      page_fault+0x34/0x40
    
     1 lock held by (dnf)/14795:
      #0: ffff897bd2e98858 (&mm->mmap_sem#2){++++}-{3:3}, at: do_page_fault+0x143/0x715
      do_user_addr_fault at arch/x86/mm/fault.c:1405
      (inlined by) do_page_fault at arch/x86/mm/fault.c:1535
     irq event stamp: 83493
     count_memcg_event_mm+0x1a6/0x270
     count_memcg_event_mm+0x119/0x270
     __do_softirq+0x365/0x589
     irq_exit+0xa2/0xc0
    
     read to 0xffffffff92763830 of 8 bytes by task 1 on cpu 22:
      swap_cluster_readahead+0xfd/0x5e0
      swapin_readahead+0x92/0x8dc
      do_swap_page+0x49b/0xf20
      __handle_mm_fault+0xcfb/0xd70
      handle_mm_fault+0xfc/0x2f0
      do_page_fault+0x263/0x715
      page_fault+0x34/0x40
    
     1 lock held by systemd/1:
      #0: ffff897c38f14858 (&mm->mmap_sem#2){++++}-{3:3}, at: do_page_fault+0x143/0x715
     irq event stamp: 43530289
     count_memcg_event_mm+0x1a6/0x270
     count_memcg_event_mm+0x119/0x270
     __do_softirq+0x365/0x589
     irq_exit+0xa2/0xc0
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Marco Elver <elver@google.com>
    Cc: Hugh Dickins <hughd@google.com>
    Link: http://lkml.kernel.org/r/20200402213748.2237-1-cai@lca.pw
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 75bd1d78e8a5e0d01ed2ad58711462f3b9303e72
Author: Jeff Layton <jlayton@kernel.org>
Date:   Fri Mar 20 16:45:45 2020 -0400

    ceph: fix potential race in ceph_check_caps
    
    [ Upstream commit dc3da0461cc4b76f2d0c5b12247fcb3b520edbbf ]
    
    Nothing ensures that session will still be valid by the time we
    dereference the pointer. Take and put a reference.
    
    In principle, we should always be able to get a reference here, but
    throw a warning if that's ever not the case.
    
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a42f87c75dfa504f49ae95b504ee57d30821b8a
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Fri May 22 18:40:06 2020 +0800

    mtd: rawnand: omap_elm: Fix runtime PM imbalance on error
    
    [ Upstream commit 37f7212148cf1d796135cdf8d0c7fee13067674b ]
    
    pm_runtime_get_sync() increments the runtime PM usage counter even
    when it returns an error code. Thus a pairing decrement is needed on
    the error handling path to keep the counter balanced.
    
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20200522104008.28340-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5c4c75707f3843f4c7a79300653700304949cd3b
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Tue May 12 15:19:16 2020 +0300

    perf kcore_copy: Fix module map when there are no modules loaded
    
    [ Upstream commit 61f82e3fb697a8e85f22fdec786528af73dc36d1 ]
    
    In the absence of any modules, no "modules" map is created, but there
    are other executable pages to map, due to eBPF JIT, kprobe or ftrace.
    Map them by recognizing that the first "module" symbol is not
    necessarily from a module, and adjust the map accordingly.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: x86@kernel.org
    Link: http://lore.kernel.org/lkml/20200512121922.8997-10-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5c339f2c9a3e5e1289871ca682ba11a3e89c97a1
Author: Xie XiuQi <xiexiuqi@huawei.com>
Date:   Thu May 21 21:32:17 2020 +0800

    perf util: Fix memory leak of prefix_if_not_in
    
    [ Upstream commit 07e9a6f538cbeecaf5c55b6f2991416f873cdcbd ]
    
    Need to free "str" before return when asprintf() failed to avoid memory
    leak.
    
    Signed-off-by: Xie XiuQi <xiexiuqi@huawei.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Hongbo Yao <yaohongbo@huawei.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Li Bin <huawei.libin@huawei.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: http://lore.kernel.org/lkml/20200521133218.30150-4-liwei391@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c467ff965b02c6463736879b6c963afec6ddbe30
Author: Qian Cai <cai@lca.pw>
Date:   Mon May 11 00:34:50 2020 -0400

    vfio/pci: fix memory leaks of eventfd ctx
    
    [ Upstream commit 1518ac272e789cae8c555d69951b032a275b7602 ]
    
    Finished a qemu-kvm (-device vfio-pci,host=0001:01:00.0) triggers a few
    memory leaks after a while because vfio_pci_set_ctx_trigger_single()
    calls eventfd_ctx_fdget() without the matching eventfd_ctx_put() later.
    Fix it by calling eventfd_ctx_put() for those memory in
    vfio_pci_release() before vfio_device_release().
    
    unreferenced object 0xebff008981cc2b00 (size 128):
      comm "qemu-kvm", pid 4043, jiffies 4294994816 (age 9796.310s)
      hex dump (first 32 bytes):
        01 00 00 00 6b 6b 6b 6b 00 00 00 00 ad 4e ad de  ....kkkk.....N..
        ff ff ff ff 6b 6b 6b 6b ff ff ff ff ff ff ff ff  ....kkkk........
      backtrace:
        [<00000000917e8f8d>] slab_post_alloc_hook+0x74/0x9c
        [<00000000df0f2aa2>] kmem_cache_alloc_trace+0x2b4/0x3d4
        [<000000005fcec025>] do_eventfd+0x54/0x1ac
        [<0000000082791a69>] __arm64_sys_eventfd2+0x34/0x44
        [<00000000b819758c>] do_el0_svc+0x128/0x1dc
        [<00000000b244e810>] el0_sync_handler+0xd0/0x268
        [<00000000d495ef94>] el0_sync+0x164/0x180
    unreferenced object 0x29ff008981cc4180 (size 128):
      comm "qemu-kvm", pid 4043, jiffies 4294994818 (age 9796.290s)
      hex dump (first 32 bytes):
        01 00 00 00 6b 6b 6b 6b 00 00 00 00 ad 4e ad de  ....kkkk.....N..
        ff ff ff ff 6b 6b 6b 6b ff ff ff ff ff ff ff ff  ....kkkk........
      backtrace:
        [<00000000917e8f8d>] slab_post_alloc_hook+0x74/0x9c
        [<00000000df0f2aa2>] kmem_cache_alloc_trace+0x2b4/0x3d4
        [<000000005fcec025>] do_eventfd+0x54/0x1ac
        [<0000000082791a69>] __arm64_sys_eventfd2+0x34/0x44
        [<00000000b819758c>] do_el0_svc+0x128/0x1dc
        [<00000000b244e810>] el0_sync_handler+0xd0/0x268
        [<00000000d495ef94>] el0_sync+0x164/0x180
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d066cd8e1b5525655dbbc56c42d796913eea6e16
Author: David Sterba <dsterba@suse.com>
Date:   Tue Feb 25 15:05:53 2020 +0100

    btrfs: don't force read-only after error in drop snapshot
    
    [ Upstream commit 7c09c03091ac562ddca2b393e5d65c1d37da79f1 ]
    
    Deleting a subvolume on a full filesystem leads to ENOSPC followed by a
    forced read-only. This is not a transaction abort and the filesystem is
    otherwise ok, so the error should be just propagated to the callers.
    
    This is caused by unnecessary call to btrfs_handle_fs_error for all
    errors, except EAGAIN. This does not make sense as the standard
    transaction abort mechanism is in btrfs_drop_snapshot so all relevant
    failures are handled.
    
    Originally in commit cb1b69f4508a ("Btrfs: forced readonly when
    btrfs_drop_snapshot() fails") there was no return value at all, so the
    btrfs_std_error made some sense but once the error handling and
    propagation has been implemented we don't need it anymore.
    
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a174aebcf54030c654c5fdd51a8294ecedd2f19
Author: Yu Chen <chenyu56@huawei.com>
Date:   Thu May 21 16:46:43 2020 +0800

    usb: dwc3: Increase timeout for CmdAct cleared by device controller
    
    [ Upstream commit 1c0e69ae1b9f9004fd72978612ae3463791edc56 ]
    
    If the SS PHY is in P3, there is no pipe_clk, HW may use suspend_clk
    for function, as suspend_clk is slow so EP command need more time to
    complete, e.g, imx8M suspend_clk is 32K, set ep configuration will
    take about 380us per below trace time stamp(44.286278 - 44.285897
    = 0.000381):
    
    configfs_acm.sh-822   [000] d..1    44.285896: dwc3_writel: addr
    000000006d59aae1 value 00000401
    configfs_acm.sh-822   [000] d..1    44.285897: dwc3_readl: addr
    000000006d59aae1 value 00000401
    ... ...
    configfs_acm.sh-822   [000] d..1    44.286278: dwc3_readl: addr
    000000006d59aae1 value 00000001
    configfs_acm.sh-822   [000] d..1    44.286279: dwc3_gadget_ep_cmd:
    ep0out: cmd 'Set Endpoint Configuration' [401] params 00001000
    00000500 00000000 --> status: Successful
    
    This was originally found on Hisilicon Kirin Soc that need more time
    for the device controller to clear the CmdAct of DEPCMD.
    
    Signed-off-by: Yu Chen <chenyu56@huawei.com>
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Li Jun <jun.li@nxp.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27d185697322f9547bfd381c71252ce0bc1c0ee4
Author: Shreyas Joshi <shreyas.joshi@biamp.com>
Date:   Fri May 22 16:53:06 2020 +1000

    printk: handle blank console arguments passed in.
    
    [ Upstream commit 48021f98130880dd74286459a1ef48b5e9bc374f ]
    
    If uboot passes a blank string to console_setup then it results in
    a trashed memory. Ultimately, the kernel crashes during freeing up
    the memory.
    
    This fix checks if there is a blank parameter being
    passed to console_setup from uboot. In case it detects that
    the console parameter is blank then it doesn't setup the serial
    device and it gracefully exits.
    
    Link: https://lore.kernel.org/r/20200522065306.83-1-shreyas.joshi@biamp.com
    Signed-off-by: Shreyas Joshi <shreyas.joshi@biamp.com>
    Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    [pmladek@suse.com: Better format the commit message and code, remove unnecessary brackets.]
    Signed-off-by: Petr Mladek <pmladek@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8dfc0906bcafd337830c1c6e0ed04e686d47a6b5
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Wed May 20 18:14:53 2020 +0800

    drm/nouveau/debugfs: fix runtime pm imbalance on error
    
    [ Upstream commit 00583fbe8031f69bba8b0a9a861efb75fb7131af ]
    
    pm_runtime_get_sync() increments the runtime PM usage counter even
    the call returns an error code. Thus a pairing decrement is needed
    on the error handling path to keep the counter balanced.
    
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de534b39a287c6c3e05c440848da587c23c39c83
Author: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Date:   Fri Apr 17 09:35:31 2020 -0700

    e1000: Do not perform reset in reset_task if we are already down
    
    [ Upstream commit 49ee3c2ab5234757bfb56a0b3a3cb422f427e3a3 ]
    
    We are seeing a deadlock in e1000 down when NAPI is being disabled. Looking
    over the kernel function trace of the system it appears that the interface
    is being closed and then a reset is hitting which deadlocks the interface
    as the NAPI interface is already disabled.
    
    To prevent this from happening I am disabling the reset task when
    __E1000_DOWN is already set. In addition code has been added so that we set
    the __E1000_DOWN while holding the __E1000_RESET flag in e1000_close in
    order to guarantee that the reset task will not run after we have started
    the close call.
    
    Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
    Tested-by: Maxim Zhukov <mussitantesmortem@gmail.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52ee765c0389b5b4c066aca39935dfffbd0bfc88
Author: Anshuman Khandual <anshuman.khandual@arm.com>
Date:   Tue May 19 15:10:39 2020 +0530

    arm64/cpufeature: Drop TraceFilt feature exposure from ID_DFR0 register
    
    [ Upstream commit 1ed1b90a0594c8c9d31e8bb8be25a2b37717dc9e ]
    
    ID_DFR0 based TraceFilt feature should not be exposed to guests. Hence lets
    drop it.
    
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    
    Suggested-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Link: https://lore.kernel.org/r/1589881254-10082-3-git-send-email-anshuman.khandual@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d8e08025aeac9194f17b92086643e3f1698d289
Author: Colin Ian King <colin.king@canonical.com>
Date:   Fri May 15 17:54:53 2020 +0100

    USB: EHCI: ehci-mv: fix less than zero comparison of an unsigned int
    
    [ Upstream commit a7f40c233a6b0540d28743267560df9cfb571ca9 ]
    
    The comparison of hcd->irq to less than zero for an error check will
    never be true because hcd->irq is an unsigned int.  Fix this by
    assigning the int retval to the return of platform_get_irq and checking
    this for the -ve error condition and assigning hcd->irq to retval.
    
    Addresses-Coverity: ("Unsigned compared against 0")
    Fixes: c856b4b0fdb5 ("USB: EHCI: ehci-mv: fix error handling in mv_ehci_probe()")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Link: https://lore.kernel.org/r/20200515165453.104028-1-colin.king@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fc8f9b9fd1dfe1f8d04967ee751806c56cce6310
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Tue May 19 14:50:37 2020 +0200

    fuse: don't check refcount after stealing page
    
    [ Upstream commit 32f98877c57bee6bc27f443a96f49678a2cd6a50 ]
    
    page_count() is unstable.  Unless there has been an RCU grace period
    between when the page was removed from the page cache and now, a
    speculative reference may exist from the page cache.
    
    Reported-by: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac9867f43981c652fadd662e93b529718d1ab1e5
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Fri May 8 14:34:07 2020 +1000

    powerpc/traps: Make unrecoverable NMIs die instead of panic
    
    [ Upstream commit 265d6e588d87194c2fe2d6c240247f0264e0c19b ]
    
    System Reset and Machine Check interrupts that are not recoverable due
    to being nested or interrupting when RI=0 currently panic. This is not
    necessary, and can often just kill the current context and recover.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Reviewed-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Link: https://lore.kernel.org/r/20200508043408.886394-16-npiggin@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bbbe8afb08ffc5483aba995583b079bb287fd2de
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat May 16 08:25:56 2020 +0200

    ALSA: hda: Fix potential race in unsol event handler
    
    [ Upstream commit c637fa151259c0f74665fde7cba5b7eac1417ae5 ]
    
    The unsol event handling code has a loop retrieving the read/write
    indices and the arrays without locking while the append to the array
    may happen concurrently.  This may lead to some inconsistency.
    Although there hasn't been any proof of this bad results, it's still
    safer to protect the racy accesses.
    
    This patch adds the spinlock protection around the unsol handling loop
    for addressing it.  Here we take bus->reg_lock as the writer side
    snd_hdac_bus_queue_event() is also protected by that lock.
    
    Link: https://lore.kernel.org/r/20200516062556.30951-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3d01f225c61c2127ba4f79713cb696e71620f21d
Author: Jonathan Bakker <xc-racer2@live.ca>
Date:   Fri May 8 18:34:33 2020 -0700

    tty: serial: samsung: Correct clock selection logic
    
    [ Upstream commit 7d31676a8d91dd18e08853efd1cb26961a38c6a6 ]
    
    Some variants of the samsung tty driver can pick which clock
    to use for their baud rate generation.  In the DT conversion,
    a default clock was selected to be used if a specific one wasn't
    assigned and then a comparison of which clock rate worked better
    was done.  Unfortunately, the comparison was implemented in such
    a way that only the default clock was ever actually compared.
    Fix this by iterating through all possible clocks, except when a
    specific clock has already been picked via clk_sel (which is
    only possible via board files).
    
    Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
    Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
    Link: https://lore.kernel.org/r/BN6PR04MB06604E63833EA41837EBF77BA3A30@BN6PR04MB0660.namprd04.prod.outlook.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34307affd96900fbdc9b601e2a13ae02a25efbca
Author: Tang Bin <tangbin@cmss.chinamobile.com>
Date:   Fri May 8 19:43:05 2020 +0800

    USB: EHCI: ehci-mv: fix error handling in mv_ehci_probe()
    
    [ Upstream commit c856b4b0fdb5044bca4c0acf9a66f3b5cc01a37a ]
    
    If the function platform_get_irq() failed, the negative value
    returned will not be detected here. So fix error handling in
    mv_ehci_probe(). And when get irq failed, the function
    platform_get_irq() logs an error message, so remove redundant
    message here.
    
    Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
    Signed-off-by: Tang Bin <tangbin@cmss.chinamobile.com>
    Link: https://lore.kernel.org/r/20200508114305.15740-1-tangbin@cmss.chinamobile.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d16f05223ad8ad19f2a7910035f3893a47893a38
Author: Sonny Sasaka <sonnysasaka@chromium.org>
Date:   Wed May 6 12:55:03 2020 -0700

    Bluetooth: Handle Inquiry Cancel error after Inquiry Complete
    
    [ Upstream commit adf1d6926444029396861413aba8a0f2a805742a ]
    
    After sending Inquiry Cancel command to the controller, it is possible
    that Inquiry Complete event comes before Inquiry Cancel command complete
    event. In this case the Inquiry Cancel command will have status of
    Command Disallowed since there is no Inquiry session to be cancelled.
    This case should not be treated as error, otherwise we can reach an
    inconsistent state.
    
    Example of a btmon trace when this happened:
    
    < HCI Command: Inquiry Cancel (0x01|0x0002) plen 0
    > HCI Event: Inquiry Complete (0x01) plen 1
            Status: Success (0x00)
    > HCI Event: Command Complete (0x0e) plen 4
          Inquiry Cancel (0x01|0x0002) ncmd 1
            Status: Command Disallowed (0x0c)
    
    Signed-off-by: Sonny Sasaka <sonnysasaka@chromium.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e9d79b176ffec288f11c059478050d1f9f52c11f
Author: Jonathan Bakker <xc-racer2@live.ca>
Date:   Sat Apr 25 10:36:33 2020 -0700

    phy: samsung: s5pv210-usb2: Add delay after reset
    
    [ Upstream commit 05942b8c36c7eb5d3fc5e375d4b0d0c49562e85d ]
    
    The USB phy takes some time to reset, so make sure we give it to it. The
    delay length was taken from the 4x12 phy driver.
    
    This manifested in issues with the DWC2 driver since commit fe369e1826b3
    ("usb: dwc2: Make dwc2_readl/writel functions endianness-agnostic.")
    where the endianness check would read the DWC ID as 0 due to the phy still
    resetting, resulting in the wrong endian mode being chosen.
    
    Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
    Link: https://lore.kernel.org/r/BN6PR04MB06605D52502816E500683553A3D10@BN6PR04MB0660.namprd04.prod.outlook.com
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 14a4b1f445e5967da399e55f07d58e14211a24a9
Author: Jonathan Bakker <xc-racer2@live.ca>
Date:   Mon May 4 15:12:58 2020 -0700

    power: supply: max17040: Correct voltage reading
    
    [ Upstream commit 0383024f811aa469df258039807810fc3793a105 ]
    
    According to the datasheet available at (1), the bottom four
    bits are always zero and the actual voltage is 1.25x this value
    in mV.  Since the kernel API specifies that voltages should be in
    uV, it should report 1250x the shifted value.
    
    1) https://datasheets.maximintegrated.com/en/ds/MAX17040-MAX17041.pdf
    
    Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 202e92689d7b747918d1637fa767f915606d578c
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri May 1 11:11:09 2020 -0700

    atm: fix a memory leak of vcc->user_back
    
    [ Upstream commit 8d9f73c0ad2f20e9fed5380de0a3097825859d03 ]
    
    In lec_arp_clear_vccs() only entry->vcc is freed, but vcc
    could be installed on entry->recv_vcc too in lec_vcc_added().
    
    This fixes the following memory leak:
    
    unreferenced object 0xffff8880d9266b90 (size 16):
      comm "atm2", pid 425, jiffies 4294907980 (age 23.488s)
      hex dump (first 16 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 6b 6b 6b a5  ............kkk.
      backtrace:
        [<(____ptrval____)>] kmem_cache_alloc_trace+0x10e/0x151
        [<(____ptrval____)>] lane_ioctl+0x4b3/0x569
        [<(____ptrval____)>] do_vcc_ioctl+0x1ea/0x236
        [<(____ptrval____)>] svc_ioctl+0x17d/0x198
        [<(____ptrval____)>] sock_do_ioctl+0x47/0x12f
        [<(____ptrval____)>] sock_ioctl+0x2f9/0x322
        [<(____ptrval____)>] vfs_ioctl+0x1e/0x2b
        [<(____ptrval____)>] ksys_ioctl+0x61/0x80
        [<(____ptrval____)>] __x64_sys_ioctl+0x16/0x19
        [<(____ptrval____)>] do_syscall_64+0x57/0x65
        [<(____ptrval____)>] entry_SYSCALL_64_after_hwframe+0x49/0xb3
    
    Cc: Gengming Liu <l.dmxcsnsbh@gmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1e224370323e471470374b7ea8f416becd7837b
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Fri May 1 15:35:34 2020 +0200

    dt-bindings: sound: wm8994: Correct required supplies based on actual implementaion
    
    [ Upstream commit 8c149b7d75e53be47648742f40fc90d9fc6fa63a ]
    
    The required supplies in bindings were actually not matching
    implementation making the bindings incorrect and misleading.  The Linux
    kernel driver requires all supplies to be present.  Also for wlf,wm8994
    uses just DBVDD-supply instead of DBVDDn-supply (n: <1,3>).
    
    Reported-by: Jonathan Bakker <xc-racer2@live.ca>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Link: https://lore.kernel.org/r/20200501133534.6706-1-krzk@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5134ffb941845b6dc85b9fbb8a4304ce97e6ca40
Author: Will Deacon <will@kernel.org>
Date:   Tue Apr 21 15:29:21 2020 +0100

    arm64: cpufeature: Relax checks for AArch32 support at EL[0-2]
    
    [ Upstream commit 98448cdfe7060dd5491bfbd3f7214ffe1395d58e ]
    
    We don't need to be quite as strict about mismatched AArch32 support,
    which is good because the friendly hardware folks have been busy
    mismatching this to their hearts' content.
    
      * We don't care about EL2 or EL3 (there are silly comments concerning
        the latter, so remove those)
    
      * EL1 support is gated by the ARM64_HAS_32BIT_EL1 capability and handled
        gracefully when a mismatch occurs
    
      * EL0 support is gated by the ARM64_HAS_32BIT_EL0 capability and handled
        gracefully when a mismatch occurs
    
    Relax the AArch32 checks to FTR_NONSTRICT.
    
    Tested-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Link: https://lore.kernel.org/r/20200421142922.18950-8-will@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 18710ee3a03bc63e4870ce98f95ead6ad3773bf1
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Mon Apr 27 12:24:15 2020 +0000

    sparc64: vcc: Fix error return code in vcc_probe()
    
    [ Upstream commit ff62255a2a5c1228a28f2bb063646f948115a309 ]
    
    Fix to return negative error code -ENOMEM from the error handling
    case instead of 0, as done elsewhere in this function.
    
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Link: https://lore.kernel.org/r/20200427122415.47416-1-weiyongjun1@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b32f02fab297b7c80a2943923d1f73ed4d08b77
Author: Ivan Safonov <insafonov@gmail.com>
Date:   Thu Apr 23 22:14:04 2020 +0300

    staging:r8188eu: avoid skb_clone for amsdu to msdu conversion
    
    [ Upstream commit 628cbd971a927abe6388d44320e351c337b331e4 ]
    
    skb clones use same data buffer,
    so tail of one skb is corrupted by beginning of next skb.
    
    Signed-off-by: Ivan Safonov <insafonov@gmail.com>
    Link: https://lore.kernel.org/r/20200423191404.12028-1-insafonov@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 418b8afbecf6707599cadadddf12c1b7b6a4e0a3
Author: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
Date:   Fri Apr 17 21:04:51 2020 +0530

    drivers: char: tlclk.c: Avoid data race between init and interrupt handler
    
    [ Upstream commit 44b8fb6eaa7c3fb770bf1e37619cdb3902cca1fc ]
    
    After registering character device the file operation callbacks can be
    called. The open callback registers interrupt handler.
    Therefore interrupt handler can execute in parallel with rest of the init
    function. To avoid such data race initialize telclk_interrupt variable
    and struct alarm_events before registering character device.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Madhuparna Bhowmik <madhuparnabhowmik10@gmail.com>
    Link: https://lore.kernel.org/r/20200417153451.1551-1-madhuparnabhowmik10@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b4937c169086c9ec53920de7e62e162e26c8159
Author: Douglas Anderson <dianders@chromium.org>
Date:   Tue Mar 24 14:48:27 2020 -0700

    bdev: Reduce time holding bd_mutex in sync in blkdev_close()
    
    [ Upstream commit b849dd84b6ccfe32622988b79b7b073861fcf9f7 ]
    
    While trying to "dd" to the block device for a USB stick, I
    encountered a hung task warning (blocked for > 120 seconds).  I
    managed to come up with an easy way to reproduce this on my system
    (where /dev/sdb is the block device for my USB stick) with:
    
      while true; do dd if=/dev/zero of=/dev/sdb bs=4M; done
    
    With my reproduction here are the relevant bits from the hung task
    detector:
    
     INFO: task udevd:294 blocked for more than 122 seconds.
     ...
     udevd           D    0   294      1 0x00400008
     Call trace:
      ...
      mutex_lock_nested+0x40/0x50
      __blkdev_get+0x7c/0x3d4
      blkdev_get+0x118/0x138
      blkdev_open+0x94/0xa8
      do_dentry_open+0x268/0x3a0
      vfs_open+0x34/0x40
      path_openat+0x39c/0xdf4
      do_filp_open+0x90/0x10c
      do_sys_open+0x150/0x3c8
      ...
    
     ...
     Showing all locks held in the system:
     ...
     1 lock held by dd/2798:
      #0: ffffff814ac1a3b8 (&bdev->bd_mutex){+.+.}, at: __blkdev_put+0x50/0x204
     ...
     dd              D    0  2798   2764 0x00400208
     Call trace:
      ...
      schedule+0x8c/0xbc
      io_schedule+0x1c/0x40
      wait_on_page_bit_common+0x238/0x338
      __lock_page+0x5c/0x68
      write_cache_pages+0x194/0x500
      generic_writepages+0x64/0xa4
      blkdev_writepages+0x24/0x30
      do_writepages+0x48/0xa8
      __filemap_fdatawrite_range+0xac/0xd8
      filemap_write_and_wait+0x30/0x84
      __blkdev_put+0x88/0x204
      blkdev_put+0xc4/0xe4
      blkdev_close+0x28/0x38
      __fput+0xe0/0x238
      ____fput+0x1c/0x28
      task_work_run+0xb0/0xe4
      do_notify_resume+0xfc0/0x14bc
      work_pending+0x8/0x14
    
    The problem appears related to the fact that my USB disk is terribly
    slow and that I have a lot of RAM in my system to cache things.
    Specifically my writes seem to be happening at ~15 MB/s and I've got
    ~4 GB of RAM in my system that can be used for buffering.  To write 4
    GB of buffer to disk thus takes ~4000 MB / ~15 MB/s = ~267 seconds.
    
    The 267 second number is a problem because in __blkdev_put() we call
    sync_blockdev() while holding the bd_mutex.  Any other callers who
    want the bd_mutex will be blocked for the whole time.
    
    The problem is made worse because I believe blkdev_put() specifically
    tells other tasks (namely udev) to go try to access the device at right
    around the same time we're going to hold the mutex for a long time.
    
    Putting some traces around this (after disabling the hung task detector),
    I could confirm:
     dd:    437.608600: __blkdev_put() right before sync_blockdev() for sdb
     udevd: 437.623901: blkdev_open() right before blkdev_get() for sdb
     dd:    661.468451: __blkdev_put() right after sync_blockdev() for sdb
     udevd: 663.820426: blkdev_open() right after blkdev_get() for sdb
    
    A simple fix for this is to realize that sync_blockdev() works fine if
    you're not holding the mutex.  Also, it's not the end of the world if
    you sync a little early (though it can have performance impacts).
    Thus we can make a guess that we're going to need to do the sync and
    then do it without holding the mutex.  We still do one last sync with
    the mutex but it should be much, much faster.
    
    With this, my hung task warnings for my test case are gone.
    
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Guenter Roeck <groeck@chromium.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f81fe6eb5b2e02f993f11170dcaf3d4f2a41b3c8
Author: Steve Rutherford <srutherford@google.com>
Date:   Thu Apr 16 12:11:52 2020 -0700

    KVM: Remove CREATE_IRQCHIP/SET_PIT2 race
    
    [ Upstream commit 7289fdb5dcdbc5155b5531529c44105868a762f2 ]
    
    Fixes a NULL pointer dereference, caused by the PIT firing an interrupt
    before the interrupt table has been initialized.
    
    SET_PIT2 can race with the creation of the IRQchip. In particular,
    if SET_PIT2 is called with a low PIT timer period (after the creation of
    the IOAPIC, but before the instantiation of the irq routes), the PIT can
    fire an interrupt at an uninitialized table.
    
    Signed-off-by: Steve Rutherford <srutherford@google.com>
    Signed-off-by: Jon Cargille <jcargill@google.com>
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Message-Id: <20200416191152.259434-1-jcargill@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 10f556247876d1db19bb3cdfb9b9333ef95cf805
Author: Raviteja Narayanam <raviteja.narayanam@xilinx.com>
Date:   Thu Apr 9 11:56:02 2020 +0530

    serial: uartps: Wait for tx_empty in console setup
    
    [ Upstream commit 42e11948ddf68b9f799cad8c0ddeab0a39da33e8 ]
    
    On some platforms, the log is corrupted while console is being
    registered. It is observed that when set_termios is called, there
    are still some bytes in the FIFO to be transmitted.
    
    So, wait for tx_empty inside cdns_uart_console_setup before calling
    set_termios.
    
    Signed-off-by: Raviteja Narayanam <raviteja.narayanam@xilinx.com>
    Reviewed-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
    Link: https://lore.kernel.org/r/1586413563-29125-2-git-send-email-raviteja.narayanam@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e23d9c134235e4887fff0a7ed10cf7b77eced34f
Author: Nilesh Javali <njavali@marvell.com>
Date:   Tue Apr 7 23:43:32 2020 -0700

    scsi: qedi: Fix termination timeouts in session logout
    
    [ Upstream commit b9b97e6903032ec56e6dcbe137a9819b74a17fea ]
    
    The destroy connection ramrod timed out during session logout.  Fix the
    wait delay for graceful vs abortive termination as per the FW requirements.
    
    Link: https://lore.kernel.org/r/20200408064332.19377-7-mrangankar@marvell.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Nilesh Javali <njavali@marvell.com>
    Signed-off-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a98f638c1041a7dd7fc20159378d8a244d44e1c
Author: Jaewon Kim <jaewon31.kim@samsung.com>
Date:   Fri Apr 10 14:32:48 2020 -0700

    mm/mmap.c: initialize align_offset explicitly for vm_unmapped_area
    
    [ Upstream commit 09ef5283fd96ac424ef0e569626f359bf9ab86c9 ]
    
    On passing requirement to vm_unmapped_area, arch_get_unmapped_area and
    arch_get_unmapped_area_topdown did not set align_offset.  Internally on
    both unmapped_area and unmapped_area_topdown, if info->align_mask is 0,
    then info->align_offset was meaningless.
    
    But commit df529cabb7a2 ("mm: mmap: add trace point of
    vm_unmapped_area") always prints info->align_offset even though it is
    uninitialized.
    
    Fix this uninitialized value issue by setting it to 0 explicitly.
    
    Before:
      vm_unmapped_area: addr=0x755b155000 err=0 total_vm=0x15aaf0 flags=0x1 len=0x109000 lo=0x8000 hi=0x75eed48000 mask=0x0 ofs=0x4022
    
    After:
      vm_unmapped_area: addr=0x74a4ca1000 err=0 total_vm=0x168ab1 flags=0x1 len=0x9000 lo=0x8000 hi=0x753d94b000 mask=0x0 ofs=0x0
    
    Signed-off-by: Jaewon Kim <jaewon31.kim@samsung.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Michel Lespinasse <walken@google.com>
    Cc: Borislav Petkov <bp@suse.de>
    Link: http://lkml.kernel.org/r/20200409094035.19457-1-jaewon31.kim@samsung.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 894d4db4a092222a88315b7b7a11e5d4cebd3601
Author: Qian Cai <cai@lca.pw>
Date:   Wed Apr 1 21:10:12 2020 -0700

    mm/vmscan.c: fix data races using kswapd_classzone_idx
    
    [ Upstream commit 5644e1fbbfe15ad06785502bbfe5751223e5841d ]
    
    pgdat->kswapd_classzone_idx could be accessed concurrently in
    wakeup_kswapd().  Plain writes and reads without any lock protection
    result in data races.  Fix them by adding a pair of READ|WRITE_ONCE() as
    well as saving a branch (compilers might well optimize the original code
    in an unintentional way anyway).  While at it, also take care of
    pgdat->kswapd_order and non-kswapd threads in allow_direct_reclaim().  The
    data races were reported by KCSAN,
    
     BUG: KCSAN: data-race in wakeup_kswapd / wakeup_kswapd
    
     write to 0xffff9f427ffff2dc of 4 bytes by task 7454 on cpu 13:
      wakeup_kswapd+0xf1/0x400
      wakeup_kswapd at mm/vmscan.c:3967
      wake_all_kswapds+0x59/0xc0
      wake_all_kswapds at mm/page_alloc.c:4241
      __alloc_pages_slowpath+0xdcc/0x1290
      __alloc_pages_slowpath at mm/page_alloc.c:4512
      __alloc_pages_nodemask+0x3bb/0x450
      alloc_pages_vma+0x8a/0x2c0
      do_anonymous_page+0x16e/0x6f0
      __handle_mm_fault+0xcd5/0xd40
      handle_mm_fault+0xfc/0x2f0
      do_page_fault+0x263/0x6f9
      page_fault+0x34/0x40
    
     1 lock held by mtest01/7454:
      #0: ffff9f425afe8808 (&mm->mmap_sem#2){++++}, at:
     do_page_fault+0x143/0x6f9
     do_user_addr_fault at arch/x86/mm/fault.c:1405
     (inlined by) do_page_fault at arch/x86/mm/fault.c:1539
     irq event stamp: 6944085
     count_memcg_event_mm+0x1a6/0x270
     count_memcg_event_mm+0x119/0x270
     __do_softirq+0x34c/0x57c
     irq_exit+0xa2/0xc0
    
     read to 0xffff9f427ffff2dc of 4 bytes by task 7472 on cpu 38:
      wakeup_kswapd+0xc8/0x400
      wake_all_kswapds+0x59/0xc0
      __alloc_pages_slowpath+0xdcc/0x1290
      __alloc_pages_nodemask+0x3bb/0x450
      alloc_pages_vma+0x8a/0x2c0
      do_anonymous_page+0x16e/0x6f0
      __handle_mm_fault+0xcd5/0xd40
      handle_mm_fault+0xfc/0x2f0
      do_page_fault+0x263/0x6f9
      page_fault+0x34/0x40
    
     1 lock held by mtest01/7472:
      #0: ffff9f425a9ac148 (&mm->mmap_sem#2){++++}, at:
     do_page_fault+0x143/0x6f9
     irq event stamp: 6793561
     count_memcg_event_mm+0x1a6/0x270
     count_memcg_event_mm+0x119/0x270
     __do_softirq+0x34c/0x57c
     irq_exit+0xa2/0xc0
    
     BUG: KCSAN: data-race in kswapd / wakeup_kswapd
    
     write to 0xffff90973ffff2dc of 4 bytes by task 820 on cpu 6:
      kswapd+0x27c/0x8d0
      kthread+0x1e0/0x200
      ret_from_fork+0x27/0x50
    
     read to 0xffff90973ffff2dc of 4 bytes by task 6299 on cpu 0:
      wakeup_kswapd+0xf3/0x450
      wake_all_kswapds+0x59/0xc0
      __alloc_pages_slowpath+0xdcc/0x1290
      __alloc_pages_nodemask+0x3bb/0x450
      alloc_pages_vma+0x8a/0x2c0
      do_anonymous_page+0x170/0x700
      __handle_mm_fault+0xc9f/0xd00
      handle_mm_fault+0xfc/0x2f0
      do_page_fault+0x263/0x6f9
      page_fault+0x34/0x40
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Marco Elver <elver@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Link: http://lkml.kernel.org/r/1582749472-5171-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 36725917bfada59c68b2bb42dbfe25da4945092b
Author: Xianting Tian <xianting_tian@126.com>
Date:   Wed Apr 1 21:04:47 2020 -0700

    mm/filemap.c: clear page error before actual read
    
    [ Upstream commit faffdfa04fa11ccf048cebdde73db41ede0679e0 ]
    
    Mount failure issue happens under the scenario: Application forked dozens
    of threads to mount the same number of cramfs images separately in docker,
    but several mounts failed with high probability.  Mount failed due to the
    checking result of the page(read from the superblock of loop dev) is not
    uptodate after wait_on_page_locked(page) returned in function cramfs_read:
    
       wait_on_page_locked(page);
       if (!PageUptodate(page)) {
          ...
       }
    
    The reason of the checking result of the page not uptodate: systemd-udevd
    read the loopX dev before mount, because the status of loopX is Lo_unbound
    at this time, so loop_make_request directly trigger the calling of io_end
    handler end_buffer_async_read, which called SetPageError(page).  So It
    caused the page can't be set to uptodate in function
    end_buffer_async_read:
    
       if(page_uptodate && !PageError(page)) {
          SetPageUptodate(page);
       }
    
    Then mount operation is performed, it used the same page which is just
    accessed by systemd-udevd above, Because this page is not uptodate, it
    will launch a actual read via submit_bh, then wait on this page by calling
    wait_on_page_locked(page).  When the I/O of the page done, io_end handler
    end_buffer_async_read is called, because no one cleared the page
    error(during the whole read path of mount), which is caused by
    systemd-udevd reading, so this page is still in "PageError" status, which
    can't be set to uptodate in function end_buffer_async_read, then caused
    mount failure.
    
    But sometimes mount succeed even through systemd-udeved read loopX dev
    just before, The reason is systemd-udevd launched other loopX read just
    between step 3.1 and 3.2, the steps as below:
    
    1, loopX dev default status is Lo_unbound;
    2, systemd-udved read loopX dev (page is set to PageError);
    3, mount operation
       1) set loopX status to Lo_bound;
       ==>systemd-udevd read loopX dev<==
       2) read loopX dev(page has no error)
       3) mount succeed
    
    As the loopX dev status is set to Lo_bound after step 3.1, so the other
    loopX dev read by systemd-udevd will go through the whole I/O stack, part
    of the call trace as below:
    
       SYS_read
          vfs_read
              do_sync_read
                  blkdev_aio_read
                     generic_file_aio_read
                         do_generic_file_read:
                            ClearPageError(page);
                            mapping->a_ops->readpage(filp, page);
    
    here, mapping->a_ops->readpage() is blkdev_readpage.  In latest kernel,
    some function name changed, the call trace as below:
    
       blkdev_read_iter
          generic_file_read_iter
             generic_file_buffered_read:
                /*
                 * A previous I/O error may have been due to temporary
                 * failures, eg. mutipath errors.
                 * Pg_error will be set again if readpage fails.
                 */
                ClearPageError(page);
                /* Start the actual read. The read will unlock the page*/
                error=mapping->a_ops->readpage(flip, page);
    
    We can see ClearPageError(page) is called before the actual read,
    then the read in step 3.2 succeed.
    
    This patch is to add the calling of ClearPageError just before the actual
    read of read path of cramfs mount.  Without the patch, the call trace as
    below when performing cramfs mount:
    
       do_mount
          cramfs_read
             cramfs_blkdev_read
                read_cache_page
                   do_read_cache_page:
                      filler(data, page);
                      or
                      mapping->a_ops->readpage(data, page);
    
    With the patch, the call trace as below when performing mount:
    
       do_mount
          cramfs_read
             cramfs_blkdev_read
                read_cache_page:
                   do_read_cache_page:
                      ClearPageError(page); <== new add
                      filler(data, page);
                      or
                      mapping->a_ops->readpage(data, page);
    
    With the patch, mount operation trigger the calling of
    ClearPageError(page) before the actual read, the page has no error if no
    additional page error happen when I/O done.
    
    Signed-off-by: Xianting Tian <xianting_tian@126.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Jan Kara <jack@suse.cz>
    Cc: <yubin@h3c.com>
    Link: http://lkml.kernel.org/r/1583318844-22971-1-git-send-email-xianting_tian@126.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b18b28d4e5a82438b117dc6a9eff742f205f10f7
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Wed Apr 1 21:04:34 2020 -0700

    mm/kmemleak.c: use address-of operator on section symbols
    
    [ Upstream commit b0d14fc43d39203ae025f20ef4d5d25d9ccf4be1 ]
    
    Clang warns:
    
      mm/kmemleak.c:1955:28: warning: array comparison always evaluates to a constant [-Wtautological-compare]
            if (__start_ro_after_init < _sdata || __end_ro_after_init > _edata)
                                      ^
      mm/kmemleak.c:1955:60: warning: array comparison always evaluates to a constant [-Wtautological-compare]
            if (__start_ro_after_init < _sdata || __end_ro_after_init > _edata)
    
    These are not true arrays, they are linker defined symbols, which are just
    addresses.  Using the address of operator silences the warning and does
    not change the resulting assembly with either clang/ld.lld or gcc/ld
    (tested with diff + objdump -Dr).
    
    Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Link: https://github.com/ClangBuiltLinux/linux/issues/895
    Link: http://lkml.kernel.org/r/20200220051551.44000-1-natechancellor@gmail.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 05a4c45d090948e4f6fde4363407cc09c9839fad
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Wed Apr 1 13:04:49 2020 -0400

    NFS: Fix races nfs_page_group_destroy() vs nfs_destroy_unlinked_subrequests()
    
    [ Upstream commit 08ca8b21f760c0ed5034a5c122092eec22ccf8f4 ]
    
    When a subrequest is being detached from the subgroup, we want to
    ensure that it is not holding the group lock, or in the process
    of waiting for the group lock.
    
    Fixes: 5b2b5187fa85 ("NFS: Fix nfs_page_group_destroy() and nfs_lock_and_join_requests() race cases")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 78483c1c7741ffa72991d93d19a75bfdcc2cbf57
Author: Andreas Steinmetz <ast@domdv.de>
Date:   Tue Mar 31 14:25:54 2020 +0200

    ALSA: usb-audio: Fix case when USB MIDI interface has more than one extra endpoint descriptor
    
    [ Upstream commit 5c6cd7021a05a02fcf37f360592d7c18d4d807fb ]
    
    The Miditech MIDIFACE 16x16 (USB ID 1290:1749) has more than one extra
    endpoint descriptor.
    
    The first extra descriptor is: 0x06 0x30 0x00 0x00 0x00 0x00
    
    As the code in snd_usbmidi_get_ms_info() looks only at the
    first extra descriptor to find USB_DT_CS_ENDPOINT the device
    as such is recognized but there is neither input nor output
    configured.
    
    The patch iterates through the extra descriptors to find the
    proper one. With this patch the device is correctly configured.
    
    Signed-off-by: Andreas Steinmetz <ast@domdv.de>
    Link: https://lore.kernel.org/r/1c3b431a86f69e1d60745b6110cdb93c299f120b.camel@domdv.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2e21f66730382ec5898e36633a5f4fa56e35de10
Author: Liu Song <liu.song11@zte.com.cn>
Date:   Thu Jan 16 23:36:07 2020 +0800

    ubifs: Fix out-of-bounds memory access caused by abnormal value of node_len
    
    [ Upstream commit acc5af3efa303d5f36cc8c0f61716161f6ca1384 ]
    
    In “ubifs_check_node”, when the value of "node_len" is abnormal,
    the code will goto label of "out_len" for execution. Then, in the
    following "ubifs_dump_node", if inode type is "UBIFS_DATA_NODE",
    in "print_hex_dump", an out-of-bounds access may occur due to the
    wrong "ch->len".
    
    Therefore, when the value of "node_len" is abnormal, data length
    should to be adjusted to a reasonable safe range. At this time,
    structured data is not credible, so dump the corrupted data directly
    for analysis.
    
    Signed-off-by: Liu Song <liu.song11@zte.com.cn>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64901930e7fbfe74190c1714bbb4fa5f6ce1e992
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Tue Mar 24 16:53:59 2020 -0400

    svcrdma: Fix leak of transport addresses
    
    [ Upstream commit 1a33d8a284b1e85e03b8c7b1ea8fb985fccd1d71 ]
    
    Kernel memory leak detected:
    
    unreferenced object 0xffff888849cdf480 (size 8):
      comm "kworker/u8:3", pid 2086, jiffies 4297898756 (age 4269.856s)
      hex dump (first 8 bytes):
        30 00 cd 49 88 88 ff ff                          0..I....
      backtrace:
        [<00000000acfc370b>] __kmalloc_track_caller+0x137/0x183
        [<00000000a2724354>] kstrdup+0x2b/0x43
        [<0000000082964f84>] xprt_rdma_format_addresses+0x114/0x17d [rpcrdma]
        [<00000000dfa6ed00>] xprt_setup_rdma_bc+0xc0/0x10c [rpcrdma]
        [<0000000073051a83>] xprt_create_transport+0x3f/0x1a0 [sunrpc]
        [<0000000053531a8e>] rpc_create+0x118/0x1cd [sunrpc]
        [<000000003a51b5f8>] setup_callback_client+0x1a5/0x27d [nfsd]
        [<000000001bd410af>] nfsd4_process_cb_update.isra.7+0x16c/0x1ac [nfsd]
        [<000000007f4bbd56>] nfsd4_run_cb_work+0x4c/0xbd [nfsd]
        [<0000000055c5586b>] process_one_work+0x1b2/0x2fe
        [<00000000b1e3e8ef>] worker_thread+0x1a6/0x25a
        [<000000005205fb78>] kthread+0xf6/0xfb
        [<000000006d2dc057>] ret_from_fork+0x3a/0x50
    
    Introduce a call to xprt_rdma_free_addresses() similar to the way
    that the TCP backchannel releases a transport's peer address
    strings.
    
    Fixes: 5d252f90a800 ("svcrdma: Add class for RDMA backwards direction transport")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 868367c527750e1ee4dd7f0120c1512b79654bf3
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Fri Mar 27 17:15:39 2020 +0100

    SUNRPC: Fix a potential buffer overflow in 'svc_print_xprts()'
    
    [ Upstream commit b25b60d7bfb02a74bc3c2d998e09aab159df8059 ]
    
    'maxlen' is the total size of the destination buffer. There is only one
    caller and this value is 256.
    
    When we compute the size already used and what we would like to add in
    the buffer, the trailling NULL character is not taken into account.
    However, this trailling character will be added by the 'strcat' once we
    have checked that we have enough place.
    
    So, there is a off-by-one issue and 1 byte of the stack could be
    erroneously overwridden.
    
    Take into account the trailling NULL, when checking if there is enough
    place in the destination buffer.
    
    While at it, also replace a 'sprintf' by a safer 'snprintf', check for
    output truncation and avoid a superfluous 'strlen'.
    
    Fixes: dc9a16e49dbba ("svc: Add /proc/sys/sunrpc/transport files")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    [ cel: very minor fix to documenting comment
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1a5f5ff53382153e1b3143843276d39016e6d51a
Author: Zhu Yanjun <yanjunz@mellanox.com>
Date:   Mon Mar 23 13:28:00 2020 +0200

    RDMA/rxe: Set sys_image_guid to be aligned with HW IB devices
    
    [ Upstream commit d0ca2c35dd15a3d989955caec02beea02f735ee6 ]
    
    The RXE driver doesn't set sys_image_guid and user space applications see
    zeros. This causes to pyverbs tests to fail with the following traceback,
    because the IBTA spec requires to have valid sys_image_guid.
    
     Traceback (most recent call last):
       File "./tests/test_device.py", line 51, in test_query_device
         self.verify_device_attr(attr)
       File "./tests/test_device.py", line 74, in verify_device_attr
         assert attr.sys_image_guid != 0
    
    In order to fix it, set sys_image_guid to be equal to node_guid.
    
    Before:
     5: rxe0: ... node_guid 5054:00ff:feaa:5363 sys_image_guid
     0000:0000:0000:0000
    
    After:
     5: rxe0: ... node_guid 5054:00ff:feaa:5363 sys_image_guid
     5054:00ff:feaa:5363
    
    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Link: https://lore.kernel.org/r/20200323112800.1444784-1-leon@kernel.org
    Signed-off-by: Zhu Yanjun <yanjunz@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c59dfd1b2e315256874e91df015d96a4808d5fc6
Author: Gabriel Ravier <gabravier@gmail.com>
Date:   Thu Mar 12 15:50:21 2020 +0100

    tools: gpio-hammer: Avoid potential overflow in main
    
    [ Upstream commit d1ee7e1f5c9191afb69ce46cc7752e4257340a31 ]
    
    If '-o' was used more than 64 times in a single invocation of gpio-hammer,
    this could lead to an overflow of the 'lines' array. This commit fixes
    this by avoiding the overflow and giving a proper diagnostic back to the
    user
    
    Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20bec895066ea4f258acb5a8df07a24f6d78cfeb
Author: Pratik Rajesh Sampat <psampat@linux.ibm.com>
Date:   Mon Mar 16 19:27:43 2020 +0530

    cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_work_fn
    
    [ Upstream commit d95fe371ecd28901f11256c610b988ed44e36ee2 ]
    
    The patch avoids allocating cpufreq_policy on stack hence fixing frame
    size overflow in 'powernv_cpufreq_work_fn'
    
    Fixes: 227942809b52 ("cpufreq: powernv: Restore cpu frequency to policy->cur on unthrottling")
    Signed-off-by: Pratik Rajesh Sampat <psampat@linux.ibm.com>
    Reviewed-by: Daniel Axtens <dja@axtens.net>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200316135743.57735-1-psampat@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f6dcb50ae522e239f11dcb62f65df9f3a5c7780
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Tue Mar 24 08:03:19 2020 +0100

    perf cpumap: Fix snprintf overflow check
    
    [ Upstream commit d74b181a028bb5a468f0c609553eff6a8fdf4887 ]
    
    'snprintf' returns the number of characters which would be generated for
    the given input.
    
    If the returned value is *greater than* or equal to the buffer size, it
    means that the output has been truncated.
    
    Fix the overflow test accordingly.
    
    Fixes: 7780c25bae59f ("perf tools: Allow ability to map cpus to nodes easily")
    Fixes: 92a7e1278005b ("perf cpumap: Add cpu__max_present_cpu()")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Suggested-by: David Laight <David.Laight@ACULAB.COM>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Don Zickus <dzickus@redhat.com>
    Cc: He Zhe <zhe.he@windriver.com>
    Cc: Jan Stancek <jstancek@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: kernel-janitors@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20200324070319.10901-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a94174de442663abc350903930c76b7314ebf54b
Author: Vignesh Raghavendra <vigneshr@ti.com>
Date:   Thu Mar 19 16:33:39 2020 +0530

    serial: 8250: 8250_omap: Terminate DMA before pushing data on RX timeout
    
    [ Upstream commit 7cf4df30a98175033e9849f7f16c46e96ba47f41 ]
    
    Terminate and flush DMA internal buffers, before pushing RX data to
    higher layer. Otherwise, this will lead to data corruption, as driver
    would end up pushing stale buffer data to higher layer while actual data
    is still stuck inside DMA hardware and has yet not arrived at the
    memory.
    While at that, replace deprecated dmaengine_terminate_all() with
    dmaengine_terminate_async().
    
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Link: https://lore.kernel.org/r/20200319110344.21348-2-vigneshr@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8be86c1d26c1e223c2b25fb33605ed83cf8acf3
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Fri Mar 20 14:52:00 2020 +0200

    serial: 8250_omap: Fix sleeping function called from invalid context during probe
    
    [ Upstream commit 4ce35a3617c0ac758c61122b2218b6c8c9ac9398 ]
    
    When booting j721e the following bug is printed:
    
    [    1.154821] BUG: sleeping function called from invalid context at kernel/sched/completion.c:99
    [    1.154827] in_atomic(): 0, irqs_disabled(): 128, non_block: 0, pid: 12, name: kworker/0:1
    [    1.154832] 3 locks held by kworker/0:1/12:
    [    1.154836]  #0: ffff000840030728 ((wq_completion)events){+.+.}, at: process_one_work+0x1d4/0x6e8
    [    1.154852]  #1: ffff80001214fdd8 (deferred_probe_work){+.+.}, at: process_one_work+0x1d4/0x6e8
    [    1.154860]  #2: ffff00084060b170 (&dev->mutex){....}, at: __device_attach+0x38/0x138
    [    1.154872] irq event stamp: 63096
    [    1.154881] hardirqs last  enabled at (63095): [<ffff800010b74318>] _raw_spin_unlock_irqrestore+0x70/0x78
    [    1.154887] hardirqs last disabled at (63096): [<ffff800010b740d8>] _raw_spin_lock_irqsave+0x28/0x80
    [    1.154893] softirqs last  enabled at (62254): [<ffff800010080c88>] _stext+0x488/0x564
    [    1.154899] softirqs last disabled at (62247): [<ffff8000100fdb3c>] irq_exit+0x114/0x140
    [    1.154906] CPU: 0 PID: 12 Comm: kworker/0:1 Not tainted 5.6.0-rc6-next-20200318-00094-g45e4089b0bd3 #221
    [    1.154911] Hardware name: Texas Instruments K3 J721E SoC (DT)
    [    1.154917] Workqueue: events deferred_probe_work_func
    [    1.154923] Call trace:
    [    1.154928]  dump_backtrace+0x0/0x190
    [    1.154933]  show_stack+0x14/0x20
    [    1.154940]  dump_stack+0xe0/0x148
    [    1.154946]  ___might_sleep+0x150/0x1f0
    [    1.154952]  __might_sleep+0x4c/0x80
    [    1.154957]  wait_for_completion_timeout+0x40/0x140
    [    1.154964]  ti_sci_set_device_state+0xa0/0x158
    [    1.154969]  ti_sci_cmd_get_device_exclusive+0x14/0x20
    [    1.154977]  ti_sci_dev_start+0x34/0x50
    [    1.154984]  genpd_runtime_resume+0x78/0x1f8
    [    1.154991]  __rpm_callback+0x3c/0x140
    [    1.154996]  rpm_callback+0x20/0x80
    [    1.155001]  rpm_resume+0x568/0x758
    [    1.155007]  __pm_runtime_resume+0x44/0xb0
    [    1.155013]  omap8250_probe+0x2b4/0x508
    [    1.155019]  platform_drv_probe+0x50/0xa0
    [    1.155023]  really_probe+0xd4/0x318
    [    1.155028]  driver_probe_device+0x54/0xe8
    [    1.155033]  __device_attach_driver+0x80/0xb8
    [    1.155039]  bus_for_each_drv+0x74/0xc0
    [    1.155044]  __device_attach+0xdc/0x138
    [    1.155049]  device_initial_probe+0x10/0x18
    [    1.155053]  bus_probe_device+0x98/0xa0
    [    1.155058]  deferred_probe_work_func+0x74/0xb0
    [    1.155063]  process_one_work+0x280/0x6e8
    [    1.155068]  worker_thread+0x48/0x430
    [    1.155073]  kthread+0x108/0x138
    [    1.155079]  ret_from_fork+0x10/0x18
    
    To fix the bug we need to first call pm_runtime_enable() prior to any
    pm_runtime calls.
    
    Reported-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Link: https://lore.kernel.org/r/20200320125200.6772-1-peter.ujfalusi@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a978c01bd6aeaec4275f2a027c8944ddbfbc27e3
Author: Vignesh Raghavendra <vigneshr@ti.com>
Date:   Thu Mar 19 16:02:29 2020 +0530

    serial: 8250_port: Don't service RX FIFO if throttled
    
    [ Upstream commit f19c3f6c8109b8bab000afd35580929958e087a9 ]
    
    When port's throttle callback is called, it should stop pushing any more
    data into TTY buffer to avoid buffer overflow. This means driver has to
    stop HW from receiving more data and assert the HW flow control. For
    UARTs with auto HW flow control (such as 8250_omap) manual assertion of
    flow control line is not possible and only way is to allow RX FIFO to
    fill up, thus trigger auto HW flow control logic.
    
    Therefore make sure that 8250 generic IRQ handler does not drain data
    when port is stopped (i.e UART_LSR_DR is unset in read_status_mask). Not
    servicing, RX FIFO would trigger auto HW flow control when FIFO
    occupancy reaches preset threshold, thus halting RX.
    Since, error conditions in UART_LSR register are cleared just by reading
    the register, data has to be drained in case there are FIFO errors, else
    error information will lost.
    
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Link: https://lore.kernel.org/r/20200319103230.16867-2-vigneshr@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c4d07355d93fa5bca2533a8647d22ed3d006987
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Wed Feb 19 22:10:12 2020 -0700

    tracing: Use address-of operator on section symbols
    
    [ Upstream commit bf2cbe044da275021b2de5917240411a19e5c50d ]
    
    Clang warns:
    
    ../kernel/trace/trace.c:9335:33: warning: array comparison always
    evaluates to true [-Wtautological-compare]
            if (__stop___trace_bprintk_fmt != __start___trace_bprintk_fmt)
                                           ^
    1 warning generated.
    
    These are not true arrays, they are linker defined symbols, which are
    just addresses. Using the address of operator silences the warning and
    does not change the runtime result of the check (tested with some print
    statements compiled in with clang + ld.lld and gcc + ld.bfd in QEMU).
    
    Link: http://lkml.kernel.org/r/20200220051011.26113-1-natechancellor@gmail.com
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/893
    Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e309db54d9e8ba0fb793536f97c062f88c963f4a
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Fri Mar 6 08:34:01 2020 +0100

    rtc: ds1374: fix possible race condition
    
    [ Upstream commit c11af8131a4e7ba1960faed731ee7e84c2c13c94 ]
    
    The RTC IRQ is requested before the struct rtc_device is allocated,
    this may lead to a NULL pointer dereference in the IRQ handler.
    
    To fix this issue, allocating the rtc_device struct before requesting
    the RTC IRQ using devm_rtc_allocate_device, and use rtc_register_device
    to register the RTC device.
    
    Link: https://lore.kernel.org/r/20200306073404.56921-1-alexandre.belloni@bootlin.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 80090ac63e908e9932a0d8f8a8fe0812daf97a8a
Author: Stefan Berger <stefanb@linux.ibm.com>
Date:   Thu Mar 12 11:53:31 2020 -0400

    tpm: ibmvtpm: Wait for buffer to be set before proceeding
    
    [ Upstream commit d8d74ea3c00214aee1e1826ca18e77944812b9b4 ]
    
    Synchronize with the results from the CRQs before continuing with
    the initialization. This avoids trying to send TPM commands while
    the rtce buffer has not been allocated, yet.
    
    This patch fixes an existing race condition that may occurr if the
    hypervisor does not quickly respond to the VTPM_GET_RTCE_BUFFER_SIZE
    request sent during initialization and therefore the ibmvtpm->rtce_buf
    has not been allocated at the time the first TPM command is sent.
    
    Fixes: 132f76294744 ("drivers/char/tpm: Add new device driver to support IBM vTPM")
    Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
    Acked-by: Nayna Jain <nayna@linux.ibm.com>
    Tested-by: Nayna Jain <nayna@linux.ibm.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27fd5aad275d3a5236ac19f185417fb39b50d937
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Wed Mar 11 10:37:55 2020 -0700

    xfs: don't ever return a stale pointer from __xfs_dir3_free_read
    
    [ Upstream commit 1cb5deb5bc095c070c09a4540c45f9c9ba24be43 ]
    
    If we decide that a directory free block is corrupt, we must take care
    not to leak a buffer pointer to the caller.  After xfs_trans_brelse
    returns, the buffer can be freed or reused, which means that we have to
    set *bpp back to NULL.
    
    Callers are supposed to notice the nonzero return value and not use the
    buffer pointer, but we should code more defensively, even if all current
    callers handle this situation correctly.
    
    Fixes: de14c5f541e7 ("xfs: verify free block header fields")
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dcadd67205d624dc1440aedef542cf778de5be09
Author: Colin Ian King <colin.king@canonical.com>
Date:   Mon Feb 10 15:26:46 2020 +0100

    media: tda10071: fix unsigned sign extension overflow
    
    [ Upstream commit a7463e2dc698075132de9905b89f495df888bb79 ]
    
    The shifting of buf[3] by 24 bits to the left will be promoted to
    a 32 bit signed int and then sign-extended to an unsigned long. In
    the unlikely event that the the top bit of buf[3] is set then all
    then all the upper bits end up as also being set because of
    the sign-extension and this affect the ev->post_bit_error sum.
    Fix this by using the temporary u32 variable bit_error to avoid
    the sign-extension promotion. This also removes the need to do the
    computation twice.
    
    Addresses-Coverity: ("Unintended sign extension")
    
    Fixes: 267897a4708f ("[media] tda10071: implement DVBv5 statistics")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 799263eb37a4f7f6d39334046929c3bc92452a7f
Author: Howard Chung <howardchung@google.com>
Date:   Thu Mar 12 12:35:27 2020 +0800

    Bluetooth: L2CAP: handle l2cap config request during open state
    
    [ Upstream commit 96298f640104e4cd9a913a6e50b0b981829b94ff ]
    
    According to Core Spec Version 5.2 | Vol 3, Part A 6.1.5,
    the incoming L2CAP_ConfigReq should be handled during
    OPEN state.
    
    The section below shows the btmon trace when running
    L2CAP/COS/CFD/BV-12-C before and after this change.
    
    === Before ===
    ...
    > ACL Data RX: Handle 256 flags 0x02 dlen 12                #22
          L2CAP: Connection Request (0x02) ident 2 len 4
            PSM: 1 (0x0001)
            Source CID: 65
    < ACL Data TX: Handle 256 flags 0x00 dlen 16                #23
          L2CAP: Connection Response (0x03) ident 2 len 8
            Destination CID: 64
            Source CID: 65
            Result: Connection successful (0x0000)
            Status: No further information available (0x0000)
    < ACL Data TX: Handle 256 flags 0x00 dlen 12                #24
          L2CAP: Configure Request (0x04) ident 2 len 4
            Destination CID: 65
            Flags: 0x0000
    > HCI Event: Number of Completed Packets (0x13) plen 5      #25
            Num handles: 1
            Handle: 256
            Count: 1
    > HCI Event: Number of Completed Packets (0x13) plen 5      #26
            Num handles: 1
            Handle: 256
            Count: 1
    > ACL Data RX: Handle 256 flags 0x02 dlen 16                #27
          L2CAP: Configure Request (0x04) ident 3 len 8
            Destination CID: 64
            Flags: 0x0000
            Option: Unknown (0x10) [hint]
            01 00                                            ..
    < ACL Data TX: Handle 256 flags 0x00 dlen 18                #28
          L2CAP: Configure Response (0x05) ident 3 len 10
            Source CID: 65
            Flags: 0x0000
            Result: Success (0x0000)
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 672
    > HCI Event: Number of Completed Packets (0x13) plen 5      #29
            Num handles: 1
            Handle: 256
            Count: 1
    > ACL Data RX: Handle 256 flags 0x02 dlen 14                #30
          L2CAP: Configure Response (0x05) ident 2 len 6
            Source CID: 64
            Flags: 0x0000
            Result: Success (0x0000)
    > ACL Data RX: Handle 256 flags 0x02 dlen 20                #31
          L2CAP: Configure Request (0x04) ident 3 len 12
            Destination CID: 64
            Flags: 0x0000
            Option: Unknown (0x10) [hint]
            01 00 91 02 11 11                                ......
    < ACL Data TX: Handle 256 flags 0x00 dlen 14                #32
          L2CAP: Command Reject (0x01) ident 3 len 6
            Reason: Invalid CID in request (0x0002)
            Destination CID: 64
            Source CID: 65
    > HCI Event: Number of Completed Packets (0x13) plen 5      #33
            Num handles: 1
            Handle: 256
            Count: 1
    ...
    === After ===
    ...
    > ACL Data RX: Handle 256 flags 0x02 dlen 12               #22
          L2CAP: Connection Request (0x02) ident 2 len 4
            PSM: 1 (0x0001)
            Source CID: 65
    < ACL Data TX: Handle 256 flags 0x00 dlen 16               #23
          L2CAP: Connection Response (0x03) ident 2 len 8
            Destination CID: 64
            Source CID: 65
            Result: Connection successful (0x0000)
            Status: No further information available (0x0000)
    < ACL Data TX: Handle 256 flags 0x00 dlen 12               #24
          L2CAP: Configure Request (0x04) ident 2 len 4
            Destination CID: 65
            Flags: 0x0000
    > HCI Event: Number of Completed Packets (0x13) plen 5     #25
            Num handles: 1
            Handle: 256
            Count: 1
    > HCI Event: Number of Completed Packets (0x13) plen 5     #26
            Num handles: 1
            Handle: 256
            Count: 1
    > ACL Data RX: Handle 256 flags 0x02 dlen 16               #27
          L2CAP: Configure Request (0x04) ident 3 len 8
            Destination CID: 64
            Flags: 0x0000
            Option: Unknown (0x10) [hint]
            01 00                                            ..
    < ACL Data TX: Handle 256 flags 0x00 dlen 18               #28
          L2CAP: Configure Response (0x05) ident 3 len 10
            Source CID: 65
            Flags: 0x0000
            Result: Success (0x0000)
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 672
    > HCI Event: Number of Completed Packets (0x13) plen 5     #29
            Num handles: 1
            Handle: 256
            Count: 1
    > ACL Data RX: Handle 256 flags 0x02 dlen 14               #30
          L2CAP: Configure Response (0x05) ident 2 len 6
            Source CID: 64
            Flags: 0x0000
            Result: Success (0x0000)
    > ACL Data RX: Handle 256 flags 0x02 dlen 20               #31
          L2CAP: Configure Request (0x04) ident 3 len 12
            Destination CID: 64
            Flags: 0x0000
            Option: Unknown (0x10) [hint]
            01 00 91 02 11 11                                .....
    < ACL Data TX: Handle 256 flags 0x00 dlen 18               #32
          L2CAP: Configure Response (0x05) ident 3 len 10
            Source CID: 65
            Flags: 0x0000
            Result: Success (0x0000)
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 672
    < ACL Data TX: Handle 256 flags 0x00 dlen 12               #33
          L2CAP: Configure Request (0x04) ident 3 len 4
            Destination CID: 65
            Flags: 0x0000
    > HCI Event: Number of Completed Packets (0x13) plen 5     #34
            Num handles: 1
            Handle: 256
            Count: 1
    > HCI Event: Number of Completed Packets (0x13) plen 5     #35
            Num handles: 1
            Handle: 256
            Count: 1
    ...
    
    Signed-off-by: Howard Chung <howardchung@google.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 02146c9f49d56ca2535b8baa3cf4fc679ce8337b
Author: Sagar Biradar <Sagar.Biradar@microchip.com>
Date:   Wed Feb 12 16:29:31 2020 -0800

    scsi: aacraid: Disabling TM path and only processing IOP reset
    
    [ Upstream commit bef18d308a2215eff8c3411a23d7f34604ce56c3 ]
    
    Fixes the occasional adapter panic when sg_reset is issued with -d, -t, -b
    and -H flags.  Removal of command type HBA_IU_TYPE_SCSI_TM_REQ in
    aac_hba_send since iu_type, request_id and fib_flags are not populated.
    Device and target reset handlers are made to send TMF commands only when
    reset_state is 0.
    
    Link: https://lore.kernel.org/r/1581553771-25796-1-git-send-email-Sagar.Biradar@microchip.com
    Reviewed-by: Sagar Biradar <Sagar.Biradar@microchip.com>
    Signed-off-by: Sagar Biradar <Sagar.Biradar@microchip.com>
    Signed-off-by: Balsundar P <balsundar.p@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit be0c8314e31cea2cfd486b9aa3af64b9b7b5c972
Author: Wen Gong <wgong@codeaurora.org>
Date:   Fri Feb 14 11:42:18 2020 +0800

    ath10k: use kzalloc to read for ath10k_sdio_hif_diag_read
    
    [ Upstream commit 402f2992b4d62760cce7c689ff216ea3bf4d6e8a ]
    
    When use command to read values, it crashed.
    
    command:
    dd if=/sys/kernel/debug/ieee80211/phy0/ath10k/mem_value count=1 bs=4 skip=$((0x100233))
    
    It will call to ath10k_sdio_hif_diag_read with address = 0x4008cc and buf_len = 4.
    
    Then system crash:
    [ 1786.013258] Unable to handle kernel paging request at virtual address ffffffc00bd45000
    [ 1786.013273] Mem abort info:
    [ 1786.013281]   ESR = 0x96000045
    [ 1786.013291]   Exception class = DABT (current EL), IL = 32 bits
    [ 1786.013299]   SET = 0, FnV = 0
    [ 1786.013307]   EA = 0, S1PTW = 0
    [ 1786.013314] Data abort info:
    [ 1786.013322]   ISV = 0, ISS = 0x00000045
    [ 1786.013330]   CM = 0, WnR = 1
    [ 1786.013342] swapper pgtable: 4k pages, 39-bit VAs, pgdp = 000000008542a60e
    [ 1786.013350] [ffffffc00bd45000] pgd=0000000000000000, pud=0000000000000000
    [ 1786.013368] Internal error: Oops: 96000045 [#1] PREEMPT SMP
    [ 1786.013609] Process swapper/0 (pid: 0, stack limit = 0x0000000084b153c6)
    [ 1786.013623] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.19.86 #137
    [ 1786.013631] Hardware name: MediaTek krane sku176 board (DT)
    [ 1786.013643] pstate: 80000085 (Nzcv daIf -PAN -UAO)
    [ 1786.013662] pc : __memcpy+0x94/0x180
    [ 1786.013678] lr : swiotlb_tbl_unmap_single+0x84/0x150
    [ 1786.013686] sp : ffffff8008003c60
    [ 1786.013694] x29: ffffff8008003c90 x28: ffffffae96411f80
    [ 1786.013708] x27: ffffffae960d2018 x26: ffffff8019a4b9a8
    [ 1786.013721] x25: 0000000000000000 x24: 0000000000000001
    [ 1786.013734] x23: ffffffae96567000 x22: 00000000000051d4
    [ 1786.013747] x21: 0000000000000000 x20: 00000000fe6e9000
    [ 1786.013760] x19: 0000000000000004 x18: 0000000000000020
    [ 1786.013773] x17: 0000000000000001 x16: 0000000000000000
    [ 1786.013787] x15: 00000000ffffffff x14: 00000000000044c0
    [ 1786.013800] x13: 0000000000365ba4 x12: 0000000000000000
    [ 1786.013813] x11: 0000000000000001 x10: 00000037be6e9000
    [ 1786.013826] x9 : ffffffc940000000 x8 : 000000000bd45000
    [ 1786.013839] x7 : 0000000000000000 x6 : ffffffc00bd45000
    [ 1786.013852] x5 : 0000000000000000 x4 : 0000000000000000
    [ 1786.013865] x3 : 0000000000000c00 x2 : 0000000000000004
    [ 1786.013878] x1 : fffffff7be6e9004 x0 : ffffffc00bd45000
    [ 1786.013891] Call trace:
    [ 1786.013903]  __memcpy+0x94/0x180
    [ 1786.013914]  unmap_single+0x6c/0x84
    [ 1786.013925]  swiotlb_unmap_sg_attrs+0x54/0x80
    [ 1786.013938]  __swiotlb_unmap_sg_attrs+0x8c/0xa4
    [ 1786.013952]  msdc_unprepare_data+0x6c/0x84
    [ 1786.013963]  msdc_request_done+0x58/0x84
    [ 1786.013974]  msdc_data_xfer_done+0x1a0/0x1c8
    [ 1786.013985]  msdc_irq+0x12c/0x17c
    [ 1786.013996]  __handle_irq_event_percpu+0xe4/0x250
    [ 1786.014006]  handle_irq_event_percpu+0x28/0x68
    [ 1786.014015]  handle_irq_event+0x48/0x78
    [ 1786.014026]  handle_fasteoi_irq+0xd0/0x1a0
    [ 1786.014039]  __handle_domain_irq+0x84/0xc4
    [ 1786.014050]  gic_handle_irq+0x124/0x1a4
    [ 1786.014059]  el1_irq+0xb0/0x128
    [ 1786.014072]  cpuidle_enter_state+0x298/0x328
    [ 1786.014082]  cpuidle_enter+0x30/0x40
    [ 1786.014094]  do_idle+0x190/0x268
    [ 1786.014104]  cpu_startup_entry+0x24/0x28
    [ 1786.014116]  rest_init+0xd4/0xe0
    [ 1786.014126]  start_kernel+0x30c/0x38c
    [ 1786.014139] Code: f8408423 f80084c3 36100062 b8404423 (b80044c3)
    [ 1786.014150] ---[ end trace 3b02ddb698ea69ee ]---
    [ 1786.015415] Kernel panic - not syncing: Fatal exception in interrupt
    [ 1786.015433] SMP: stopping secondary CPUs
    [ 1786.015447] Kernel Offset: 0x2e8d200000 from 0xffffff8008000000
    [ 1786.015458] CPU features: 0x0,2188200c
    [ 1786.015466] Memory Limit: none
    
    For sdio chip, it need the memory which is kmalloc, if it is
    vmalloc from ath10k_mem_value_read, then it have a memory error.
    kzalloc of ath10k_sdio_hif_diag_read32 is the correct type, so
    add kzalloc in ath10k_sdio_hif_diag_read to replace the buffer
    which is vmalloc from ath10k_mem_value_read.
    
    This patch only effect sdio chip.
    
    Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00029.
    
    Signed-off-by: Wen Gong <wgong@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65cac4b332cf30955db26972eb2265373f586e0c
Author: John Clements <john.clements@amd.com>
Date:   Thu Mar 5 17:48:56 2020 +0800

    drm/amdgpu: increase atombios cmd timeout
    
    [ Upstream commit 1b3460a8b19688ad3033b75237d40fa580a5a953 ]
    
    mitigates race condition on BACO reset between GPU bootcode and driver reload
    
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: John Clements <john.clements@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2cffad47fa5c7a41632ddeb749da09ac49f7f845
Author: Kirill A. Shutemov <kirill@shutemov.name>
Date:   Thu Mar 5 22:28:32 2020 -0800

    mm: avoid data corruption on CoW fault into PFN-mapped VMA
    
    [ Upstream commit c3e5ea6ee574ae5e845a40ac8198de1fb63bb3ab ]
    
    Jeff Moyer has reported that one of xfstests triggers a warning when run
    on DAX-enabled filesystem:
    
            WARNING: CPU: 76 PID: 51024 at mm/memory.c:2317 wp_page_copy+0xc40/0xd50
            ...
            wp_page_copy+0x98c/0xd50 (unreliable)
            do_wp_page+0xd8/0xad0
            __handle_mm_fault+0x748/0x1b90
            handle_mm_fault+0x120/0x1f0
            __do_page_fault+0x240/0xd70
            do_page_fault+0x38/0xd0
            handle_page_fault+0x10/0x30
    
    The warning happens on failed __copy_from_user_inatomic() which tries to
    copy data into a CoW page.
    
    This happens because of race between MADV_DONTNEED and CoW page fault:
    
            CPU0                                    CPU1
     handle_mm_fault()
       do_wp_page()
         wp_page_copy()
           do_wp_page()
                                            madvise(MADV_DONTNEED)
                                              zap_page_range()
                                                zap_pte_range()
                                                  ptep_get_and_clear_full()
                                                  <TLB flush>
             __copy_from_user_inatomic()
             sees empty PTE and fails
             WARN_ON_ONCE(1)
             clear_page()
    
    The solution is to re-try __copy_from_user_inatomic() under PTL after
    checking that PTE is matches the orig_pte.
    
    The second copy attempt can still fail, like due to non-readable PTE, but
    there's nothing reasonable we can do about, except clearing the CoW page.
    
    Reported-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Tested-by: Jeff Moyer <jmoyer@redhat.com>
    Cc: <stable@vger.kernel.org>
    Cc: Justin He <Justin.He@arm.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Link: http://lkml.kernel.org/r/20200218154151.13349-1-kirill.shutemov@linux.intel.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8596ba0e0cda70d72f22e084e189fc95ab1f3406
Author: Qiujun Huang <hqjagain@gmail.com>
Date:   Mon Feb 24 23:02:46 2020 +0800

    ext4: fix a data race at inode->i_disksize
    
    [ Upstream commit dce8e237100f60c28cc66effb526ba65a01d8cb3 ]
    
    KCSAN find inode->i_disksize could be accessed concurrently.
    
    BUG: KCSAN: data-race in ext4_mark_iloc_dirty / ext4_write_end
    
    write (marked) to 0xffff8b8932f40090 of 8 bytes by task 66792 on cpu 0:
     ext4_write_end+0x53f/0x5b0
     ext4_da_write_end+0x237/0x510
     generic_perform_write+0x1c4/0x2a0
     ext4_buffered_write_iter+0x13a/0x210
     ext4_file_write_iter+0xe2/0x9b0
     new_sync_write+0x29c/0x3a0
     __vfs_write+0x92/0xa0
     vfs_write+0xfc/0x2a0
     ksys_write+0xe8/0x140
     __x64_sys_write+0x4c/0x60
     do_syscall_64+0x8a/0x2a0
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    read to 0xffff8b8932f40090 of 8 bytes by task 14414 on cpu 1:
     ext4_mark_iloc_dirty+0x716/0x1190
     ext4_mark_inode_dirty+0xc9/0x360
     ext4_convert_unwritten_extents+0x1bc/0x2a0
     ext4_convert_unwritten_io_end_vec+0xc5/0x150
     ext4_put_io_end+0x82/0x130
     ext4_writepages+0xae7/0x16f0
     do_writepages+0x64/0x120
     __writeback_single_inode+0x7d/0x650
     writeback_sb_inodes+0x3a4/0x860
     __writeback_inodes_wb+0xc4/0x150
     wb_writeback+0x43f/0x510
     wb_workfn+0x3b2/0x8a0
     process_one_work+0x39b/0x7e0
     worker_thread+0x88/0x650
     kthread+0x1d4/0x1f0
     ret_from_fork+0x35/0x40
    
    The plain read is outside of inode->i_data_sem critical section
    which results in a data race. Fix it by adding READ_ONCE().
    
    Signed-off-by: Qiujun Huang <hqjagain@gmail.com>
    Link: https://lore.kernel.org/r/1582556566-3909-1-git-send-email-hqjagain@gmail.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62658ebe5c19c47419a82b21736770b1d99135e7
Author: Wen Yang <wenyang@linux.alibaba.com>
Date:   Mon Jan 20 18:05:23 2020 +0800

    timekeeping: Prevent 32bit truncation in scale64_check_overflow()
    
    [ Upstream commit 4cbbc3a0eeed675449b1a4d080008927121f3da3 ]
    
    While unlikely the divisor in scale64_check_overflow() could be >= 32bit in
    scale64_check_overflow(). do_div() truncates the divisor to 32bit at least
    on 32bit platforms.
    
    Use div64_u64() instead to avoid the truncation to 32-bit.
    
    [ tglx: Massaged changelog ]
    
    Signed-off-by: Wen Yang <wenyang@linux.alibaba.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20200120100523.45656-1-wenyang@linux.alibaba.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df7c23331f8547f69a752407ddad94a6bbbc52d8
Author: Alain Michaud <alainm@chromium.org>
Date:   Tue Mar 3 15:55:34 2020 +0000

    Bluetooth: guard against controllers sending zero'd events
    
    [ Upstream commit 08bb4da90150e2a225f35e0f642cdc463958d696 ]
    
    Some controllers have been observed to send zero'd events under some
    conditions.  This change guards against this condition as well as adding
    a trace to facilitate diagnosability of this condition.
    
    Signed-off-by: Alain Michaud <alainm@chromium.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2aa093c65cd3c5a7532f5288426dbdc55a801e5a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Feb 6 16:45:27 2020 +0100

    media: go7007: Fix URB type for interrupt handling
    
    [ Upstream commit a3ea410cac41b19a5490aad7fe6d9a9a772e646e ]
    
    Josef reported that his old-and-good Plextor ConvertX M402U video
    converter spews lots of WARNINGs on the recent kernels, and it turned
    out that the device uses a bulk endpoint for interrupt handling just
    like 2250 board.
    
    For fixing it, generalize the check with the proper verification of
    the endpoint instead of hard-coded board type check.
    
    Fixes: 7e5219d18e93 ("[media] go7007: Fix 2250 urb type")
    Reported-and-tested-by: Josef Möllers <josef.moellers@suse.com>
    BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1162583
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206427
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62f0bcb73c9365668a660afb6a0b10eb2f2de150
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Sun Feb 9 19:33:41 2020 +0300

    dmaengine: tegra-apb: Prevent race conditions on channel's freeing
    
    [ Upstream commit 8e84172e372bdca20c305d92d51d33640d2da431 ]
    
    It's incorrect to check the channel's "busy" state without taking a lock.
    That shouldn't cause any real troubles, nevertheless it's always better
    not to have any race conditions in the code.
    
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Acked-by: Jon Hunter <jonathanh@nvidia.com>
    Link: https://lore.kernel.org/r/20200209163356.6439-5-digetx@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 25b3f09cef1e03c5257945280f0edf6a61d41296
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Feb 24 15:01:39 2020 +0100

    bpf: Remove recursion prevention from rcu free callback
    
    [ Upstream commit 8a37963c7ac9ecb7f86f8ebda020e3f8d6d7b8a0 ]
    
    If an element is freed via RCU then recursion into BPF instrumentation
    functions is not a concern. The element is already detached from the map
    and the RCU callback does not hold any locks on which a kprobe, perf event
    or tracepoint attached BPF program could deadlock.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20200224145643.259118710@linutronix.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c71f82c25ac40b386a9e6a97bf2e94aa36e9eb4
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Wed Jan 22 08:53:46 2020 -0800

    x86/pkeys: Add check for pkey "overflow"
    
    [ Upstream commit 16171bffc829272d5e6014bad48f680cb50943d9 ]
    
    Alex Shi reported the pkey macros above arch_set_user_pkey_access()
    to be unused.  They are unused, and even refer to a nonexistent
    CONFIG option.
    
    But, they might have served a good use, which was to ensure that
    the code does not try to set values that would not fit in the
    PKRU register.  As it stands, a too-large 'pkey' value would
    be likely to silently overflow the u32 new_pkru_bits.
    
    Add a check to look for overflows.  Also add a comment to remind
    any future developer to closely examine the types used to store
    pkey values if arch_max_pkey() ever changes.
    
    This boots and passes the x86 pkey selftests.
    
    Reported-by: Alex Shi <alex.shi@linux.alibaba.com>
    Signed-off-by: Dave Hansen <dave.hansen@intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/20200122165346.AD4DA150@viggo.jf.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 95b2fe652ca2508b77a1979e53771f01db885880
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Feb 11 08:35:46 2020 +0100

    media: staging/imx: Missing assignment in imx_media_capture_device_register()
    
    [ Upstream commit ef0ed05dcef8a74178a8b480cce23a377b1de2b8 ]
    
    There was supposed to be a "ret = " assignment here, otherwise the
    error handling on the next line won't work.
    
    Fixes: 64b5a49df486 ("[media] media: imx: Add Capture Device Interface")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Steve Longerbeam <slongerbeam@gmail.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 722b6c2411cb15e0c90a8780bf2e13794cf69e16
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Feb 13 18:24:48 2020 +0100

    KVM: x86: fix incorrect comparison in trace event
    
    [ Upstream commit 147f1a1fe5d7e6b01b8df4d0cbd6f9eaf6b6c73b ]
    
    The "u" field in the event has three states, -1/0/1.  Using u8 however means that
    comparison with -1 will always fail, so change to signed char.
    
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd9bc9ecc48751e5801d62da2a729b1aefa796c4
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Mon Feb 17 12:57:14 2020 -0800

    RDMA/rxe: Fix configuration of atomic queue pair attributes
    
    [ Upstream commit fb3063d31995cc4cf1d47a406bb61d6fb1b1d58d ]
    
    From the comment above the definition of the roundup_pow_of_two() macro:
    
         The result is undefined when n == 0.
    
    Hence only pass positive values to roundup_pow_of_two(). This patch fixes
    the following UBSAN complaint:
    
      UBSAN: Undefined behaviour in ./include/linux/log2.h:57:13
      shift exponent 64 is too large for 64-bit type 'long unsigned int'
      Call Trace:
       dump_stack+0xa5/0xe6
       ubsan_epilogue+0x9/0x26
       __ubsan_handle_shift_out_of_bounds.cold+0x4c/0xf9
       rxe_qp_from_attr.cold+0x37/0x5d [rdma_rxe]
       rxe_modify_qp+0x59/0x70 [rdma_rxe]
       _ib_modify_qp+0x5aa/0x7c0 [ib_core]
       ib_modify_qp+0x3b/0x50 [ib_core]
       cma_modify_qp_rtr+0x234/0x260 [rdma_cm]
       __rdma_accept+0x1a7/0x650 [rdma_cm]
       nvmet_rdma_cm_handler+0x1286/0x14cd [nvmet_rdma]
       cma_cm_event_handler+0x6b/0x330 [rdma_cm]
       cma_ib_req_handler+0xe60/0x22d0 [rdma_cm]
       cm_process_work+0x30/0x140 [ib_cm]
       cm_req_handler+0x11f4/0x1cd0 [ib_cm]
       cm_work_handler+0xb8/0x344e [ib_cm]
       process_one_work+0x569/0xb60
       worker_thread+0x7a/0x5d0
       kthread+0x1e6/0x210
       ret_from_fork+0x24/0x30
    
    Link: https://lore.kernel.org/r/20200217205714.26937-1-bvanassche@acm.org
    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ceb5051c82fecddca7a65648543fb7b2cdd28be3
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Mon Feb 17 11:21:11 2020 +0100

    perf test: Fix test trace+probe_vfs_getname.sh on s390
    
    [ Upstream commit 2bbc83537614517730e9f2811195004b712de207 ]
    
    This test places a kprobe to function getname_flags() in the kernel
    which has the following prototype:
    
      struct filename *getname_flags(const char __user *filename, int flags, int *empty)
    
    The 'filename' argument points to a filename located in user space memory.
    
    Looking at commit 88903c464321c ("tracing/probe: Add ustring type for
    user-space string") the kprobe should indicate that user space memory is
    accessed.
    
    Output before:
    
       [root@m35lp76 perf]# ./perf test 66 67
       66: Use vfs_getname probe to get syscall args filenames   : FAILED!
       67: Check open filename arg using perf trace + vfs_getname: FAILED!
       [root@m35lp76 perf]#
    
    Output after:
    
       [root@m35lp76 perf]# ./perf test 66 67
       66: Use vfs_getname probe to get syscall args filenames   : Ok
       67: Check open filename arg using perf trace + vfs_getname: Ok
       [root@m35lp76 perf]#
    
    Comments from Masami Hiramatsu:
    
    This bug doesn't happen on x86 or other archs on which user address
    space and kernel address space is the same. On some arches (ppc64 in
    this case?) user address space is partially or completely the same as
    kernel address space.
    
    (Yes, they switch the world when running into the kernel) In this case,
    we need to use different data access functions for each space.
    
    That is why I introduced the "ustring" type for kprobe events.
    
    As far as I can see, Thomas's patch is sane. Thomas, could you show us
    your result on your test environment?
    
    Comments from Thomas Richter:
    
    Test results for s/390 included above.
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Link: http://lore.kernel.org/lkml/20200217102111.61137-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e12a8a61d193ab8db718ca188cbf452efd960b65
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Mon Apr 8 10:58:32 2019 +0800

    drm/omap: fix possible object reference leak
    
    [ Upstream commit 47340e46f34a3b1d80e40b43ae3d7a8da34a3541 ]
    
    The call to of_find_matching_node returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c:212:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 209, but without a corresponding object release within this function.
    drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c:237:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 209, but without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Sebastian Reichel <sebastian.reichel@collabora.com>
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: dri-devel@lists.freedesktop.org
    Cc: linux-kernel@vger.kernel.org
    Cc: Markus Elfring <Markus.Elfring@web.de>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1554692313-28882-2-git-send-email-wen.yang99@zte.com.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f4360875cb5a7d8c3fdcea90b3d129ad69a0ffb8
Author: James Smart <jsmart2021@gmail.com>
Date:   Mon Jan 27 16:23:07 2020 -0800

    scsi: lpfc: Fix coverity errors in fmdi attribute handling
    
    [ Upstream commit 4cb9e1ddaa145be9ed67b6a7de98ca705a43f998 ]
    
    Coverity reported a memory corruption error for the fdmi attributes
    routines:
    
      CID 15768 [Memory Corruption] Out-of-bounds access on FDMI
    
    Sloppy coding of the fmdi structures. In both the lpfc_fdmi_attr_def and
    lpfc_fdmi_reg_port_list structures, a field was placed at the start of
    payload that may have variable content. The field was given an arbitrary
    type (uint32_t). The code then uses the field name to derive an address,
    which it used in things such as memset and memcpy. The memset sizes or
    memcpy lengths were larger than the arbitrary type, thus coverity reported
    an error.
    
    Fix by replacing the arbitrary fields with the real field structures
    describing the payload.
    
    Link: https://lore.kernel.org/r/20200128002312.16346-8-jsmart2021@gmail.com
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8c7eaf684f49739a9ab940c25f03fbde87fcef87
Author: James Smart <jsmart2021@gmail.com>
Date:   Mon Jan 27 16:23:01 2020 -0800

    scsi: lpfc: Fix RQ buffer leakage when no IOCBs available
    
    [ Upstream commit 39c4f1a965a9244c3ba60695e8ff8da065ec6ac4 ]
    
    The driver is occasionally seeing the following SLI Port error, requiring
    reset and reinit:
    
     Port Status Event: ... error 1=0x52004a01, error 2=0x218
    
    The failure means an RQ timeout. That is, the adapter had received
    asynchronous receive frames, ran out of buffer slots to place the frames,
    and the driver did not replenish the buffer slots before a timeout
    occurred. The driver should not be so slow in replenishing buffers that a
    timeout can occur.
    
    When the driver received all the frames of a sequence, it allocates an IOCB
    to put the frames in. In a situation where there was no IOCB available for
    the frame of a sequence, the RQ buffer corresponding to the first frame of
    the sequence was not returned to the FW. Eventually, with enough traffic
    encountering the situation, the timeout occurred.
    
    Fix by releasing the buffer back to firmware whenever there is no IOCB for
    the first frame.
    
    [mkp: typo]
    
    Link: https://lore.kernel.org/r/20200128002312.16346-2-jsmart2021@gmail.com
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd79c17744311f20facf056c0d56a88a48c1c464
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Sat Feb 1 10:47:47 2020 +0300

    selinux: sel_avc_get_stat_idx should increase position index
    
    [ Upstream commit 8d269a8e2a8f0bca89022f4ec98de460acb90365 ]
    
    If seq_file .next function does not change position index,
    read after some lseek can generate unexpected output.
    
    $ dd if=/sys/fs/selinux/avc/cache_stats # usual output
    lookups hits misses allocations reclaims frees
    817223 810034 7189 7189 6992 7037
    1934894 1926896 7998 7998 7632 7683
    1322812 1317176 5636 5636 5456 5507
    1560571 1551548 9023 9023 9056 9115
    0+1 records in
    0+1 records out
    189 bytes copied, 5,1564e-05 s, 3,7 MB/s
    
    $# read after lseek to midle of last line
    $ dd if=/sys/fs/selinux/avc/cache_stats bs=180 skip=1
    dd: /sys/fs/selinux/avc/cache_stats: cannot skip to specified offset
    056 9115   <<<< end of last line
    1560571 1551548 9023 9023 9056 9115  <<< whole last line once again
    0+1 records in
    0+1 records out
    45 bytes copied, 8,7221e-05 s, 516 kB/s
    
    $# read after lseek beyond  end of of file
    $ dd if=/sys/fs/selinux/avc/cache_stats bs=1000 skip=1
    dd: /sys/fs/selinux/avc/cache_stats: cannot skip to specified offset
    1560571 1551548 9023 9023 9056 9115  <<<< generates whole last line
    0+1 records in
    0+1 records out
    36 bytes copied, 9,0934e-05 s, 396 kB/s
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Acked-by: Stephen Smalley <sds@tycho.nsa.gov>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f789c3a880d4c864384759fd90978f7eb81cc08
Author: Steve Grubb <sgrubb@redhat.com>
Date:   Fri Jan 24 17:29:16 2020 -0500

    audit: CONFIG_CHANGE don't log internal bookkeeping as an event
    
    [ Upstream commit 70b3eeed49e8190d97139806f6fbaf8964306cdb ]
    
    Common Criteria calls out for any action that modifies the audit trail to
    be recorded. That usually is interpreted to mean insertion or removal of
    rules. It is not required to log modification of the inode information
    since the watch is still in effect. Additionally, if the rule is a never
    rule and the underlying file is one they do not want events for, they
    get an event for this bookkeeping update against their wishes.
    
    Since no device/inode info is logged at insertion and no device/inode
    information is logged on update, there is nothing meaningful being
    communicated to the admin by the CONFIG_CHANGE updated_rules event. One
    can assume that the rule was not "modified" because it is still watching
    the intended target. If the device or inode cannot be resolved, then
    audit_panic is called which is sufficient.
    
    The correct resolution is to drop logging config_update events since
    the watch is still in effect but just on another unknown inode.
    
    Signed-off-by: Steve Grubb <sgrubb@redhat.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a4c3614955b7a4a03ec337defa255d99aa72ef4f
Author: Qian Cai <cai@lca.pw>
Date:   Tue Feb 4 13:40:29 2020 -0500

    skbuff: fix a data race in skb_queue_len()
    
    [ Upstream commit 86b18aaa2b5b5bb48e609cd591b3d2d0fdbe0442 ]
    
    sk_buff.qlen can be accessed concurrently as noticed by KCSAN,
    
     BUG: KCSAN: data-race in __skb_try_recv_from_queue / unix_dgram_sendmsg
    
     read to 0xffff8a1b1d8a81c0 of 4 bytes by task 5371 on cpu 96:
      unix_dgram_sendmsg+0x9a9/0xb70 include/linux/skbuff.h:1821
                                     net/unix/af_unix.c:1761
      ____sys_sendmsg+0x33e/0x370
      ___sys_sendmsg+0xa6/0xf0
      __sys_sendmsg+0x69/0xf0
      __x64_sys_sendmsg+0x51/0x70
      do_syscall_64+0x91/0xb47
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
     write to 0xffff8a1b1d8a81c0 of 4 bytes by task 1 on cpu 99:
      __skb_try_recv_from_queue+0x327/0x410 include/linux/skbuff.h:2029
      __skb_try_recv_datagram+0xbe/0x220
      unix_dgram_recvmsg+0xee/0x850
      ____sys_recvmsg+0x1fb/0x210
      ___sys_recvmsg+0xa2/0xf0
      __sys_recvmsg+0x66/0xf0
      __x64_sys_recvmsg+0x51/0x70
      do_syscall_64+0x91/0xb47
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Since only the read is operating as lockless, it could introduce a logic
    bug in unix_recvq_full() due to the load tearing. Fix it by adding
    a lockless variant of skb_queue_len() and unix_recvq_full() where
    READ_ONCE() is on the read while WRITE_ONCE() is on the write similar to
    the commit d7d16a89350a ("net: add skb_queue_empty_lockless()").
    
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 133404eb23c2ab32eca15775066ce4e3b878648f
Author: Mohan Kumar <mkumard@nvidia.com>
Date:   Thu Feb 6 15:40:53 2020 +0530

    ALSA: hda: Clear RIRB status before reading WP
    
    [ Upstream commit 6d011d5057ff88ee556c000ac6fe0be23bdfcd72 ]
    
    RIRB interrupt status getting cleared after the write pointer is read
    causes a race condition, where last response(s) into RIRB may remain
    unserviced by IRQ, eventually causing azx_rirb_get_response to fall
    back to polling mode. Clearing the RIRB interrupt status ahead of
    write pointer access ensures that this condition is avoided.
    
    Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
    Signed-off-by: Viswanath L <viswanathl@nvidia.com>
    Link: https://lore.kernel.org/r/1580983853-351-1-git-send-email-viswanathl@nvidia.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52b3b18dafb9656f08d70134ea8871e653603783
Author: Zhuang Yanying <ann.zhuangyanying@huawei.com>
Date:   Sat Oct 12 11:37:31 2019 +0800

    KVM: fix overflow of zero page refcount with ksm running
    
    [ Upstream commit 7df003c85218b5f5b10a7f6418208f31e813f38f ]
    
    We are testing Virtual Machine with KSM on v5.4-rc2 kernel,
    and found the zero_page refcount overflow.
    The cause of refcount overflow is increased in try_async_pf
    (get_user_page) without being decreased in mmu_set_spte()
    while handling ept violation.
    In kvm_release_pfn_clean(), only unreserved page will call
    put_page. However, zero page is reserved.
    So, as well as creating and destroy vm, the refcount of
    zero page will continue to increase until it overflows.
    
    step1:
    echo 10000 > /sys/kernel/pages_to_scan/pages_to_scan
    echo 1 > /sys/kernel/pages_to_scan/run
    echo 1 > /sys/kernel/pages_to_scan/use_zero_pages
    
    step2:
    just create several normal qemu kvm vms.
    And destroy it after 10s.
    Repeat this action all the time.
    
    After a long period of time, all domains hang because
    of the refcount of zero page overflow.
    
    Qemu print error log as follow:
     …
     error: kvm run failed Bad address
     EAX=00006cdc EBX=00000008 ECX=80202001 EDX=078bfbfd
     ESI=ffffffff EDI=00000000 EBP=00000008 ESP=00006cc4
     EIP=000efd75 EFL=00010002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
     ES =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
     CS =0008 00000000 ffffffff 00c09b00 DPL=0 CS32 [-RA]
     SS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
     DS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
     FS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
     GS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
     LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
     TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
     GDT=     000f7070 00000037
     IDT=     000f70ae 00000000
     CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
     DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
     DR6=00000000ffff0ff0 DR7=0000000000000400
     EFER=0000000000000000
     Code=00 01 00 00 00 e9 e8 00 00 00 c7 05 4c 55 0f 00 01 00 00 00 <8b> 35 00 00 01 00 8b 3d 04 00 01 00 b8 d8 d3 00 00 c1 e0 08 0c ea a3 00 00 01 00 c7 05 04
     …
    
    Meanwhile, a kernel warning is departed.
    
     [40914.836375] WARNING: CPU: 3 PID: 82067 at ./include/linux/mm.h:987 try_get_page+0x1f/0x30
     [40914.836412] CPU: 3 PID: 82067 Comm: CPU 0/KVM Kdump: loaded Tainted: G           OE     5.2.0-rc2 #5
     [40914.836415] RIP: 0010:try_get_page+0x1f/0x30
     [40914.836417] Code: 40 00 c3 0f 1f 84 00 00 00 00 00 48 8b 47 08 a8 01 75 11 8b 47 34 85 c0 7e 10 f0 ff 47 34 b8 01 00 00 00 c3 48 8d 78 ff eb e9 <0f> 0b 31 c0 c3 66 90 66 2e 0f 1f 84 00 0
     0 00 00 00 48 8b 47 08 a8
     [40914.836418] RSP: 0018:ffffb4144e523988 EFLAGS: 00010286
     [40914.836419] RAX: 0000000080000000 RBX: 0000000000000326 RCX: 0000000000000000
     [40914.836420] RDX: 0000000000000000 RSI: 00004ffdeba10000 RDI: ffffdf07093f6440
     [40914.836421] RBP: ffffdf07093f6440 R08: 800000424fd91225 R09: 0000000000000000
     [40914.836421] R10: ffff9eb41bfeebb8 R11: 0000000000000000 R12: ffffdf06bbd1e8a8
     [40914.836422] R13: 0000000000000080 R14: 800000424fd91225 R15: ffffdf07093f6440
     [40914.836423] FS:  00007fb60ffff700(0000) GS:ffff9eb4802c0000(0000) knlGS:0000000000000000
     [40914.836425] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     [40914.836426] CR2: 0000000000000000 CR3: 0000002f220e6002 CR4: 00000000003626e0
     [40914.836427] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     [40914.836427] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     [40914.836428] Call Trace:
     [40914.836433]  follow_page_pte+0x302/0x47b
     [40914.836437]  __get_user_pages+0xf1/0x7d0
     [40914.836441]  ? irq_work_queue+0x9/0x70
     [40914.836443]  get_user_pages_unlocked+0x13f/0x1e0
     [40914.836469]  __gfn_to_pfn_memslot+0x10e/0x400 [kvm]
     [40914.836486]  try_async_pf+0x87/0x240 [kvm]
     [40914.836503]  tdp_page_fault+0x139/0x270 [kvm]
     [40914.836523]  kvm_mmu_page_fault+0x76/0x5e0 [kvm]
     [40914.836588]  vcpu_enter_guest+0xb45/0x1570 [kvm]
     [40914.836632]  kvm_arch_vcpu_ioctl_run+0x35d/0x580 [kvm]
     [40914.836645]  kvm_vcpu_ioctl+0x26e/0x5d0 [kvm]
     [40914.836650]  do_vfs_ioctl+0xa9/0x620
     [40914.836653]  ksys_ioctl+0x60/0x90
     [40914.836654]  __x64_sys_ioctl+0x16/0x20
     [40914.836658]  do_syscall_64+0x5b/0x180
     [40914.836664]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
     [40914.836666] RIP: 0033:0x7fb61cb6bfc7
    
    Signed-off-by: LinFeng <linfeng23@huawei.com>
    Signed-off-by: Zhuang Yanying <ann.zhuangyanying@huawei.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 599387e4bec0367edb8c8b1428064ecdd417a794
Author: Hillf Danton <hdanton@sina.com>
Date:   Wed Feb 5 10:31:59 2020 +0800

    Bluetooth: prefetch channel before killing sock
    
    [ Upstream commit 2a154903cec20fb64ff4d7d617ca53c16f8fd53a ]
    
    Prefetch channel before killing sock in order to fix UAF like
    
     BUG: KASAN: use-after-free in l2cap_sock_release+0x24c/0x290 net/bluetooth/l2cap_sock.c:1212
     Read of size 8 at addr ffff8880944904a0 by task syz-fuzzer/9751
    
    Reported-by: syzbot+c3c5bdea7863886115dc@syzkaller.appspotmail.com
    Fixes: 6c08fc896b60 ("Bluetooth: Fix refcount use-after-free issue")
    Cc: Manish Mandlik <mmandlik@google.com>
    Signed-off-by: Hillf Danton <hdanton@sina.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b72b66fff1e58580c75479955248fefabfbac719
Author: Steven Price <steven.price@arm.com>
Date:   Mon Feb 3 17:35:58 2020 -0800

    mm: pagewalk: fix termination condition in walk_pte_range()
    
    [ Upstream commit c02a98753e0a36ba65a05818626fa6adeb4e7c97 ]
    
    If walk_pte_range() is called with a 'end' argument that is beyond the
    last page of memory (e.g.  ~0UL) then the comparison between 'addr' and
    'end' will always fail and the loop will be infinite.  Instead change the
    comparison to >= while accounting for overflow.
    
    Link: http://lkml.kernel.org/r/20191218162402.45610-15-steven.price@arm.com
    Signed-off-by: Steven Price <steven.price@arm.com>
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: Alexandre Ghiti <alex@ghiti.fr>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: "Liang, Kan" <kan.liang@linux.intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: Vineet Gupta <vgupta@synopsys.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Zong Li <zong.li@sifive.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fdb32d05d20c663bc33002a144787629b788ed82
Author: Manish Mandlik <mmandlik@google.com>
Date:   Tue Jan 28 10:54:14 2020 -0800

    Bluetooth: Fix refcount use-after-free issue
    
    [ Upstream commit 6c08fc896b60893c5d673764b0668015d76df462 ]
    
    There is no lock preventing both l2cap_sock_release() and
    chan->ops->close() from running at the same time.
    
    If we consider Thread A running l2cap_chan_timeout() and Thread B running
    l2cap_sock_release(), expected behavior is:
      A::l2cap_chan_timeout()->l2cap_chan_close()->l2cap_sock_teardown_cb()
      A::l2cap_chan_timeout()->l2cap_sock_close_cb()->l2cap_sock_kill()
      B::l2cap_sock_release()->sock_orphan()
      B::l2cap_sock_release()->l2cap_sock_kill()
    
    where,
    sock_orphan() clears "sk->sk_socket" and l2cap_sock_teardown_cb() marks
    socket as SOCK_ZAPPED.
    
    In l2cap_sock_kill(), there is an "if-statement" that checks if both
    sock_orphan() and sock_teardown() has been run i.e. sk->sk_socket is NULL
    and socket is marked as SOCK_ZAPPED. Socket is killed if the condition is
    satisfied.
    
    In the race condition, following occurs:
      A::l2cap_chan_timeout()->l2cap_chan_close()->l2cap_sock_teardown_cb()
      B::l2cap_sock_release()->sock_orphan()
      B::l2cap_sock_release()->l2cap_sock_kill()
      A::l2cap_chan_timeout()->l2cap_sock_close_cb()->l2cap_sock_kill()
    
    In this scenario, "if-statement" is true in both B::l2cap_sock_kill() and
    A::l2cap_sock_kill() and we hit "refcount: underflow; use-after-free" bug.
    
    Similar condition occurs at other places where teardown/sock_kill is
    happening:
      l2cap_disconnect_rsp()->l2cap_chan_del()->l2cap_sock_teardown_cb()
      l2cap_disconnect_rsp()->l2cap_sock_close_cb()->l2cap_sock_kill()
    
      l2cap_conn_del()->l2cap_chan_del()->l2cap_sock_teardown_cb()
      l2cap_conn_del()->l2cap_sock_close_cb()->l2cap_sock_kill()
    
      l2cap_disconnect_req()->l2cap_chan_del()->l2cap_sock_teardown_cb()
      l2cap_disconnect_req()->l2cap_sock_close_cb()->l2cap_sock_kill()
    
      l2cap_sock_cleanup_listen()->l2cap_chan_close()->l2cap_sock_teardown_cb()
      l2cap_sock_cleanup_listen()->l2cap_sock_kill()
    
    Protect teardown/sock_kill and orphan/sock_kill by adding hold_lock on
    l2cap channel to ensure that the socket is killed only after marked as
    zapped and orphan.
    
    Signed-off-by: Manish Mandlik <mmandlik@google.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit feae5c4d7a7c9a3de5aa77c6e1388590bc59e7da
Author: Doug Smythies <doug.smythies@gmail.com>
Date:   Mon Jan 27 19:59:56 2020 -0800

    tools/power/x86/intel_pstate_tracer: changes for python 3 compatibility
    
    [ Upstream commit e749e09db30c38f1a275945814b0109e530a07b0 ]
    
    Some syntax needs to be more rigorous for python 3.
    Backwards compatibility tested with python 2.7
    
    Signed-off-by: Doug Smythies <dsmythies@telus.net>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 397f6b7373d5b8e1befc94f51dfa28ac740c12ad
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Tue Jan 28 09:30:29 2020 +0100

    selftests/ftrace: fix glob selftest
    
    [ Upstream commit af4ddd607dff7aabd466a4a878e01b9f592a75ab ]
    
    test.d/ftrace/func-filter-glob.tc is failing on s390 because it has
    ARCH_INLINE_SPIN_LOCK and friends set to 'y'. So the usual
    __raw_spin_lock symbol isn't in the ftrace function list. Change
    '*aw*lock' to '*spin*lock' which would hopefully match some of the
    locking functions on all platforms.
    
    Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b4a9510f4a13ca76e672ba1b7a844d1cd9eae759
Author: Mert Dirik <mertdirik@gmail.com>
Date:   Thu Jan 16 14:11:25 2020 +0300

    ar5523: Add USB ID of SMCWUSBT-G2 wireless adapter
    
    [ Upstream commit 5b362498a79631f283578b64bf6f4d15ed4cc19a ]
    
    Add the required USB ID for running SMCWUSBT-G2 wireless adapter (SMC
    "EZ Connect g").
    
    This device uses ar5523 chipset and requires firmware to be loaded. Even
    though pid of the device is 4507, this patch adds it as 4506 so that
    AR5523_DEVICE_UG macro can set the AR5523_FLAG_PRE_FIRMWARE flag for pid
    4507.
    
    Signed-off-by: Mert Dirik <mertdirik@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2e5211162ff9aef24c9568fcc7aafd6e2edd41ec
Author: Josef Bacik <jbacik@fb.com>
Date:   Wed Sep 24 16:14:12 2014 -0400

    tracing: Set kernel_stack's caller size properly
    
    [ Upstream commit cbc3b92ce037f5e7536f6db157d185cd8b8f615c ]
    
    I noticed when trying to use the trace-cmd python interface that reading the raw
    buffer wasn't working for kernel_stack events.  This is because it uses a
    stubbed version of __dynamic_array that doesn't do the __data_loc trick and
    encode the length of the array into the field.  Instead it just shows up as a
    size of 0.  So change this to __array and set the len to FTRACE_STACK_ENTRIES
    since this is what we actually do in practice and matches how user_stack_trace
    works.
    
    Link: http://lkml.kernel.org/r/1411589652-1318-1-git-send-email-jbacik@fb.com
    
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    [ Pulled from the archeological digging of my INBOX ]
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 98ee679c3ad14cfd73cdaafd006e025714577559
Author: Oliver O'Halloran <oohall@gmail.com>
Date:   Wed Oct 16 12:25:36 2019 +1100

    powerpc/eeh: Only dump stack once if an MMIO loop is detected
    
    [ Upstream commit 4e0942c0302b5ad76b228b1a7b8c09f658a1d58a ]
    
    Many drivers don't check for errors when they get a 0xFFs response from an
    MMIO load. As a result after an EEH event occurs a driver can get stuck in
    a polling loop unless it some kind of internal timeout logic.
    
    Currently EEH tries to detect and report stuck drivers by dumping a stack
    trace after eeh_dev_check_failure() is called EEH_MAX_FAILS times on an
    already frozen PE. The value of EEH_MAX_FAILS was chosen so that a dump
    would occur every few seconds if the driver was spinning in a loop. This
    results in a lot of spurious stack traces in the kernel log.
    
    Fix this by limiting it to printing one stack trace for each PE freeze. If
    the driver is truely stuck the kernel's hung task detector is better suited
    to reporting the probelm anyway.
    
    Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
    Reviewed-by: Sam Bobroff <sbobroff@linux.ibm.com>
    Tested-by: Sam Bobroff <sbobroff@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191016012536.22588-1-oohall@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0ccf7b9c6852279ef1fccf5315e605775e90c257
Author: Matthias Fend <matthias.fend@wolfvision.net>
Date:   Wed Jan 15 11:22:49 2020 +0100

    dmaengine: zynqmp_dma: fix burst length configuration
    
    [ Upstream commit cc88525ebffc757e00cc5a5d61da6271646c7f5f ]
    
    Since the dma engine expects the burst length register content as
    power of 2 value, the burst length needs to be converted first.
    Additionally add a burst length range check to avoid corrupting unrelated
    register bits.
    
    Signed-off-by: Matthias Fend <matthias.fend@wolfvision.net>
    Link: https://lore.kernel.org/r/20200115102249.24398-1-matthias.fend@wolfvision.net
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a43d6b3cbd947c8e7aec84bc5c61fee4b286d89d
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Dec 27 11:04:21 2019 +0100

    ACPI: EC: Reference count query handlers under lock
    
    [ Upstream commit 3df663a147fe077a6ee8444ec626738946e65547 ]
    
    There is a race condition in acpi_ec_get_query_handler()
    theoretically allowing query handlers to go away before refernce
    counting them.
    
    In order to avoid it, call kref_get() on query handlers under
    ec->mutex.
    
    Also simplify the code a bit while at it.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eadae0e95ab651f3a3a600ded7baff7bdb80c2f9
Author: Nikhil Devshatwar <nikhil.nd@ti.com>
Date:   Tue Nov 12 15:53:33 2019 +0100

    media: ti-vpe: cal: Restrict DMA to avoid memory corruption
    
    [ Upstream commit 6e72eab2e7b7a157d554b8f9faed7676047be7c1 ]
    
    When setting DMA for video capture from CSI channel, if the DMA size
    is not given, it ends up writing as much data as sent by the camera.
    
    This may lead to overwriting the buffers causing memory corruption.
    Observed green lines on the default framebuffer.
    
    Restrict the DMA to maximum height as specified in the S_FMT ioctl.
    
    Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
    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: Sasha Levin <sashal@kernel.org>

commit 1ed171e07df112f04f33de8b0d13362d395f7ab6
Author: Marco Elver <elver@google.com>
Date:   Thu Nov 14 19:03:00 2019 +0100

    seqlock: Require WRITE_ONCE surrounding raw_seqcount_barrier
    
    [ Upstream commit bf07132f96d426bcbf2098227fb680915cf44498 ]
    
    This patch proposes to require marked atomic accesses surrounding
    raw_write_seqcount_barrier. We reason that otherwise there is no way to
    guarantee propagation nor atomicity of writes before/after the barrier
    [1]. For example, consider the compiler tears stores either before or
    after the barrier; in this case, readers may observe a partial value,
    and because readers are unaware that writes are going on (writes are not
    in a seq-writer critical section), will complete the seq-reader critical
    section while having observed some partial state.
    [1] https://lwn.net/Articles/793253/
    
    This came up when designing and implementing KCSAN, because KCSAN would
    flag these accesses as data-races. After careful analysis, our reasoning
    as above led us to conclude that the best thing to do is to propose an
    amendment to the raw_seqcount_barrier usage.
    
    Signed-off-by: Marco Elver <elver@google.com>
    Acked-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d280324e83d831785ad99be20fd9a08588b3d512
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Thu Jan 23 10:11:35 2020 +0300

    rt_cpu_seq_next should increase position index
    
    [ Upstream commit a3ea86739f1bc7e121d921842f0f4a8ab1af94d9 ]
    
    if seq_file .next fuction does not change position index,
    read after some lseek can generate unexpected output.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c66173df61ce44aaa52e916e6f7d2f84b0f9c931
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Thu Jan 23 10:11:28 2020 +0300

    neigh_stat_seq_next() should increase position index
    
    [ Upstream commit 1e3f9f073c47bee7c23e77316b07bc12338c5bba ]
    
    if seq_file .next fuction does not change position index,
    read after some lseek can generate unexpected output.
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206283
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62fd2fcca39bbee2c75738f26df33d9e24d85188
Author: Joe Perches <joe@perches.com>
Date:   Wed Dec 4 16:50:53 2019 -0800

    kernel/sys.c: avoid copying possible padding bytes in copy_to_user
    
    [ Upstream commit 5e1aada08cd19ea652b2d32a250501d09b02ff2e ]
    
    Initialization is not guaranteed to zero padding bytes so use an
    explicit memset instead to avoid leaking any kernel content in any
    possible padding bytes.
    
    Link: http://lkml.kernel.org/r/dfa331c00881d61c8ee51577a082d8bebd61805c.camel@perches.com
    Signed-off-by: Joe Perches <joe@perches.com>
    Cc: Dan Carpenter <error27@gmail.com>
    Cc: Julia Lawall <julia.lawall@lip6.fr>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Kees Cook <keescook@chromium.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9e9210e578ad74c5d394ba060d5cd9ebd421f9d5
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Tue Oct 29 16:51:19 2019 -0700

    CIFS: Properly process SMB3 lease breaks
    
    [ Upstream commit 9bd4540836684013aaad6070a65d6fcdd9006625 ]
    
    Currenly we doesn't assume that a server may break a lease
    from RWH to RW which causes us setting a wrong lease state
    on a file and thus mistakenly flushing data and byte-range
    locks and purging cached data on the client. This leads to
    performance degradation because subsequent IOs go directly
    to the server.
    
    Fix this by propagating new lease state and epoch values
    to the oplock break handler through cifsFileInfo structure
    and removing the use of cifsInodeInfo flags for that. It
    allows to avoid some races of several lease/oplock breaks
    using those flags in parallel.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5656db5e0561b79e5f7a5d1ff3e23bc2f97c8771
Author: Kusanagi Kouichi <slash@ac.auone-net.jp>
Date:   Thu Nov 21 19:20:21 2019 +0900

    debugfs: Fix !DEBUG_FS debugfs_create_automount
    
    [ Upstream commit 4250b047039d324e0ff65267c8beb5bad5052a86 ]
    
    If DEBUG_FS=n, compile fails with the following error:
    
    kernel/trace/trace.c: In function 'tracing_init_dentry':
    kernel/trace/trace.c:8658:9: error: passing argument 3 of 'debugfs_create_automount' from incompatible pointer type [-Werror=incompatible-pointer-types]
     8658 |         trace_automount, NULL);
          |         ^~~~~~~~~~~~~~~
          |         |
          |         struct vfsmount * (*)(struct dentry *, void *)
    In file included from kernel/trace/trace.c:24:
    ./include/linux/debugfs.h:206:25: note: expected 'struct vfsmount * (*)(void *)' but argument is of type 'struct vfsmount * (*)(struct dentry *, void *)'
      206 |      struct vfsmount *(*f)(void *),
          |      ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
    
    Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp>
    Link: https://lore.kernel.org/r/20191121102021787.MLMY.25002.ppp.dion.ne.jp@dmta0003.auone-net.jp
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13c66d2d2bf49422217b39561827e484344fc8fe
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Tue Nov 19 11:40:46 2019 -0500

    gfs2: clean up iopen glock mess in gfs2_create_inode
    
    [ Upstream commit 2c47c1be51fbded1f7baa2ceaed90f97932f79be ]
    
    Before this patch, gfs2_create_inode had a use-after-free for the
    iopen glock in some error paths because it did this:
    
            gfs2_glock_put(io_gl);
    fail_gunlock2:
            if (io_gl)
                    clear_bit(GLF_INODE_CREATING, &io_gl->gl_flags);
    
    In some cases, the io_gl was used for create and only had one
    reference, so the glock might be freed before the clear_bit().
    This patch tries to straighten it out by only jumping to the
    error paths where iopen is properly set, and moving the
    gfs2_glock_put after the clear_bit.
    
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 87d2800e493f9b91857e078041ecc058bff9f3ef
Author: Bradley Bolen <bradleybolen@gmail.com>
Date:   Sat Nov 16 20:00:45 2019 -0500

    mmc: core: Fix size overflow for mmc partitions
    
    [ Upstream commit f3d7c2292d104519195fdb11192daec13229c219 ]
    
    With large eMMC cards, it is possible to create general purpose
    partitions that are bigger than 4GB.  The size member of the mmc_part
    struct is only an unsigned int which overflows for gp partitions larger
    than 4GB.  Change this to a u64 to handle the overflow.
    
    Signed-off-by: Bradley Bolen <bradleybolen@gmail.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit be2b56a7f6df0fa3a10ecc0a6f92aff0f8e982ce
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Mon Sep 23 21:07:46 2019 +0200

    RDMA/iw_cgxb4: Fix an error handling path in 'c4iw_connect()'
    
    [ Upstream commit 9067f2f0b41d7e817fc8c5259bab1f17512b0147 ]
    
    We should jump to fail3 in order to undo the 'xa_insert_irq()' call.
    
    Link: https://lore.kernel.org/r/20190923190746.10964-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 879427c02d4cf9df0c63dc28a8e01d38986ecad3
Author: Brian Foster <bfoster@redhat.com>
Date:   Fri Nov 15 21:15:08 2019 -0800

    xfs: fix attr leaf header freemap.size underflow
    
    [ Upstream commit 2a2b5932db67586bacc560cc065d62faece5b996 ]
    
    The leaf format xattr addition helper xfs_attr3_leaf_add_work()
    adjusts the block freemap in a couple places. The first update drops
    the size of the freemap that the caller had already selected to
    place the xattr name/value data. Before the function returns, it
    also checks whether the entries array has encroached on a freemap
    range by virtue of the new entry addition. This is necessary because
    the entries array grows from the start of the block (but end of the
    block header) towards the end of the block while the name/value data
    grows from the end of the block in the opposite direction. If the
    associated freemap is already empty, however, size is zero and the
    subtraction underflows the field and causes corruption.
    
    This is reproduced rarely by generic/070. The observed behavior is
    that a smaller sized freemap is aligned to the end of the entries
    list, several subsequent xattr additions land in larger freemaps and
    the entries list expands into the smaller freemap until it is fully
    consumed and then underflows. Note that it is not otherwise a
    corruption for the entries array to consume an empty freemap because
    the nameval list (i.e. the firstused pointer in the xattr header)
    starts beyond the end of the corrupted freemap.
    
    Update the freemap size modification to account for the fact that
    the freemap entry can be empty and thus stale.
    
    Signed-off-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 11ce66d66783ad0ac57f12521602bf5622d359d3
Author: Pan Bian <bianpan2016@163.com>
Date:   Wed Nov 6 14:44:11 2019 +0800

    RDMA/i40iw: Fix potential use after free
    
    [ Upstream commit da046d5f895fca18d63b15ac8faebd5bf784e23a ]
    
    Release variable dst after logging dst->error to avoid possible use after
    free.
    
    Link: https://lore.kernel.org/r/1573022651-37171-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4de642e680b16aeb8820c2587cc7afa29cd33c04
Author: Guoju Fang <fangguoju@gmail.com>
Date:   Wed Nov 13 16:03:16 2019 +0800

    bcache: fix a lost wake-up problem caused by mca_cannibalize_lock
    
    [ Upstream commit 34cf78bf34d48dddddfeeadb44f9841d7864997a ]
    
    This patch fix a lost wake-up problem caused by the race between
    mca_cannibalize_lock and bch_cannibalize_unlock.
    
    Consider two processes, A and B. Process A is executing
    mca_cannibalize_lock, while process B takes c->btree_cache_alloc_lock
    and is executing bch_cannibalize_unlock. The problem happens that after
    process A executes cmpxchg and will execute prepare_to_wait. In this
    timeslice process B executes wake_up, but after that process A executes
    prepare_to_wait and set the state to TASK_INTERRUPTIBLE. Then process A
    goes to sleep but no one will wake up it. This problem may cause bcache
    device to dead.
    
    Signed-off-by: Guoju Fang <fangguoju@gmail.com>
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 83663241f21a59875019bee1540367605f349736
Author: Divya Indi <divya.indi@oracle.com>
Date:   Wed Aug 14 10:55:25 2019 -0700

    tracing: Adding NULL checks for trace_array descriptor pointer
    
    [ Upstream commit 953ae45a0c25e09428d4a03d7654f97ab8a36647 ]
    
    As part of commit f45d1225adb0 ("tracing: Kernel access to Ftrace
    instances") we exported certain functions. Here, we are adding some additional
    NULL checks to ensure safe usage by users of these APIs.
    
    Link: http://lkml.kernel.org/r/1565805327-579-4-git-send-email-divya.indi@oracle.com
    
    Signed-off-by: Divya Indi <divya.indi@oracle.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9060640a4457caed4c45529b82da88211f82748f
Author: Lee Jones <lee.jones@linaro.org>
Date:   Mon Oct 21 10:16:34 2019 +0100

    mfd: mfd-core: Protect against NULL call-back function pointer
    
    [ Upstream commit b195e101580db390f50b0d587b7f66f241d2bc88 ]
    
    If a child device calls mfd_cell_{en,dis}able() without an appropriate
    call-back being set, we are likely to encounter a panic.  Avoid this
    by adding suitable checking.
    
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
    Reviewed-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a3faa9b264ee87a4c6830f494638a5d0be565c6c
Author: Hou Tao <houtao1@huawei.com>
Date:   Tue Oct 8 10:36:37 2019 +0800

    mtd: cfi_cmdset_0002: don't free cfi->cfiq in error path of cfi_amdstd_setup()
    
    [ Upstream commit 03976af89e3bd9489d542582a325892e6a8cacc0 ]
    
    Else there may be a double-free problem, because cfi->cfiq will
    be freed by mtd_do_chip_probe() if both the two invocations of
    check_cmd_set() return failure.
    
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Reviewed-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ea69d11ec0af940b76c69eb14cff53a5f1d4166
Author: Stephen Kitt <steve@sk2.org>
Date:   Sat Oct 19 16:06:34 2019 +0200

    clk/ti/adpll: allocate room for terminating null
    
    [ Upstream commit 7f6ac72946b88b89ee44c1c527aa8591ac5ffcbe ]
    
    The buffer allocated in ti_adpll_clk_get_name doesn't account for the
    terminating null. This patch switches to devm_kasprintf to avoid
    overflowing.
    
    Signed-off-by: Stephen Kitt <steve@sk2.org>
    Link: https://lkml.kernel.org/r/20191019140634.15596-1-steve@sk2.org
    Acked-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e12910cd450438fe90ae239e33556262bae6e953
Author: Pan Bian <bianpan2016@163.com>
Date:   Mon Nov 4 23:26:22 2019 +0800

    scsi: fnic: fix use after free
    
    [ Upstream commit ec990306f77fd4c58c3b27cc3b3c53032d6e6670 ]
    
    The memory chunk io_req is released by mempool_free. Accessing
    io_req->start_time will result in a use after free bug. The variable
    start_time is a backup of the timestamp. So, use start_time here to
    avoid use after free.
    
    Link: https://lore.kernel.org/r/1572881182-37664-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Satish Kharat <satishkh@cisco.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 54a77a9ceaa4e0c245013560cca97d4afb556f17
Author: Dmitry Osipenko <digetx@gmail.com>
Date:   Tue Nov 5 00:56:03 2019 +0300

    PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out
    
    [ Upstream commit 53b4b2aeee26f42cde5ff2a16dd0d8590c51a55a ]
    
    There is another kHz-conversion bug in the code, resulting in integer
    overflow. Although, this time the resulting value is 4294966296 and it's
    close to ULONG_MAX, which is okay in this case.
    
    Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
    Tested-by: Peter Geis <pgwipeout@gmail.com>
    Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3147d4974cf7229cfc36835ba0bf4da6f216987
Author: Hui Wang <hui.wang@canonical.com>
Date:   Mon Sep 14 14:51:18 2020 +0800

    ALSA: hda/realtek - Couldn't detect Mic if booting with headset plugged
    
    commit 3f74249057827c5f6676c41c18f6be12ce1469ce upstream.
    
    We found a Mic detection issue on many Lenovo laptops, those laptops
    belong to differnt models and they have different audio design like
    internal mic connects to the codec or PCH, they all have this problem,
    the problem is if plugging a headset before powerup/reboot the
    machine, after booting up, the headphone could be detected but Mic
    couldn't. If we plug out and plug in the headset, both headphone and
    Mic could be detected then.
    
    Through debugging we found the codec on those laptops are same, it is
    alc257, and if we don't disable the 3k pulldown in alc256_shutup(),
    the issue will be fixed. So far there is no pop noise or power
    consumption regression on those laptops after this change.
    
    Cc: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Link: https://lore.kernel.org/r/20200914065118.19238-1-hui.wang@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f56f217db809a301a5084bfcdb0732609c49979
Author: Joakim Tjernlund <joakim.tjernlund@infinera.com>
Date:   Thu Sep 10 10:53:28 2020 +0200

    ALSA: usb-audio: Add delay quirk for H570e USB headsets
    
    commit 315c7ad7a701baba28c628c4c5426b3d9617ceed upstream.
    
    Needs the same delay as H650e
    
    Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200910085328.19188-1-joakim.tjernlund@infinera.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56f23b5f955be2ac7a79c1b9b77c48efac4e1a9d
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Sep 23 17:46:20 2020 +0200

    x86/ioapic: Unbreak check_timer()
    
    commit 86a82ae0b5095ea24c55898a3f025791e7958b21 upstream.
    
    Several people reported in the kernel bugzilla that between v4.12 and v4.13
    the magic which works around broken hardware and BIOSes to find the proper
    timer interrupt delivery mode stopped working for some older affected
    platforms which need to fall back to ExtINT delivery mode.
    
    The reason is that the core code changed to keep track of the masked and
    disabled state of an interrupt line more accurately to avoid the expensive
    hardware operations.
    
    That broke an assumption in i8259_make_irq() which invokes
    
         disable_irq_nosync();
         irq_set_chip_and_handler();
         enable_irq();
    
    Up to v4.12 this worked because enable_irq() unconditionally unmasked the
    interrupt line, but after the state tracking improvements this is not
    longer the case because the IO/APIC uses lazy disabling. So the line state
    is unmasked which means that enable_irq() does not call into the new irq
    chip to unmask it.
    
    In principle this is a shortcoming of the core code, but it's more than
    unclear whether the core code should try to reset state. At least this
    cannot be done unconditionally as that would break other existing use cases
    where the chip type is changed, e.g. when changing the trigger type, but
    the callers expect the state to be preserved.
    
    As the way how check_timer() is switching the delivery modes is truly
    unique, the obvious fix is to simply unmask the i8259 manually after
    changing the mode to ExtINT delivery and switching the irq chip to the
    legacy PIC.
    
    Note, that the fixes tag is not really precise, but identifies the commit
    which broke the assumptions in the IO/APIC and i8259 code and that's the
    kernel version to which this needs to be backported.
    
    Fixes: bf22ff45bed6 ("genirq: Avoid unnecessary low level irq function calls")
    Reported-by: p_c_chan@hotmail.com
    Reported-by: ecm4@mail.com
    Reported-by: perdigao1@yahoo.com
    Reported-by: matzes@users.sourceforge.net
    Reported-by: rvelascog@gmail.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: p_c_chan@hotmail.com
    Tested-by: matzes@users.sourceforge.net
    Cc: stable@vger.kernel.org
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=197769
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b015c89e2122295f2abe832782ad759c86c6cded
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Fri Sep 25 21:19:24 2020 -0700

    arch/x86/lib/usercopy_64.c: fix __copy_user_flushcache() cache writeback
    
    commit a1cd6c2ae47ee10ff21e62475685d5b399e2ed4a upstream.
    
    If we copy less than 8 bytes and if the destination crosses a cache
    line, __copy_user_flushcache would invalidate only the first cache line.
    
    This patch makes it invalidate the second cache line as well.
    
    Fixes: 0aed55af88345b ("x86, uaccess: introduce copy_from_iter_flushcache for pmem / cache-bypass operations")
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Dan Williams <dan.j.wiilliams@intel.com>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Jeff Moyer <jmoyer@redhat.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Toshi Kani <toshi.kani@hpe.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Matthew Wilcox <mawilcox@microsoft.com>
    Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/alpine.LRH.2.02.2009161451140.21915@file01.intranet.prod.int.rdu2.redhat.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92b26fd21a70d69fe622854ab1cf913c101d8710
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Mon Sep 23 11:25:42 2019 -0300

    media: smiapp: Fix error handling at NVM reading
    
    [ Upstream commit a5b1d5413534607b05fb34470ff62bf395f5c8d0 ]
    
    If NVM reading failed, the device was left powered on. Fix that.
    
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2cd232427c88a5ff0516988e1522ba77f0e91ddf
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Wed Oct 23 16:46:59 2019 +0100

    ASoC: kirkwood: fix IRQ error handling
    
    [ Upstream commit 175fc928198236037174e5c5c066fe3c4691903e ]
    
    Propagate the error code from request_irq(), rather than returning
    -EBUSY.
    
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/E1iNIqh-0000tW-EZ@rmk-PC.armlinux.org.uk
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6032b6e31b7e40820f11221166540d48f72e1324
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Thu Oct 17 23:29:53 2019 -0500

    gma/gma500: fix a memory disclosure bug due to uninitialized bytes
    
    [ Upstream commit 57a25a5f754ce27da2cfa6f413cfd366f878db76 ]
    
    `best_clock` is an object that may be sent out. Object `clock`
    contains uninitialized bytes that are copied to `best_clock`,
    which leads to memory disclosure and information leak.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191018042953.31099-1-kjlu@umn.edu
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d66da05c7bd4942b6522a2c106df3c5e04e762d7
Author: Fuqian Huang <huangfq.daxian@gmail.com>
Date:   Fri Sep 27 20:15:44 2019 +0800

    m68k: q40: Fix info-leak in rtc_ioctl
    
    [ Upstream commit 7cf78b6b12fd5550545e4b73b35dca18bd46b44c ]
    
    When the option is RTC_PLL_GET, pll will be copied to userland
    via copy_to_user. pll is initialized using mach_get_rtc_pll indirect
    call and mach_get_rtc_pll is only assigned with function
    q40_get_rtc_pll in arch/m68k/q40/config.c.
    In function q40_get_rtc_pll, the field pll_ctrl is not initialized.
    This will leak uninitialized stack content to userland.
    Fix this by zeroing the uninitialized field.
    
    Signed-off-by: Fuqian Huang <huangfq.daxian@gmail.com>
    Link: https://lore.kernel.org/r/20190927121544.7650-1-huangfq.daxian@gmail.com
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 911559bef8489996fb3361705236d14ed611d064
Author: Balsundar P <balsundar.p@microsemi.com>
Date:   Tue Oct 15 11:51:58 2019 +0530

    scsi: aacraid: fix illegal IO beyond last LBA
    
    [ Upstream commit c86fbe484c10b2cd1e770770db2d6b2c88801c1d ]
    
    The driver fails to handle data when read or written beyond device reported
    LBA, which triggers kernel panic
    
    Link: https://lore.kernel.org/r/1571120524-6037-2-git-send-email-balsundar.p@microsemi.com
    Signed-off-by: Balsundar P <balsundar.p@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90fad04bd42104bf7a0a23b52c883d8f4e4174c0
Author: Jia He <justin.he@arm.com>
Date:   Fri Oct 11 22:09:39 2019 +0800

    mm: fix double page fault on arm64 if PTE_AF is cleared
    
    [ Upstream commit 83d116c53058d505ddef051e90ab27f57015b025 ]
    
    When we tested pmdk unit test [1] vmmalloc_fork TEST3 on arm64 guest, there
    will be a double page fault in __copy_from_user_inatomic of cow_user_page.
    
    To reproduce the bug, the cmd is as follows after you deployed everything:
    make -C src/test/vmmalloc_fork/ TEST_TIME=60m check
    
    Below call trace is from arm64 do_page_fault for debugging purpose:
    [  110.016195] Call trace:
    [  110.016826]  do_page_fault+0x5a4/0x690
    [  110.017812]  do_mem_abort+0x50/0xb0
    [  110.018726]  el1_da+0x20/0xc4
    [  110.019492]  __arch_copy_from_user+0x180/0x280
    [  110.020646]  do_wp_page+0xb0/0x860
    [  110.021517]  __handle_mm_fault+0x994/0x1338
    [  110.022606]  handle_mm_fault+0xe8/0x180
    [  110.023584]  do_page_fault+0x240/0x690
    [  110.024535]  do_mem_abort+0x50/0xb0
    [  110.025423]  el0_da+0x20/0x24
    
    The pte info before __copy_from_user_inatomic is (PTE_AF is cleared):
    [ffff9b007000] pgd=000000023d4f8003, pud=000000023da9b003,
                   pmd=000000023d4b3003, pte=360000298607bd3
    
    As told by Catalin: "On arm64 without hardware Access Flag, copying from
    user will fail because the pte is old and cannot be marked young. So we
    always end up with zeroed page after fork() + CoW for pfn mappings. we
    don't always have a hardware-managed access flag on arm64."
    
    This patch fixes it by calling pte_mkyoung. Also, the parameter is
    changed because vmf should be passed to cow_user_page()
    
    Add a WARN_ON_ONCE when __copy_from_user_inatomic() returns error
    in case there can be some obscure use-case (by Kirill).
    
    [1] https://github.com/pmem/pmdk/tree/master/src/test/vmmalloc_fork
    
    Signed-off-by: Jia He <justin.he@arm.com>
    Reported-by: Yibo Cai <Yibo.Cai@arm.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a351bdff6dbf5fc4e4306cda5e36c187f5682538
Author: Lukas Wunner <lukas@wunner.de>
Date:   Tue May 12 14:40:01 2020 +0200

    serial: 8250: Avoid error message on reprobe
    
    commit e0a851fe6b9b619527bd928aa93caaddd003f70c upstream.
    
    If the call to uart_add_one_port() in serial8250_register_8250_port()
    fails, a half-initialized entry in the serial_8250ports[] array is left
    behind.
    
    A subsequent reprobe of the same serial port causes that entry to be
    reused.  Because uart->port.dev is set, uart_remove_one_port() is called
    for the half-initialized entry and bails out with an error message:
    
    bcm2835-aux-uart 3f215040.serial: Removing wrong port: (null) != (ptrval)
    
    The same happens on failure of mctrl_gpio_init() since commit
    4a96895f74c9 ("tty/serial/8250: use mctrl_gpio helpers").
    
    Fix by zeroing the uart->port.dev pointer in the probe error path.
    
    The bug was introduced in v2.6.10 by historical commit befff6f5bf5f
    ("[SERIAL] Add new port registration/unregistration functions."):
    https://git.kernel.org/tglx/history/c/befff6f5bf5f
    
    The commit added an unconditional call to uart_remove_one_port() in
    serial8250_register_port().  In v3.7, commit 835d844d1a28 ("8250_pnp:
    do pnp probe before legacy probe") made that call conditional on
    uart->port.dev which allows me to fix the issue by zeroing that pointer
    in the error path.  Thus, the present commit will fix the problem as far
    back as v3.7 whereas still older versions need to also cherry-pick
    835d844d1a28.
    
    Fixes: 835d844d1a28 ("8250_pnp: do pnp probe before legacy probe")
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: stable@vger.kernel.org # v2.6.10
    Cc: stable@vger.kernel.org # v2.6.10: 835d844d1a28: 8250_pnp: do pnp probe before legacy
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/b4a072013ee1a1d13ee06b4325afb19bda57ca1b.1589285873.git.lukas@wunner.de
    [iwamatsu: Backported to 4.14, 4.19: adjust context]
    Signed-off-by: Nobuhiro Iwamatsu (CIP) <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 494648fc5286830b149bc1c1a059a827a45df3c8
Author: Mark Gray <mark.d.gray@redhat.com>
Date:   Wed Sep 16 05:19:35 2020 -0400

    geneve: add transport ports in route lookup for geneve
    
    [ Upstream commit 34beb21594519ce64a55a498c2fe7d567bc1ca20 ]
    
    This patch adds transport ports information for route lookup so that
    IPsec can select Geneve tunnel traffic to do encryption. This is
    needed for OVS/OVN IPsec with encrypted Geneve tunnels.
    
    This can be tested by configuring a host-host VPN using an IKE
    daemon and specifying port numbers. For example, for an
    Openswan-type configuration, the following parameters should be
    configured on both hosts and IPsec set up as-per normal:
    
    $ cat /etc/ipsec.conf
    
    conn in
    ...
    left=$IP1
    right=$IP2
    ...
    leftprotoport=udp/6081
    rightprotoport=udp
    ...
    conn out
    ...
    left=$IP1
    right=$IP2
    ...
    leftprotoport=udp
    rightprotoport=udp/6081
    ...
    
    The tunnel can then be setup using "ip" on both hosts (but
    changing the relevant IP addresses):
    
    $ ip link add tun type geneve id 1000 remote $IP2
    $ ip addr add 192.168.0.1/24 dev tun
    $ ip link set tun up
    
    This can then be tested by pinging from $IP1:
    
    $ ping 192.168.0.2
    
    Without this patch the traffic is unencrypted on the wire.
    
    Fixes: 2d07dc79fe04 ("geneve: add initial netdev driver for GENEVE tunnels")
    Signed-off-by: Qiuyu Xiao <qiuyu.xiao.qyx@gmail.com>
    Signed-off-by: Mark Gray <mark.d.gray@redhat.com>
    Reviewed-by: Greg Rose <gvrose8192@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f415c264176e6095e9dee823e09c5bdd0ee0d337
Author: David Ahern <dsahern@kernel.org>
Date:   Mon Sep 14 21:03:54 2020 -0600

    ipv4: Update exception handling for multipath routes via same device
    
    [ Upstream commit 2fbc6e89b2f1403189e624cabaf73e189c5e50c6 ]
    
    Kfir reported that pmtu exceptions are not created properly for
    deployments where multipath routes use the same device.
    
    After some digging I see 2 compounding problems:
    1. ip_route_output_key_hash_rcu is updating the flowi4_oif *after*
       the route lookup. This is the second use case where this has
       been a problem (the first is related to use of vti devices with
       VRF). I can not find any reason for the oif to be changed after the
       lookup; the code goes back to the start of git. It does not seem
       logical so remove it.
    
    2. fib_lookups for exceptions do not call fib_select_path to handle
       multipath route selection based on the hash.
    
    The end result is that the fib_lookup used to add the exception
    always creates it based using the first leg of the route.
    
    An example topology showing the problem:
    
                     |  host1
                 +------+
                 | eth0 |  .209
                 +------+
                     |
                 +------+
         switch  | br0  |
                 +------+
                     |
           +---------+---------+
           | host2             |  host3
       +------+             +------+
       | eth0 | .250        | eth0 | 192.168.252.252
       +------+             +------+
    
       +-----+             +-----+
       | vti | .2          | vti | 192.168.247.3
       +-----+             +-----+
           \                  /
     =================================
     tunnels
             192.168.247.1/24
    
    for h in host1 host2 host3; do
            ip netns add ${h}
            ip -netns ${h} link set lo up
            ip netns exec ${h} sysctl -wq net.ipv4.ip_forward=1
    done
    
    ip netns add switch
    ip -netns switch li set lo up
    ip -netns switch link add br0 type bridge stp 0
    ip -netns switch link set br0 up
    
    for n in 1 2 3; do
            ip -netns switch link add eth-sw type veth peer name eth-h${n}
            ip -netns switch li set eth-h${n} master br0 up
            ip -netns switch li set eth-sw netns host${n} name eth0
    done
    
    ip -netns host1 addr add 192.168.252.209/24 dev eth0
    ip -netns host1 link set dev eth0 up
    ip -netns host1 route add 192.168.247.0/24 \
            nexthop via 192.168.252.250 dev eth0 nexthop via 192.168.252.252 dev eth0
    
    ip -netns host2 addr add 192.168.252.250/24 dev eth0
    ip -netns host2 link set dev eth0 up
    
    ip -netns host2 addr add 192.168.252.252/24 dev eth0
    ip -netns host3 link set dev eth0 up
    
    ip netns add tunnel
    ip -netns tunnel li set lo up
    ip -netns tunnel li add br0 type bridge
    ip -netns tunnel li set br0 up
    for n in $(seq 11 20); do
            ip -netns tunnel addr add dev br0 192.168.247.${n}/24
    done
    
    for n in 2 3
    do
            ip -netns tunnel link add vti${n} type veth peer name eth${n}
            ip -netns tunnel link set eth${n} mtu 1360 master br0 up
            ip -netns tunnel link set vti${n} netns host${n} mtu 1360 up
            ip -netns host${n} addr add dev vti${n} 192.168.247.${n}/24
    done
    ip -netns tunnel ro add default nexthop via 192.168.247.2 nexthop via 192.168.247.3
    
    ip netns exec host1 ping -M do -s 1400 -c3 -I 192.168.252.209 192.168.247.11
    ip netns exec host1 ping -M do -s 1400 -c3 -I 192.168.252.209 192.168.247.15
    ip -netns host1 ro ls cache
    
    Before this patch the cache always shows exceptions against the first
    leg in the multipath route; 192.168.252.250 per this example. Since the
    hash has an initial random seed, you may need to vary the final octet
    more than what is listed. In my tests, using addresses between 11 and 19
    usually found 1 that used both legs.
    
    With this patch, the cache will have exceptions for both legs.
    
    Fixes: 4895c771c7f0 ("ipv4: Add FIB nexthop exceptions")
    Reported-by: Kfir Itzhak <mastertheknife@gmail.com>
    Signed-off-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81a38306341c6d0518576fa686ef4e60b7e6065b
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Sep 9 01:27:40 2020 -0700

    net: add __must_check to skb_put_padto()
    
    [ Upstream commit 4a009cb04aeca0de60b73f37b102573354214b52 ]
    
    skb_put_padto() and __skb_put_padto() callers
    must check return values or risk use-after-free.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65325a90d601c630953f866fd3d23d8759276f32
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Sep 16 20:43:09 2020 -0700

    net: phy: Avoid NPD upon phy_detach() when driver is unbound
    
    [ Upstream commit c2b727df7caa33876e7066bde090f40001b6d643 ]
    
    If we have unbound the PHY driver prior to calling phy_detach() (often
    via phy_disconnect()) then we can cause a NULL pointer de-reference
    accessing the driver owner member. The steps to reproduce are:
    
    echo unimac-mdio-0:01 > /sys/class/net/eth0/phydev/driver/unbind
    ip link set eth0 down
    
    Fixes: cafe8df8b9bc ("net: phy: Fix lack of reference count on PHY driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c796d007533ee918b7114c46381366de23a567e7
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Sun Sep 20 21:08:56 2020 -0400

    bnxt_en: Protect bnxt_set_eee() and bnxt_set_pauseparam() with mutex.
    
    [ Upstream commit a53906908148d64423398a62c4435efb0d09652c ]
    
    All changes related to bp->link_info require the protection of the
    link_lock mutex.  It's not sufficient to rely just on RTNL.
    
    Fixes: 163e9ef63641 ("bnxt_en: Fix race when modifying pause settings.")
    Reviewed-by: Edwin Peer <edwin.peer@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40dbfc0be25f6ca92dcfe930c5349fab9d418a00
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Sep 13 19:37:31 2020 +0800

    tipc: use skb_unshare() instead in tipc_buf_append()
    
    [ Upstream commit ff48b6222e65ebdba5a403ef1deba6214e749193 ]
    
    In tipc_buf_append() it may change skb's frag_list, and it causes
    problems when this skb is cloned. skb_unclone() doesn't really
    make this skb's flag_list available to change.
    
    Shuang Li has reported an use-after-free issue because of this
    when creating quite a few macvlan dev over the same dev, where
    the broadcast packets will be cloned and go up to the stack:
    
     [ ] BUG: KASAN: use-after-free in pskb_expand_head+0x86d/0xea0
     [ ] Call Trace:
     [ ]  dump_stack+0x7c/0xb0
     [ ]  print_address_description.constprop.7+0x1a/0x220
     [ ]  kasan_report.cold.10+0x37/0x7c
     [ ]  check_memory_region+0x183/0x1e0
     [ ]  pskb_expand_head+0x86d/0xea0
     [ ]  process_backlog+0x1df/0x660
     [ ]  net_rx_action+0x3b4/0xc90
     [ ]
     [ ] Allocated by task 1786:
     [ ]  kmem_cache_alloc+0xbf/0x220
     [ ]  skb_clone+0x10a/0x300
     [ ]  macvlan_broadcast+0x2f6/0x590 [macvlan]
     [ ]  macvlan_process_broadcast+0x37c/0x516 [macvlan]
     [ ]  process_one_work+0x66a/0x1060
     [ ]  worker_thread+0x87/0xb10
     [ ]
     [ ] Freed by task 3253:
     [ ]  kmem_cache_free+0x82/0x2a0
     [ ]  skb_release_data+0x2c3/0x6e0
     [ ]  kfree_skb+0x78/0x1d0
     [ ]  tipc_recvmsg+0x3be/0xa40 [tipc]
    
    So fix it by using skb_unshare() instead, which would create a new
    skb for the cloned frag and it'll be safe to change its frag_list.
    The similar things were also done in sctp_make_reassembled_event(),
    which is using skb_copy().
    
    Reported-by: Shuang Li <shuali@redhat.com>
    Fixes: 37e22164a8a3 ("tipc: rename and move message reassembly function")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7241d653bcc17eaf4ccb9994f360168d8bfea32d
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Sat Sep 5 15:14:47 2020 +0900

    tipc: fix shutdown() of connection oriented socket
    
    [ Upstream commit a4b5cc9e10803ecba64a7d54c0f47e4564b4a980 ]
    
    I confirmed that the problem fixed by commit 2a63866c8b51a3f7 ("tipc: fix
    shutdown() of connectionless socket") also applies to stream socket.
    
    ----------
    #include <sys/socket.h>
    #include <unistd.h>
    #include <sys/wait.h>
    
    int main(int argc, char *argv[])
    {
            int fds[2] = { -1, -1 };
            socketpair(PF_TIPC, SOCK_STREAM /* or SOCK_DGRAM */, 0, fds);
            if (fork() == 0)
                    _exit(read(fds[0], NULL, 1));
            shutdown(fds[0], SHUT_RDWR); /* This must make read() return. */
            wait(NULL); /* To be woken up by _exit(). */
            return 0;
    }
    ----------
    
    Since shutdown(SHUT_RDWR) should affect all processes sharing that socket,
    unconditionally setting sk->sk_shutdown to SHUTDOWN_MASK will be the right
    behavior.
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Acked-by: Ying Xue <ying.xue@windriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be619e3cbe46b8276b3f75d86e4d4055d55f9471
Author: Necip Fazil Yildiran <fazilyildiran@gmail.com>
Date:   Thu Sep 17 19:46:43 2020 +0300

    net: ipv6: fix kconfig dependency warning for IPV6_SEG6_HMAC
    
    [ Upstream commit db7cd91a4be15e1485d6b58c6afc8761c59c4efb ]
    
    When IPV6_SEG6_HMAC is enabled and CRYPTO is disabled, it results in the
    following Kbuild warning:
    
    WARNING: unmet direct dependencies detected for CRYPTO_HMAC
      Depends on [n]: CRYPTO [=n]
      Selected by [y]:
      - IPV6_SEG6_HMAC [=y] && NET [=y] && INET [=y] && IPV6 [=y]
    
    WARNING: unmet direct dependencies detected for CRYPTO_SHA1
      Depends on [n]: CRYPTO [=n]
      Selected by [y]:
      - IPV6_SEG6_HMAC [=y] && NET [=y] && INET [=y] && IPV6 [=y]
    
    WARNING: unmet direct dependencies detected for CRYPTO_SHA256
      Depends on [n]: CRYPTO [=n]
      Selected by [y]:
      - IPV6_SEG6_HMAC [=y] && NET [=y] && INET [=y] && IPV6 [=y]
    
    The reason is that IPV6_SEG6_HMAC selects CRYPTO_HMAC, CRYPTO_SHA1, and
    CRYPTO_SHA256 without depending on or selecting CRYPTO while those configs
    are subordinate to CRYPTO.
    
    Honor the kconfig menu hierarchy to remove kconfig dependency warnings.
    
    Fixes: bf355b8d2c30 ("ipv6: sr: add core files for SR HMAC support")
    Signed-off-by: Necip Fazil Yildiran <fazilyildiran@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0339397d965d4fc45879236b43c9f49bfa4d8d4b
Author: Wei Wang <weiwan@google.com>
Date:   Tue Sep 8 14:09:34 2020 -0700

    ip: fix tos reflection in ack and reset packets
    
    [ Upstream commit ba9e04a7ddf4f22a10e05bf9403db6b97743c7bf ]
    
    Currently, in tcp_v4_reqsk_send_ack() and tcp_v4_send_reset(), we
    echo the TOS value of the received packets in the response.
    However, we do not want to echo the lower 2 ECN bits in accordance
    with RFC 3168 6.1.5 robustness principles.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    
    Signed-off-by: Wei Wang <weiwan@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f0addb36dd1c61fe0f1a458a48b1a5ddc96aa24
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Sep 9 12:46:48 2020 +0300

    hdlc_ppp: add range checks in ppp_cp_parse_cr()
    
    [ Upstream commit 66d42ed8b25b64eb63111a2b8582c5afc8bf1105 ]
    
    There are a couple bugs here:
    1) If opt[1] is zero then this results in a forever loop.  If the value
       is less than 2 then it is invalid.
    2) It assumes that "len" is more than sizeof(valid_accm) or 6 which can
       result in memory corruption.
    
    In the case of LCP_OPTION_ACCM, then  we should check "opt[1]" instead
    of "len" because, if "opt[1]" is less than sizeof(valid_accm) then
    "nak_len" gets out of sync and it can lead to memory corruption in the
    next iterations through the loop.  In case of LCP_OPTION_MAGIC, the
    only valid value for opt[1] is 6, but the code is trying to log invalid
    data so we should only discard the data when "len" is less than 6
    because that leads to a read overflow.
    
    Reported-by: ChenNan Of Chaitin Security Research Lab  <whutchennan@gmail.com>
    Fixes: e022c2f07ae5 ("WAN: new synchronous PPP implementation for generic HDLC.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef13017d65b003e35f6dbf3236b5e0d82c65a7a1
Author: Shamir Rabinovitch <shamir.rabinovitch@oracle.com>
Date:   Thu Sep 24 18:24:49 2020 +0900

    RDMA/ucma: ucma_context reference leak in error path
    
    commit ef95a90ae6f4f21990e1f7ced6719784a409e811 upstream.
    
    Validating input parameters should be done before getting the cm_id
    otherwise it can leak a cm_id reference.
    
    Fixes: 6a21dfc0d0db ("RDMA/ucma: Limit possible option size")
    Signed-off-by: Shamir Rabinovitch <shamir.rabinovitch@oracle.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    [iwamatsu: Backported to 4.4, 4.9 and 4.14: adjust context]
    Signed-off-by: Nobuhiro Iwamatsu (CIP) <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c0fdfbf01ab015515e1ff1bee3d2b9e5f86628aa
Author: Ralph Campbell <rcampbell@nvidia.com>
Date:   Fri Sep 18 21:20:24 2020 -0700

    mm/thp: fix __split_huge_pmd_locked() for migration PMD
    
    [ Upstream commit ec0abae6dcdf7ef88607c869bf35a4b63ce1b370 ]
    
    A migrating transparent huge page has to already be unmapped.  Otherwise,
    the page could be modified while it is being copied to a new page and data
    could be lost.  The function __split_huge_pmd() checks for a PMD migration
    entry before calling __split_huge_pmd_locked() leading one to think that
    __split_huge_pmd_locked() can handle splitting a migrating PMD.
    
    However, the code always increments the page->_mapcount and adjusts the
    memory control group accounting assuming the page is mapped.
    
    Also, if the PMD entry is a migration PMD entry, the call to
    is_huge_zero_pmd(*pmd) is incorrect because it calls pmd_pfn(pmd) instead
    of migration_entry_to_pfn(pmd_to_swp_entry(pmd)).  Fix these problems by
    checking for a PMD migration entry.
    
    Fixes: 84c3fc4e9c56 ("mm: thp: check pmd migration entry in common path")
    Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: Yang Shi <shy828301@gmail.com>
    Reviewed-by: Zi Yan <ziy@nvidia.com>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Alistair Popple <apopple@nvidia.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Bharata B Rao <bharata@linux.ibm.com>
    Cc: Ben Skeggs <bskeggs@redhat.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: <stable@vger.kernel.org>    [4.14+]
    Link: https://lkml.kernel.org/r/20200903183140.19055-1-rcampbell@nvidia.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 32dcd10cf110ba842f7614635e2a18f3ed3cde07
Author: Muchun Song <songmuchun@bytedance.com>
Date:   Fri Sep 18 21:20:21 2020 -0700

    kprobes: fix kill kprobe which has been marked as gone
    
    [ Upstream commit b0399092ccebd9feef68d4ceb8d6219a8c0caa05 ]
    
    If a kprobe is marked as gone, we should not kill it again.  Otherwise, we
    can disarm the kprobe more than once.  In that case, the statistics of
    kprobe_ftrace_enabled can unbalance which can lead to that kprobe do not
    work.
    
    Fixes: e8386a0cb22f ("kprobes: support probing module __exit function")
    Co-developed-by: Chengming Zhou <zhouchengming@bytedance.com>
    Signed-off-by: Muchun Song <songmuchun@bytedance.com>
    Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: "Naveen N . Rao" <naveen.n.rao@linux.ibm.com>
    Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/20200822030055.32383-1-songmuchun@bytedance.com
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 40a023f681befd9b2862a3c16fb306a38b359ae5
Author: Rustam Kovhaev <rkovhaev@gmail.com>
Date:   Mon Sep 7 11:55:35 2020 -0700

    KVM: fix memory leak in kvm_io_bus_unregister_dev()
    
    [ Upstream commit f65886606c2d3b562716de030706dfe1bea4ed5e ]
    
    when kmalloc() fails in kvm_io_bus_unregister_dev(), before removing
    the bus, we should iterate over all other devices linked to it and call
    kvm_iodevice_destructor() for them
    
    Fixes: 90db10434b16 ("KVM: kvm_io_bus_unregister_dev() should never fail")
    Cc: stable@vger.kernel.org
    Reported-and-tested-by: syzbot+f196caa45793d6374707@syzkaller.appspotmail.com
    Link: https://syzkaller.appspot.com/bug?extid=f196caa45793d6374707
    Signed-off-by: Rustam Kovhaev <rkovhaev@gmail.com>
    Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20200907185535.233114-1-rkovhaev@gmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebc57091e4e853aa8b198b9276010fd8d147c0f2
Author: Sivaprakash Murugesan <sivaprak@codeaurora.org>
Date:   Wed Jul 29 21:00:03 2020 +0530

    phy: qcom-qmp: Use correct values for ipq8074 PCIe Gen2 PHY init
    
    [ Upstream commit afd55e6d1bd35b4b36847869011447a83a81c8e0 ]
    
    There were some problem in ipq8074 Gen2 PCIe phy init sequence.
    
    1. Few register values were wrongly updated in the phy init sequence.
    2. The register QSERDES_RX_SIGDET_CNTRL is a RX tuning parameter
       register which is added in serdes table causing the wrong register
       was getting updated.
    3. Clocks and resets were not added in the phy init.
    
    Fix these to make Gen2 PCIe port on ipq8074 devices to work.
    
    Fixes: eef243d04b2b6 ("phy: qcom-qmp: Add support for IPQ8074")
    Cc: stable@vger.kernel.org
    Co-developed-by: Selvam Sathappan Periakaruppan <speriaka@codeaurora.org>
    Signed-off-by: Selvam Sathappan Periakaruppan <speriaka@codeaurora.org>
    Signed-off-by: Sivaprakash Murugesan <sivaprak@codeaurora.org>
    Link: https://lore.kernel.org/r/1596036607-11877-4-git-send-email-sivaprak@codeaurora.org
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 05570d97443f8e569a79cf6e140f5ed96e6ac172
Author: Mark Salyzyn <salyzyn@android.com>
Date:   Wed Jul 22 04:00:53 2020 -0700

    af_key: pfkey_dump needs parameter validation
    
    commit 37bd22420f856fcd976989f1d4f1f7ad28e1fcac upstream.
    
    In pfkey_dump() dplen and splen can both be specified to access the
    xfrm_address_t structure out of bounds in__xfrm_state_filter_match()
    when it calls addr_match() with the indexes.  Return EINVAL if either
    are out of range.
    
    Signed-off-by: Mark Salyzyn <salyzyn@android.com>
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: kernel-team@android.com
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>