commit 18f617d6f398c264e3172532a5d3c656f17cecfa
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Oct 1 11:11:58 2020 +0200

    Linux 4.4.238
    
    Link: https://lore.kernel.org/r/20200929105928.198942536@linuxfoundation.org
    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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52632efa9e41be0c55d41bebd9e11f9769997270
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 6002dcd35aa356a3ea79d106f94733e7a298f040
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 1a93281d2568e68c0b193af94c538f8d5d108c30
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 cb8fce7e5917320116917678abbd4ff0a67f2dd1
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 3c5f8d371b7fef3e3714c4a062c7f3b4aa41d122
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 d74b623b98d5a5e8774cc867426d736dd5579adb
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Jun 23 13:34:26 2016 +0200

    tty: vt, consw->con_scrolldelta cleanup
    
    commit 97293de977365fe672daec2523e66ef457104921 upstream.
    
    * allow NULL consw->con_scrolldelta (some consoles define an empty
      hook)
    * => remove empty hooks now
    * return value of consw->con_scrolldelta is never checked => make the
      function void
    * document consw->con_scrolldelta a bit
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Thomas Winischhofer <thomas@winischhofer.net>
    Cc: linux-usb@vger.kernel.org
    Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
    Cc: Helge Deller <deller@gmx.de>
    Cc: linux-fbdev@vger.kernel.org
    Cc: linux-parisc@vger.kernel.org
    Cc: Ajay Kaher <akaher@vmware.com>
    [ for 4.4.y backport, only do the first change above, to prevent
    .con_scrolldelta from being called if not present - gregkh]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad692d58dae16b6286e293231ccf3186cd019253
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 35c3ed7979ec7091d60b70cd9eaef89644e8990b
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 f78c0c117c4b25bce7a5f8e37389a1f40e0b7852
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 463e58c377e972eaf751211b272fda28ad841275
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 673d15e20da5acf7a69060929d48481fd793fe1a
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 ece83bf936bfb7e85ffa32286f5779b48567e446
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 83f99c6069cb554321f8c764b415041487003e66
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 76e92c684ce4092bfd452d8ce4f68927d7aa957d
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 8e4ac71bb8519dbc2e2b00fc81f772d5c3e94e35
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 9142033e1dd8edf0392b5b1b6a33770b0be058ac
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 17fd0a642bbc15dec94c50e35c80c9e0fab590ea
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 da1935ae27d6af755d561204cf4b2ba2cf39fbd0
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 bc5d9f7ad8d8efd5d7f0f8d2e818b0d8f9764526
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 5a13d74d76d815d1d64474c955b9c99a265c07b2
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 e29d1a03449204aae70fed64d1ed16283c579662
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 dbb537734d9210c61550baa40f81a08a2c14b245
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 233addb01f18b0d8374661e051f8079cfc458567
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 0ad482ca053285c76bdb960c386398c901ca8e36
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 1cec5992cc34aa082541ff10b0ba0356e1e3c045
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 529a069e823afe037a661db459690c91d853175c
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 f5dcf3fd4416705946d1fc18c9b6d9ae18af3fd1
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 3244190d24cc0269497483fd8fb6b73b9d09b0d3
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 8e4c3d89d9e2ab6fcc358afa8cde8bf9fb49141c
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 8d73a56964ef76acae1a5515331e2ed089741b56
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 71b0f61f5892fb1c52eca184e785497986f3a108
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 61cc6d51e907410346942fbfb8904821aeba0b4d
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 523803a6ec3c6945a70cf49e6f4e1f03662cb6b7
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 bd1449b9b8ddf1bbb3cf528c4bf3d3eef026b634
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 c319cb4227b561f44aab40c80553e0a5dc073d7c
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 40259d39d77e35b9ec83b23333b539ea5d13eb4b
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 23f480d7fa89e945bf1f0b5eacc4817eabd3e331
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 9e0c71f2f633b0442661966228827d1a33df485f
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 581c308fdb3da96289d669a15d8699bff75071a0
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 3f51f7fb4a8727dbb22ae6891f82a44ad345c7f7
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 66a24fb617ec9c120585a8bf8e3cbc077d77a9c2
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 48aa636a2e68c1632923f5de2f658ce156b4ee81
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 17c73a2750d6f2e4d2bb367a55bcfaec74cdf4d6
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 d807d04a0e9ff0a9867064957fb7eb131ae7220c
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 4ad03ff6f680681c5f78254e37c4c856fa953629
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 84ca8e03c4ffe790184a34d6bcc958cbb422d00a
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 742c5feb17b239b1709cca325c4fe111c08ee240
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 1586f90a4ff2ca4f8a21eb1226e679f4aead3e62
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 d53a81303f95e2510bd14792dbe7e40e3a07daa6
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 2105d207a7266aaf2ccef8e99255b30918bb19f6
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 67f39614c81df35c16bac816881fbe7badb11dbb
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 31edd08c820e1186af6510a1bc0f8bfcbd216a70
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 b0dd4542e17fc88ac464f5243ae2da3e84f21f27
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 862495f91f7726cd8cd9f4842c9b5fc9818e8cbd
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 0594ec1ddb5fc1e224e29211fcec261d17dc9860
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 694befea1e4787c9626684bde196e4e6577bf495
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 c998f2fde1824c6122c0d72811851e99ec5d139f
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 638353712720ff5aea0e7df5691eb28c7a590ef7
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 830a3782ad36fe2c0f0d2a63386ad4c001082047
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 1e5fa8535c0a7cbd44bd73a439192e00502e96f3
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 98d1fac7d4a24bc54bcb188fae2f3fb9c01c73ca
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 424230861bfb7f69cc97f9b41014fdae608b0a83
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 2fa70e389417da2cc54e1bb77aca749f2407ceac
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 43bdb4af40f4a783fb638a819a58aaf0fda2814e
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 d745d8772a6ffc7edaccc65ce05baa162a4efbe9
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 20b4b82b02a427b598492de2fcf366d30c9933fc
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 f8e23211976f2ecaf4ab86052ec98b88e2cac5eb
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 b176b20c30b309339bbce423bb3ab81bd5ae2e78
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 4ee4cd0be975e5e9d7e8112df34f72ed8ef06402
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 9fa1b9fed8ec4cc46a1f7763eda306e2389b3e3f
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 0d0330976891d581d8635e178dce9f86964093d3
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 526af772abc19bb9ae2406620eec015ba619bcda
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 46f387de6a3cb4a5b619bfdb9915b5d4200b7d4d
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 1d7e1b1fd11c4217833810948b617672bca5f563
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 145642ca17081a497b82fa279eb5edcc8a1c99f8
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.4, 4.9: adjust context]
    Signed-off-by: Nobuhiro Iwamatsu (CIP) <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0d65d7bc67be6120f2a3c7e86caf10b671b7d00
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 c17c9e3e7cadfbdf11d6d340d0e37254a7e94ece
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 6afd3e4010e57d278c3e79b4fbe323ade9c14f93
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 a49ef91286776c3f095460112846cd85a063c29a
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 8c3d3d88f7ef83bb3a47e5c066d9dd7b95d7f291
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu Sep 24 19:00:54 2020 +0900

    mtd: Fix comparison in map_word_andequal()
    
    commit ea739a287f4f16d6250bea779a1026ead79695f2 upstream.
    
    Commit 9e343e87d2c4 ("mtd: cfi: convert inline functions to macros")
    changed map_word_andequal() into a macro, but also changed the right
    hand side of the comparison from val3 to val2.  Change it back to use
    val3 on the right hand side.
    
    Thankfully this did not cause a regression because all callers
    currently pass the same argument for val2 and val3.
    
    Fixes: 9e343e87d2c4 ("mtd: cfi: convert inline functions to macros")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
    Signed-off-by: Nobuhiro Iwamatsu (CIP) <noburhio1.nobuhiro@toshiba.co.jp>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45bba71e3f822c2976d71c3a285d5581dbebb9e1
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 2d81575a4bda48981dec3d51509569fc9ae67044
Author: Chengming Zhou <zhouchengming@bytedance.com>
Date:   Wed Jul 29 02:05:53 2020 +0800

    ftrace: Setup correct FTRACE_FL_REGS flags for module
    
    [ Upstream commit 8a224ffb3f52b0027f6b7279854c71a31c48fc97 ]
    
    When module loaded and enabled, we will use __ftrace_replace_code
    for module if any ftrace_ops referenced it found. But we will get
    wrong ftrace_addr for module rec in ftrace_get_addr_new, because
    rec->flags has not been setup correctly. It can cause the callback
    function of a ftrace_ops has FTRACE_OPS_FL_SAVE_REGS to be called
    with pt_regs set to NULL.
    So setup correct FTRACE_FL_REGS flags for rec when we call
    referenced_filters to find ftrace_ops references it.
    
    Link: https://lkml.kernel.org/r/20200728180554.65203-1-zhouchengming@bytedance.com
    
    Cc: stable@vger.kernel.org
    Fixes: 8c4f3c3fa9681 ("ftrace: Check module functions being traced on reload")
    Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
    Signed-off-by: Muchun Song <songmuchun@bytedance.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7801c0bb58523af7b3aaddf8983a6a695242d6c3
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 f0dfffce3f4ffd5f822568a4a6fb34c010e939d1
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 831587619afe78cd72651b34a0f6ccb2acf3c503
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>