commit 8020355f44545d6e69179d49d317130132a121cb
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Jan 30 13:27:16 2021 +0100

    Linux 4.9.254
    
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Link: https://lore.kernel.org/r/20210129105910.583037839@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27d298bf97efcfd6d805dd7ea5cdce5c8007bc7c
Author: Arvind Sankar <nivedita@alum.mit.edu>
Date:   Tue Aug 11 20:43:08 2020 -0400

    x86/boot/compressed: Disable relocation relaxation
    
    commit 09e43968db40c33a73e9ddbfd937f46d5c334924 upstream.
    
    The x86-64 psABI [0] specifies special relocation types
    (R_X86_64_[REX_]GOTPCRELX) for indirection through the Global Offset
    Table, semantically equivalent to R_X86_64_GOTPCREL, which the linker
    can take advantage of for optimization (relaxation) at link time. This
    is supported by LLD and binutils versions 2.26 onwards.
    
    The compressed kernel is position-independent code, however, when using
    LLD or binutils versions before 2.27, it must be linked without the -pie
    option. In this case, the linker may optimize certain instructions into
    a non-position-independent form, by converting foo@GOTPCREL(%rip) to $foo.
    
    This potential issue has been present with LLD and binutils-2.26 for a
    long time, but it has never manifested itself before now:
    
    - LLD and binutils-2.26 only relax
            movq    foo@GOTPCREL(%rip), %reg
      to
            leaq    foo(%rip), %reg
      which is still position-independent, rather than
            mov     $foo, %reg
      which is permitted by the psABI when -pie is not enabled.
    
    - GCC happens to only generate GOTPCREL relocations on mov instructions.
    
    - CLang does generate GOTPCREL relocations on non-mov instructions, but
      when building the compressed kernel, it uses its integrated assembler
      (due to the redefinition of KBUILD_CFLAGS dropping -no-integrated-as),
      which has so far defaulted to not generating the GOTPCRELX
      relocations.
    
    Nick Desaulniers reports [1,2]:
    
      "A recent change [3] to a default value of configuration variable
       (ENABLE_X86_RELAX_RELOCATIONS OFF -> ON) in LLVM now causes Clang's
       integrated assembler to emit R_X86_64_GOTPCRELX/R_X86_64_REX_GOTPCRELX
       relocations. LLD will relax instructions with these relocations based
       on whether the image is being linked as position independent or not.
       When not, then LLD will relax these instructions to use absolute
       addressing mode (R_RELAX_GOT_PC_NOPIC). This causes kernels built with
       Clang and linked with LLD to fail to boot."
    
    Patch series [4] is a solution to allow the compressed kernel to be
    linked with -pie unconditionally, but even if merged is unlikely to be
    backported. As a simple solution that can be applied to stable as well,
    prevent the assembler from generating the relaxed relocation types using
    the -mrelax-relocations=no option. For ease of backporting, do this
    unconditionally.
    
    [0] https://gitlab.com/x86-psABIs/x86-64-ABI/-/blob/master/x86-64-ABI/linker-optimization.tex#L65
    [1] https://lore.kernel.org/lkml/20200807194100.3570838-1-ndesaulniers@google.com/
    [2] https://github.com/ClangBuiltLinux/linux/issues/1121
    [3] https://reviews.llvm.org/rGc41a18cf61790fc898dcda1055c3efbf442c14c0
    [4] https://lore.kernel.org/lkml/20200731202738.2577854-1-nivedita@alum.mit.edu/
    
    Reported-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Tested-by: Nick Desaulniers <ndesaulniers@google.com>
    Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200812004308.1448603-1-nivedita@alum.mit.edu
    [nc: Backport to 4.9]
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04f51df12ddaa0e2a38223da00e0d3ed02d62a01
Author: Gaurav Kohli <gkohli@codeaurora.org>
Date:   Tue Oct 6 15:03:53 2020 +0530

    tracing: Fix race in trace_open and buffer resize call
    
    commit bbeb97464eefc65f506084fd9f18f21653e01137 upstream.
    
    Below race can come, if trace_open and resize of
    cpu buffer is running parallely on different cpus
    CPUX                                CPUY
                                        ring_buffer_resize
                                        atomic_read(&buffer->resize_disabled)
    tracing_open
    tracing_reset_online_cpus
    ring_buffer_reset_cpu
    rb_reset_cpu
                                        rb_update_pages
                                        remove/insert pages
    resetting pointer
    
    This race can cause data abort or some times infinte loop in
    rb_remove_pages and rb_insert_pages while checking pages
    for sanity.
    
    Take buffer lock to fix this.
    
    Link: https://lkml.kernel.org/r/1601976833-24377-1-git-send-email-gkohli@codeaurora.org
    
    Cc: stable@vger.kernel.org
    Fixes: 83f40318dab00 ("ring-buffer: Make removal of ring buffer pages atomic")
    Reported-by: Denis Efremov <efremov@linux.com>
    Signed-off-by: Gaurav Kohli <gkohli@codeaurora.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c3134adf3391ffc8ac959be83ea8b6c56342cc3
Author: Wang Hai <wanghai38@huawei.com>
Date:   Thu Jan 28 19:32:50 2021 +0800

    Revert "mm/slub: fix a memory leak in sysfs_slab_add()"
    
    commit 757fed1d0898b893d7daa84183947c70f27632f3 upstream.
    
    This reverts commit dde3c6b72a16c2db826f54b2d49bdea26c3534a2.
    
    syzbot report a double-free bug. The following case can cause this bug.
    
     - mm/slab_common.c: create_cache(): if the __kmem_cache_create() fails,
       it does:
    
            out_free_cache:
                    kmem_cache_free(kmem_cache, s);
    
     - but __kmem_cache_create() - at least for slub() - will have done
    
            sysfs_slab_add(s)
                    -> sysfs_create_group() .. fails ..
                    -> kobject_del(&s->kobj); .. which frees s ...
    
    We can't remove the kmem_cache_free() in create_cache(), because other
    error cases of __kmem_cache_create() do not free this.
    
    So, revert the commit dde3c6b72a16 ("mm/slub: fix a memory leak in
    sysfs_slab_add()") to fix this.
    
    Reported-by: syzbot+d0bd96b4696c1ef67991@syzkaller.appspotmail.com
    Fixes: dde3c6b72a16 ("mm/slub: fix a memory leak in sysfs_slab_add()")
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24c1a3d010531ebaa08f8da46f3506829d29ae9a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Jan 19 17:48:03 2021 +0300

    net: dsa: b53: fix an off by one in checking "vlan->vid"
    
    commit 8e4052c32d6b4b39c1e13c652c7e33748d447409 upstream.
    
    The > comparison should be >= to prevent accessing one element beyond
    the end of the dev->vlans[] array in the caller function, b53_vlan_add().
    The "dev->vlans" array is allocated in the b53_switch_init() function
    and it has "dev->num_vlans" elements.
    
    Fixes: a2482d2ce349 ("net: dsa: b53: Plug in VLAN support")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/YAbxI97Dl/pmBy5V@mwanda
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed4b430696208a0a85e3c5d1c318338e28e4fb3b
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jan 14 10:52:29 2021 -0800

    net_sched: avoid shift-out-of-bounds in tcindex_set_parms()
    
    commit bcd0cf19ef8258ac31b9a20248b05c15a1f4b4b0 upstream.
    
    tc_index being 16bit wide, we need to check that TCA_TCINDEX_SHIFT
    attribute is not silly.
    
    UBSAN: shift-out-of-bounds in net/sched/cls_tcindex.c:260:29
    shift exponent 255 is too large for 32-bit type 'int'
    CPU: 0 PID: 8516 Comm: syz-executor228 Not tainted 5.10.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:79 [inline]
     dump_stack+0x107/0x163 lib/dump_stack.c:120
     ubsan_epilogue+0xb/0x5a lib/ubsan.c:148
     __ubsan_handle_shift_out_of_bounds.cold+0xb1/0x181 lib/ubsan.c:395
     valid_perfect_hash net/sched/cls_tcindex.c:260 [inline]
     tcindex_set_parms.cold+0x1b/0x215 net/sched/cls_tcindex.c:425
     tcindex_change+0x232/0x340 net/sched/cls_tcindex.c:546
     tc_new_tfilter+0x13fb/0x21b0 net/sched/cls_api.c:2127
     rtnetlink_rcv_msg+0x8b6/0xb80 net/core/rtnetlink.c:5555
     netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2494
     netlink_unicast_kernel net/netlink/af_netlink.c:1304 [inline]
     netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1330
     netlink_sendmsg+0x907/0xe40 net/netlink/af_netlink.c:1919
     sock_sendmsg_nosec net/socket.c:652 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:672
     ____sys_sendmsg+0x6e8/0x810 net/socket.c:2336
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2390
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2423
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://lore.kernel.org/r/20210114185229.1742255-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a6303bca5188db92bebcb741d9cfbc1a922319d
Author: Matteo Croce <mcroce@microsoft.com>
Date:   Fri Jan 15 19:42:08 2021 +0100

    ipv6: create multicast route with RTPROT_KERNEL
    
    commit a826b04303a40d52439aa141035fca5654ccaccd upstream.
    
    The ff00::/8 multicast route is created without specifying the fc_protocol
    field, so the default RTPROT_BOOT value is used:
    
      $ ip -6 -d route
      unicast ::1 dev lo proto kernel scope global metric 256 pref medium
      unicast fe80::/64 dev eth0 proto kernel scope global metric 256 pref medium
      unicast ff00::/8 dev eth0 proto boot scope global metric 256 pref medium
    
    As the documentation says, this value identifies routes installed during
    boot, but the route is created when interface is set up.
    Change the value to RTPROT_KERNEL which is a better value.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Matteo Croce <mcroce@microsoft.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 692805e5c064f29288af628f64f25fc9ebb02984
Author: Alexander Lobakin <alobakin@pm.me>
Date:   Fri Jan 15 15:04:40 2021 +0000

    skbuff: back tiny skbs with kmalloc() in __netdev_alloc_skb() too
    
    commit 66c556025d687dbdd0f748c5e1df89c977b6c02a upstream.
    
    Commit 3226b158e67c ("net: avoid 32 x truesize under-estimation for
    tiny skbs") ensured that skbs with data size lower than 1025 bytes
    will be kmalloc'ed to avoid excessive page cache fragmentation and
    memory consumption.
    However, the fix adressed only __napi_alloc_skb() (primarily for
    virtio_net and napi_get_frags()), but the issue can still be achieved
    through __netdev_alloc_skb(), which is still used by several drivers.
    Drivers often allocate a tiny skb for headers and place the rest of
    the frame to frags (so-called copybreak).
    Mirror the condition to __netdev_alloc_skb() to handle this case too.
    
    Since v1 [0]:
     - fix "Fixes:" tag;
     - refine commit message (mention copybreak usecase).
    
    [0] https://lore.kernel.org/netdev/20210114235423.232737-1-alobakin@pm.me
    
    Fixes: a1c7fff7e18f ("net: netdev_alloc_skb() use build_skb()")
    Signed-off-by: Alexander Lobakin <alobakin@pm.me>
    Link: https://lore.kernel.org/r/20210115150354.85967-1-alobakin@pm.me
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b134423811ec5f9ce4ca062b66a88f152b66790
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Jan 18 16:08:12 2021 +0100

    sh_eth: Fix power down vs. is_opened flag ordering
    
    commit f6a2e94b3f9d89cb40771ff746b16b5687650cbb upstream.
    
    sh_eth_close() does a synchronous power down of the device before
    marking it closed.  Revert the order, to make sure the device is never
    marked opened while suspended.
    
    While at it, use pm_runtime_put() instead of pm_runtime_put_sync(), as
    there is no reason to do a synchronous power down.
    
    Fixes: 7fa2955ff70ce453 ("sh_eth: Fix sleeping function called from invalid context")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Sergei Shtylyov <sergei.shtylyov@gmail.com>
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Link: https://lore.kernel.org/r/20210118150812.796791-1-geert+renesas@glider.be
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 268daa2a79913d3958197da9de5f68a6a0258f65
Author: Necip Fazil Yildiran <fazilyildiran@gmail.com>
Date:   Thu Sep 17 18:45:48 2020 +0300

    sh: dma: fix kconfig dependency for G2_DMA
    
    commit f477a538c14d07f8c45e554c8c5208d588514e98 upstream.
    
    When G2_DMA is enabled and SH_DMA is disabled, it results in the following
    Kbuild warning:
    
    WARNING: unmet direct dependencies detected for SH_DMA_API
      Depends on [n]: SH_DMA [=n]
      Selected by [y]:
      - G2_DMA [=y] && SH_DREAMCAST [=y]
    
    The reason is that G2_DMA selects SH_DMA_API without depending on or
    selecting SH_DMA while SH_DMA_API depends on SH_DMA.
    
    When G2_DMA was first introduced with commit 40f49e7ed77f
    ("sh: dma: Make G2 DMA configurable."), this wasn't an issue since
    SH_DMA_API didn't have such dependency, and this way was the only way to
    enable it since SH_DMA_API was non-visible. However, later SH_DMA_API was
    made visible and dependent on SH_DMA with commit d8902adcc1a9
    ("dmaengine: sh: Add Support SuperH DMA Engine driver").
    
    Let G2_DMA depend on SH_DMA_API instead to avoid Kbuild issues.
    
    Fixes: d8902adcc1a9 ("dmaengine: sh: Add Support SuperH DMA Engine driver")
    Signed-off-by: Necip Fazil Yildiran <fazilyildiran@gmail.com>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73a9742caedc131e4bc1a5b1a10fee185bfbdcff
Author: Guillaume Nault <gnault@redhat.com>
Date:   Sat Jan 16 11:44:26 2021 +0100

    netfilter: rpfilter: mask ecn bits before fib lookup
    
    commit 2e5a6266fbb11ae93c468dfecab169aca9c27b43 upstream.
    
    RT_TOS() only masks one of the two ECN bits. Therefore rpfilter_mt()
    treats Not-ECT or ECT(1) packets in a different way than those with
    ECT(0) or CE.
    
    Reproducer:
    
      Create two netns, connected with a veth:
      $ ip netns add ns0
      $ ip netns add ns1
      $ ip link add name veth01 netns ns0 type veth peer name veth10 netns ns1
      $ ip -netns ns0 link set dev veth01 up
      $ ip -netns ns1 link set dev veth10 up
      $ ip -netns ns0 address add 192.0.2.10/32 dev veth01
      $ ip -netns ns1 address add 192.0.2.11/32 dev veth10
    
      Add a route to ns1 in ns0:
      $ ip -netns ns0 route add 192.0.2.11/32 dev veth01
    
      In ns1, only packets with TOS 4 can be routed to ns0:
      $ ip -netns ns1 route add 192.0.2.10/32 tos 4 dev veth10
    
      Ping from ns0 to ns1 works regardless of the ECN bits, as long as TOS
      is 4:
      $ ip netns exec ns0 ping -Q 4 192.0.2.11   # TOS 4, Not-ECT
        ... 0% packet loss ...
      $ ip netns exec ns0 ping -Q 5 192.0.2.11   # TOS 4, ECT(1)
        ... 0% packet loss ...
      $ ip netns exec ns0 ping -Q 6 192.0.2.11   # TOS 4, ECT(0)
        ... 0% packet loss ...
      $ ip netns exec ns0 ping -Q 7 192.0.2.11   # TOS 4, CE
        ... 0% packet loss ...
    
      Now use iptable's rpfilter module in ns1:
      $ ip netns exec ns1 iptables-legacy -t raw -A PREROUTING -m rpfilter --invert -j DROP
    
      Not-ECT and ECT(1) packets still pass:
      $ ip netns exec ns0 ping -Q 4 192.0.2.11   # TOS 4, Not-ECT
        ... 0% packet loss ...
      $ ip netns exec ns0 ping -Q 5 192.0.2.11   # TOS 4, ECT(1)
        ... 0% packet loss ...
    
      But ECT(0) and ECN packets are dropped:
      $ ip netns exec ns0 ping -Q 6 192.0.2.11   # TOS 4, ECT(0)
        ... 100% packet loss ...
      $ ip netns exec ns0 ping -Q 7 192.0.2.11   # TOS 4, CE
        ... 100% packet loss ...
    
    After this patch, rpfilter doesn't drop ECT(0) and CE packets anymore.
    
    Fixes: 8f97339d3feb ("netfilter: add ipv4 reverse path filter match")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 599466588d253fa9a83dd8064be18c536b20241d
Author: Will Deacon <will@kernel.org>
Date:   Tue Jan 12 22:48:32 2021 +0000

    compiler.h: Raise minimum version of GCC to 5.1 for arm64
    
    commit dca5244d2f5b94f1809f0c02a549edf41ccd5493 upstream.
    
    GCC versions >= 4.9 and < 5.1 have been shown to emit memory references
    beyond the stack pointer, resulting in memory corruption if an interrupt
    is taken after the stack pointer has been adjusted but before the
    reference has been executed. This leads to subtle, infrequent data
    corruption such as the EXT4 problems reported by Russell King at the
    link below.
    
    Life is too short for buggy compilers, so raise the minimum GCC version
    required by arm64 to 5.1.
    
    Reported-by: Russell King <linux@armlinux.org.uk>
    Suggested-by: Arnd Bergmann <arnd@kernel.org>
    Signed-off-by: Will Deacon <will@kernel.org>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: <stable@vger.kernel.org>
    Cc: Theodore Ts'o <tytso@mit.edu>
    Cc: Florian Weimer <fweimer@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Link: https://lore.kernel.org/r/20210105154726.GD1551@shell.armlinux.org.uk
    Link: https://lore.kernel.org/r/20210112224832.10980-1-will@kernel.org
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [will: backport to 4.4.y/4.9.y/4.14.y; add __clang__ check]
    Link: https://lore.kernel.org/r/CA+G9fYuzE9WMSB7uGjV4gTzK510SHEdJb_UXQCzsQ5MqA=h9SA@mail.gmail.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b98481167269b96bb60c4795dba04940202dbde3
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Fri Jan 22 16:00:56 2021 +0100

    bpf: Fix buggy rsh min/max bounds tracking
    
    [ no upstream commit ]
    
    Fix incorrect bounds tracking for RSH opcode. Commit f23cc643f9ba ("bpf: fix
    range arithmetic for bpf map access") had a wrong assumption about min/max
    bounds. The new dst_reg->min_value needs to be derived by right shifting the
    max_val bounds, not min_val, and likewise new dst_reg->max_value needs to be
    derived by right shifting the min_val bounds, not max_val. Later stable kernels
    than 4.9 are not affected since bounds tracking was overall reworked and they
    already track this similarly as in the fix.
    
    Fixes: f23cc643f9ba ("bpf: fix range arithmetic for bpf map access")
    Reported-by: Ryota Shiga (Flatt Security)
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: John Fastabend <john.fastabend@gmail.com>
    Cc: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20089f3284b27eb24362725778264e4148c61f8c
Author: JC Kuo <jckuo@nvidia.com>
Date:   Fri Jan 15 18:19:07 2021 +0200

    xhci: tegra: Delay for disabling LFPS detector
    
    commit da7e0c3c2909a3d9bf8acfe1db3cb213bd7febfb upstream.
    
    Occasionally, we are seeing some SuperSpeed devices resumes right after
    being directed to U3. This commits add 500us delay to ensure LFPS
    detector is disabled before sending ACK to firmware.
    
    [   16.099363] tegra-xusb 70090000.usb: entering ELPG
    [   16.104343] tegra-xusb 70090000.usb: 2-1 isn't suspended: 0x0c001203
    [   16.114576] tegra-xusb 70090000.usb: not all ports suspended: -16
    [   16.120789] tegra-xusb 70090000.usb: entering ELPG failed
    
    The register write passes through a few flop stages of 32KHz clock domain.
    NVIDIA ASIC designer reviewed RTL and suggests 500us delay.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: JC Kuo <jckuo@nvidia.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20210115161907.2875631-3-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23ce98a5af66a7f9631bd0b66f245a8fbb39f218
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Jan 15 18:19:06 2021 +0200

    xhci: make sure TRB is fully written before giving it to the controller
    
    commit 576667bad341516edc4e18eb85acb0a2b4c9c9d9 upstream.
    
    Once the command ring doorbell is rung the xHC controller will parse all
    command TRBs on the command ring that have the cycle bit set properly.
    
    If the driver just started writing the next command TRB to the ring when
    hardware finished the previous TRB, then HW might fetch an incomplete TRB
    as long as its cycle bit set correctly.
    
    A command TRB is 16 bytes (128 bits) long.
    Driver writes the command TRB in four 32 bit chunks, with the chunk
    containing the cycle bit last. This does however not guarantee that
    chunks actually get written in that order.
    
    This was detected in stress testing when canceling URBs with several
    connected USB devices.
    Two consecutive "Set TR Dequeue pointer" commands got queued right
    after each other, and the second one was only partially written when
    the controller parsed it, causing the dequeue pointer to be set
    to bogus values. This was seen as error messages:
    
    "Mismatch between completed Set TR Deq Ptr command & xHCI internal state"
    
    Solution is to add a write memory barrier before writing the cycle bit.
    
    Cc: <stable@vger.kernel.org>
    Tested-by: Ross Zwisler <zwisler@google.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20210115161907.2875631-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54e278d8cd5c47999acc0833bd3429dc6f6c7972
Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Date:   Mon Jan 18 21:36:15 2021 +0100

    usb: bdc: Make bdc pci driver depend on BROKEN
    
    commit ef02684c4e67d8c35ac83083564135bc7b1d3445 upstream.
    
    The bdc pci driver is going to be removed due to it not existing in the
    wild. This patch turns off compilation of the driver so that stable
    kernels can also pick up the change. This helps the out-of-tree
    facetimehd webcam driver as the pci id conflicts with bdc.
    
    Cc: Al Cooper <alcooperx@gmail.com>
    Cc: <stable@vger.kernel.org>
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Link: https://lore.kernel.org/r/20210118203615.13995-1-patrik.r.jakobsson@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2434d1a38d37f016c8f77dbb01cad0c8d6c305a6
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Thu Jan 14 00:09:51 2021 -0800

    usb: udc: core: Use lock when write to soft_connect
    
    commit c28095bc99073ddda65e4f31f6ae0d908d4d5cd8 upstream.
    
    Use lock to guard against concurrent access for soft-connect/disconnect
    operations when writing to soft_connect sysfs.
    
    Fixes: 2ccea03a8f7e ("usb: gadget: introduce UDC Class")
    Cc: stable@vger.kernel.org
    Acked-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/338ea01fbd69b1985ef58f0f59af02c805ddf189.1610611437.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfbce79c6dce21f0d21ab6c4112849199bb54e46
Author: Longfang Liu <liulongfang@huawei.com>
Date:   Tue Jan 12 09:57:27 2021 +0800

    USB: ehci: fix an interrupt calltrace error
    
    commit 643a4df7fe3f6831d14536fd692be85f92670a52 upstream.
    
    The system that use Synopsys USB host controllers goes to suspend
    when using USB audio player. This causes the USB host controller
    continuous send interrupt signal to system, When the number of
    interrupts exceeds 100000, the system will forcibly close the
    interrupts and output a calltrace error.
    
    When the system goes to suspend, the last interrupt is reported to
    the driver. At this time, the system has set the state to suspend.
    This causes the last interrupt to not be processed by the system and
    not clear the interrupt flag. This uncleared interrupt flag constantly
    triggers new interrupt event. This causing the driver to receive more
    than 100,000 interrupts, which causes the system to forcibly close the
    interrupt report and report the calltrace error.
    
    so, when the driver goes to sleep and changes the system state to
    suspend, the interrupt flag needs to be cleared.
    
    Signed-off-by: Longfang Liu <liulongfang@huawei.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/1610416647-45774-1-git-send-email-liulongfang@huawei.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e418332942a2a4fa25f11578d92a19db103f7b33
Author: Eugene Korenevsky <ekorenevsky@astralinux.ru>
Date:   Sun Jan 10 20:36:09 2021 +0300

    ehci: fix EHCI host controller initialization sequence
    
    commit 280a9045bb18833db921b316a5527d2b565e9f2e upstream.
    
    According to EHCI spec, EHCI HC clears USBSTS.HCHalted whenever
    USBCMD.RS=1.
    
    However, it is a good practice to wait some time after setting USBCMD.RS
    (approximately 100ms) until USBSTS.HCHalted become zero.
    
    Without this waiting, VirtualBox's EHCI virtual HC accidentally hangs
    (see BugLink).
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=211095
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Eugene Korenevsky <ekorenevsky@astralinux.ru>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210110173609.GA17313@himera.home
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 186a03e3bdd7bb0269afc37a6298ebfa8782a639
Author: Wang Hui <john.wanghui@huawei.com>
Date:   Fri Jan 15 22:59:16 2021 +0300

    stm class: Fix module init return on allocation failure
    
    commit 927633a6d20af319d986f3e42c3ef9f6d7835008 upstream.
    
    In stm_heartbeat_init(): return value gets reset after the first
    iteration by stm_source_register_device(), so allocation failures
    after that will, after a clean up, return success. Fix that.
    
    Fixes: 119291853038 ("stm class: Add heartbeat stm source device")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hui <john.wanghui@huawei.com>
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Link: https://lore.kernel.org/r/20210115195917.3184-2-alexander.shishkin@linux.intel.com
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 97f337118d0e2d4621abe4114c549fdd3c28fe7b
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Wed Dec 9 11:46:49 2020 +0100

    iio: ad5504: Fix setting power-down state
    
    commit efd597b2839a9895e8a98fcb0b76d2f545802cd4 upstream.
    
    The power-down mask of the ad5504 is actually a power-up mask. Meaning if
    a bit is set the corresponding channel is powered up and if it is not set
    the channel is powered down.
    
    The driver currently has this the wrong way around, resulting in the
    channel being powered up when requested to be powered down and vice versa.
    
    Fixes: 3bbbf150ffde ("staging:iio:dac:ad5504: Use strtobool for boolean values")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Acked-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Link: https://lore.kernel.org/r/20201209104649.5794-1-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbc6847b9b8978b520f62fbc7c68c54ef0f8d282
Author: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Date:   Wed Jan 20 20:41:35 2021 +0900

    can: dev: can_restart: fix use after free bug
    
    [ Upstream commit 03f16c5075b22c8902d2af739969e878b0879c94 ]
    
    After calling netif_rx_ni(skb), dereferencing skb is unsafe.
    Especially, the can_frame cf which aliases skb memory is accessed
    after the netif_rx_ni() in:
          stats->rx_bytes += cf->len;
    
    Reordering the lines solves the issue.
    
    Fixes: 39549eef3587 ("can: CAN Network device driver and Netlink interface")
    Link: https://lore.kernel.org/r/20210120114137.200019-2-mailhol.vincent@wanadoo.fr
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a4928759d1cfe46748c9e7d3a002a7ef5c820d5
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Sat Jan 9 13:43:08 2021 +0100

    i2c: octeon: check correct size of maximum RECV_LEN packet
    
    [ Upstream commit 1b2cfa2d1dbdcc3b6dba1ecb7026a537a1d7277f ]
    
    I2C_SMBUS_BLOCK_MAX defines already the maximum number as defined in the
    SMBus 2.0 specs. No reason to add one to it.
    
    Fixes: 886f6f8337dd ("i2c: octeon: Support I2C_M_RECV_LEN")
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Robert Richter <rric@kernel.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3ee5fd6f7dc9a62e6ded4ce15a803c08ff9ac9f0
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Jan 13 17:12:52 2021 +1000

    drm/nouveau/i2c/gm200: increase width of aux semaphore owner fields
    
    [ Upstream commit ba6e9ab0fcf3d76e3952deb12b5f993991621d9c ]
    
    Noticed while debugging GA102.
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a12936bcaac22d6b2b44e745af4f84e3a3d01fa
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Wed Jan 13 17:12:52 2021 +1000

    drm/nouveau/bios: fix issue shadowing expansion ROMs
    
    [ Upstream commit 402a89660e9dc880710b12773076a336c9dab3d7 ]
    
    This issue has generally been covered up by the presence of additional
    expansion ROMs after the ones we're interested in, with header fetches
    of subsequent images loading enough of the ROM to hide the issue.
    
    Noticed on GA102, which lacks a type 0x70 image compared to TU102,.
    
    [  906.364197] nouveau 0000:09:00.0: bios: 00000000: type 00, 65024 bytes
    [  906.381205] nouveau 0000:09:00.0: bios: 0000fe00: type 03, 91648 bytes
    [  906.405213] nouveau 0000:09:00.0: bios: 00026400: type e0, 22016 bytes
    [  906.410984] nouveau 0000:09:00.0: bios: 0002ba00: type e0, 366080 bytes
    
    vs
    
    [   22.961901] nouveau 0000:09:00.0: bios: 00000000: type 00, 60416 bytes
    [   22.984174] nouveau 0000:09:00.0: bios: 0000ec00: type 03, 71168 bytes
    [   23.010446] nouveau 0000:09:00.0: bios: 00020200: type e0, 48128 bytes
    [   23.028220] nouveau 0000:09:00.0: bios: 0002be00: type e0, 140800 bytes
    [   23.080196] nouveau 0000:09:00.0: bios: 0004e400: type 70, 7168 bytes
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7bbac19e604b2443c93f01c3259734d53f776dbf
Author: Can Guo <cang@codeaurora.org>
Date:   Mon Dec 28 04:04:36 2020 -0800

    scsi: ufs: Correct the LUN used in eh_device_reset_handler() callback
    
    [ Upstream commit 35fc4cd34426c242ab015ef280853b7bff101f48 ]
    
    Users can initiate resets to specific SCSI device/target/host through
    IOCTL. When this happens, the SCSI cmd passed to eh_device/target/host
    _reset_handler() callbacks is initialized with a request whose tag is -1.
    In this case it is not right for eh_device_reset_handler() callback to
    count on the LUN get from hba->lrb[-1]. Fix it by getting LUN from the SCSI
    device associated with the SCSI cmd.
    
    Link: https://lore.kernel.org/r/1609157080-26283-1-git-send-email-cang@codeaurora.org
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
    Signed-off-by: Can Guo <cang@codeaurora.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 185fe2a1c35c2617f18f8a0a4b7351b018b70871
Author: Cezary Rojewski <cezary.rojewski@intel.com>
Date:   Thu Dec 17 11:54:01 2020 +0100

    ASoC: Intel: haswell: Add missing pm_ops
    
    [ Upstream commit bb224c3e3e41d940612d4cc9573289cdbd5cb8f5 ]
    
    haswell machine board is missing pm_ops what prevents it from undergoing
    suspend-resume procedure successfully. Assign default snd_soc_pm_ops so
    this is no longer the case.
    
    Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Link: https://lore.kernel.org/r/20201217105401.27865-1-cezary.rojewski@intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3f47fe6446b5b1d99a2498fca987dafa86a0f944
Author: Hannes Reinecke <hare@suse.de>
Date:   Thu Jan 21 18:50:56 2021 +0100

    dm: avoid filesystem lookup in dm_get_dev_t()
    
    commit 809b1e4945774c9ec5619a8f4e2189b7b3833c0c upstream.
    
    This reverts commit
    644bda6f3460 ("dm table: fall back to getting device using name_to_dev_t()")
    
    dm_get_dev_t() is just used to convert an arbitrary 'path' string
    into a dev_t. It doesn't presume that the device is present; that
    check will be done later, as the only caller is dm_get_device(),
    which does a dm_get_table_device() later on, which will properly
    open the device.
    
    So if the path string already _is_ in major:minor representation
    we can convert it directly, avoiding a recursion into the filesystem
    to lookup the block device.
    
    This avoids a hang in multipath_message() when the filesystem is
    inaccessible.
    
    Fixes: 644bda6f3460 ("dm table: fall back to getting device using name_to_dev_t()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Martin Wilck <mwilck@suse.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c9546d53bd48bd6abea65db2c2004370c84734f
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jan 15 22:57:52 2021 +0100

    ACPI: scan: Make acpi_bus_get_device() clear return pointer on error
    
    commit 78a18fec5258c8df9435399a1ea022d73d3eceb9 upstream.
    
    Set the acpi_device pointer which acpi_bus_get_device() returns-by-
    reference to NULL on errors.
    
    We've recently had 2 cases where callers of acpi_bus_get_device()
    did not properly error check the return value, so set the returned-
    by-reference acpi_device pointer to NULL, because at least some
    callers of acpi_bus_get_device() expect that to be done on errors.
    
    [ rjw: This issue was exposed by commit 71da201f38df ("ACPI: scan:
      Defer enumeration of devices with _DEP lists") which caused it to
      be much more likely to occur on some systems, but the real defect
      had been introduced by an earlier commit. ]
    
    Fixes: 40e7fcb19293 ("ACPI: Add _DEP support to fix battery issue on Asus T100TA")
    Fixes: bcfcd409d4db ("usb: split code locating ACPI companion into port and device")
    Reported-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Diagnosed-by: Rafael J. Wysocki <rafael@kernel.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Cc: All applicable <stable@vger.kernel.org>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75fb54e5cd3900f1fee3ed5bc77dde05dfdbef0f
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Jan 14 08:24:53 2021 +0100

    ALSA: hda/via: Add minimum mute flag
    
    commit 67ea698c3950d10925be33c21ca49ffb64e21842 upstream.
    
    It turned out that VIA codecs also mute the sound in the lowest mixer
    level.  Turn on the dac_min_mute flag to indicate the mute-as-minimum
    in TLV like already done in Conexant and IDT codecs.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=210559
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210114072453.11379-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 987cd6469b3729418ab31c503ca9ba243da1d6ea
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jan 15 10:34:28 2021 +0100

    ALSA: seq: oss: Fix missing error check in snd_seq_oss_synth_make_info()
    
    commit 217bfbb8b0bfa24619b11ab75c135fec99b99b20 upstream.
    
    snd_seq_oss_synth_make_info() didn't check the error code from
    snd_seq_oss_midi_make_info(), and this leads to the call of strlcpy()
    with the uninitialized string as the source, which may lead to the
    access over the limit.
    
    Add the proper error check for avoiding the failure.
    
    Reported-by: syzbot+e42504ff21cff05a595f@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210115093428.15882-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>