commit 2d2791fce891fc20709232d49a6bae075b9a77f8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Jan 23 15:48:48 2021 +0100

    Linux 4.14.217
    
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20210122160828.128883527@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8dd215d574ea398792f7dbf9c9a0c9e2e726897
Author: Michael Hennerich <michael.hennerich@analog.com>
Date:   Thu Jan 14 17:42:17 2021 +0200

    spi: cadence: cache reference clock rate during probe
    
    commit 4d163ad79b155c71bf30366dc38f8d2502f78844 upstream.
    
    The issue is that using SPI from a callback under the CCF lock will
    deadlock, since this code uses clk_get_rate().
    
    Fixes: c474b38665463 ("spi: Add driver for Cadence SPI controller")
    Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Link: https://lore.kernel.org/r/20210114154217.51996-1-alexandru.ardelean@analog.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26e5eadac624ca16134c28095026885f7b7b8afa
Author: Aya Levin <ayal@nvidia.com>
Date:   Thu Jan 7 15:50:18 2021 +0200

    net: ipv6: Validate GSO SKB before finish IPv6 processing
    
    [ Upstream commit b210de4f8c97d57de051e805686248ec4c6cfc52 ]
    
    There are cases where GSO segment's length exceeds the egress MTU:
     - Forwarding of a TCP GRO skb, when DF flag is not set.
     - Forwarding of an skb that arrived on a virtualisation interface
       (virtio-net/vhost/tap) with TSO/GSO size set by other network
       stack.
     - Local GSO skb transmitted on an NETIF_F_TSO tunnel stacked over an
       interface with a smaller MTU.
     - Arriving GRO skb (or GSO skb in a virtualised environment) that is
       bridged to a NETIF_F_TSO tunnel stacked over an interface with an
       insufficient MTU.
    
    If so:
     - Consume the SKB and its segments.
     - Issue an ICMP packet with 'Packet Too Big' message containing the
       MTU, allowing the source host to reduce its Path MTU appropriately.
    
    Note: These cases are handled in the same manner in IPv4 output finish.
    This patch aligns the behavior of IPv6 and the one of IPv4.
    
    Fixes: 9e50849054a4 ("netfilter: ipv6: move POSTROUTING invocation before fragmentation")
    Signed-off-by: Aya Levin <ayal@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://lore.kernel.org/r/1610027418-30438-1-git-send-email-ayal@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b26893e51f9ea2030179aa119f2c7c7c14e7cf31
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Mon Jan 13 18:42:26 2020 -0500

    net: skbuff: disambiguate argument and member for skb_list_walk_safe helper
    
    commit 5eee7bd7e245914e4e050c413dfe864e31805207 upstream.
    
    This worked before, because we made all callers name their next pointer
    "next". But in trying to be more "drop-in" ready, the silliness here is
    revealed. This commit fixes the problem by making the macro argument and
    the member use different names.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 566966019ec2f28b36da2db5ac0d7a53f5b2f4a0
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed Jan 8 16:59:02 2020 -0500

    net: introduce skb_list_walk_safe for skb segment walking
    
    commit dcfea72e79b0aa7a057c8f6024169d86a1bbc84b upstream.
    
    As part of the continual effort to remove direct usage of skb->next and
    skb->prev, this patch adds a helper for iterating through the
    singly-linked variant of skb lists, which are used for lists of GSO
    packet. The name "skb_list_..." has been chosen to match the existing
    function, "kfree_skb_list, which also operates on these singly-linked
    lists, and the "..._walk_safe" part is the same idiom as elsewhere in
    the kernel.
    
    This patch removes the helper from wireguard and puts it into
    linux/skbuff.h, while making it a bit more robust for general usage. In
    particular, parenthesis are added around the macro argument usage, and it
    now accounts for trying to iterate through an already-null skb pointer,
    which will simply run the iteration zero times. This latter enhancement
    means it can be used to replace both do { ... } while and while (...)
    open-coded idioms.
    
    This should take care of these three possible usages, which match all
    current methods of iterations.
    
    skb_list_walk_safe(segs, skb, next) { ... }
    skb_list_walk_safe(skb, skb, next) { ... }
    skb_list_walk_safe(segs, skb, segs) { ... }
    
    Gcc appears to generate efficient code for each of these.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [ Just the skbuff.h changes for backporting - gregkh]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5440233ac4307cec305c1e3dedec9b6f4b2f4c79
Author: Edward Cree <ecree@solarflare.com>
Date:   Tue Dec 4 17:37:57 2018 +0000

    net: use skb_list_del_init() to remove from RX sublists
    
    [ Upstream commit 22f6bbb7bcfcef0b373b0502a7ff390275c575dd ]
    
    list_del() leaves the skb->next pointer poisoned, which can then lead to
     a crash in e.g. OVS forwarding.  For example, setting up an OVS VXLAN
     forwarding bridge on sfc as per:
    
    ========
    $ ovs-vsctl show
    5dfd9c47-f04b-4aaa-aa96-4fbb0a522a30
        Bridge "br0"
            Port "br0"
                Interface "br0"
                    type: internal
            Port "enp6s0f0"
                Interface "enp6s0f0"
            Port "vxlan0"
                Interface "vxlan0"
                    type: vxlan
                    options: {key="1", local_ip="10.0.0.5", remote_ip="10.0.0.4"}
        ovs_version: "2.5.0"
    ========
    (where 10.0.0.5 is an address on enp6s0f1)
    and sending traffic across it will lead to the following panic:
    ========
    general protection fault: 0000 [#1] SMP PTI
    CPU: 5 PID: 0 Comm: swapper/5 Not tainted 4.20.0-rc3-ehc+ #701
    Hardware name: Dell Inc. PowerEdge R710/0M233H, BIOS 6.4.0 07/23/2013
    RIP: 0010:dev_hard_start_xmit+0x38/0x200
    Code: 53 48 89 fb 48 83 ec 20 48 85 ff 48 89 54 24 08 48 89 4c 24 18 0f 84 ab 01 00 00 48 8d 86 90 00 00 00 48 89 f5 48 89 44 24 10 <4c> 8b 33 48 c7 03 00 00 00 00 48 8b 05 c7 d1 b3 00 4d 85 f6 0f 95
    RSP: 0018:ffff888627b437e0 EFLAGS: 00010202
    RAX: 0000000000000000 RBX: dead000000000100 RCX: ffff88862279c000
    RDX: ffff888614a342c0 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: ffff888618a88000 R08: 0000000000000001 R09: 00000000000003e8
    R10: 0000000000000000 R11: ffff888614a34140 R12: 0000000000000000
    R13: 0000000000000062 R14: dead000000000100 R15: ffff888616430000
    FS:  0000000000000000(0000) GS:ffff888627b40000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f6d2bc6d000 CR3: 000000000200a000 CR4: 00000000000006e0
    Call Trace:
     <IRQ>
     __dev_queue_xmit+0x623/0x870
     ? masked_flow_lookup+0xf7/0x220 [openvswitch]
     ? ep_poll_callback+0x101/0x310
     do_execute_actions+0xaba/0xaf0 [openvswitch]
     ? __wake_up_common+0x8a/0x150
     ? __wake_up_common_lock+0x87/0xc0
     ? queue_userspace_packet+0x31c/0x5b0 [openvswitch]
     ovs_execute_actions+0x47/0x120 [openvswitch]
     ovs_dp_process_packet+0x7d/0x110 [openvswitch]
     ovs_vport_receive+0x6e/0xd0 [openvswitch]
     ? dst_alloc+0x64/0x90
     ? rt_dst_alloc+0x50/0xd0
     ? ip_route_input_slow+0x19a/0x9a0
     ? __udp_enqueue_schedule_skb+0x198/0x1b0
     ? __udp4_lib_rcv+0x856/0xa30
     ? __udp4_lib_rcv+0x856/0xa30
     ? cpumask_next_and+0x19/0x20
     ? find_busiest_group+0x12d/0xcd0
     netdev_frame_hook+0xce/0x150 [openvswitch]
     __netif_receive_skb_core+0x205/0xae0
     __netif_receive_skb_list_core+0x11e/0x220
     netif_receive_skb_list+0x203/0x460
     ? __efx_rx_packet+0x335/0x5e0 [sfc]
     efx_poll+0x182/0x320 [sfc]
     net_rx_action+0x294/0x3c0
     __do_softirq+0xca/0x297
     irq_exit+0xa6/0xb0
     do_IRQ+0x54/0xd0
     common_interrupt+0xf/0xf
     </IRQ>
    ========
    So, in all listified-receive handling, instead pull skbs off the lists with
     skb_list_del_init().
    
    Fixes: 9af86f933894 ("net: core: fix use-after-free in __netif_receive_skb_list_core")
    Fixes: 7da517a3bc52 ("net: core: Another step of skb receive list processing")
    Fixes: a4ca8b7df73c ("net: ipv4: fix drop handling in ip_list_rcv() and ip_list_rcv_finish()")
    Fixes: d8269e2cbf90 ("net: ipv6: listify ipv6_rcv() and ip6_rcv_finish()")
    Signed-off-by: Edward Cree <ecree@solarflare.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [ for 4.14.y and older, just take the skbuff.h change - gregkh ]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ed0b5bb8cf71b4b9f995d4b3763648674fa032a
Author: Hoang Le <hoang.h.le@dektech.com.au>
Date:   Fri Jan 8 14:13:37 2021 +0700

    tipc: fix NULL deref in tipc_link_xmit()
    
    [ Upstream commit b77413446408fdd256599daf00d5be72b5f3e7c6 ]
    
    The buffer list can have zero skb as following path:
    tipc_named_node_up()->tipc_node_xmit()->tipc_link_xmit(), so
    we need to check the list before casting an &sk_buff.
    
    Fault report:
     [] tipc: Bulk publication failure
     [] general protection fault, probably for non-canonical [#1] PREEMPT [...]
     [] KASAN: null-ptr-deref in range [0x00000000000000c8-0x00000000000000cf]
     [] CPU: 0 PID: 0 Comm: swapper/0 Kdump: loaded Not tainted 5.10.0-rc4+ #2
     [] Hardware name: Bochs ..., BIOS Bochs 01/01/2011
     [] RIP: 0010:tipc_link_xmit+0xc1/0x2180
     [] Code: 24 b8 00 00 00 00 4d 39 ec 4c 0f 44 e8 e8 d7 0a 10 f9 48 [...]
     [] RSP: 0018:ffffc90000006ea0 EFLAGS: 00010202
     [] RAX: dffffc0000000000 RBX: ffff8880224da000 RCX: 1ffff11003d3cc0d
     [] RDX: 0000000000000019 RSI: ffffffff886007b9 RDI: 00000000000000c8
     [] RBP: ffffc90000007018 R08: 0000000000000001 R09: fffff52000000ded
     [] R10: 0000000000000003 R11: fffff52000000dec R12: ffffc90000007148
     [] R13: 0000000000000000 R14: 0000000000000000 R15: ffffc90000007018
     [] FS:  0000000000000000(0000) GS:ffff888037400000(0000) knlGS:000[...]
     [] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     [] CR2: 00007fffd2db5000 CR3: 000000002b08f000 CR4: 00000000000006f0
    
    Fixes: af9b028e270fd ("tipc: make media xmit call outside node spinlock context")
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Hoang Le <hoang.h.le@dektech.com.au>
    Link: https://lore.kernel.org/r/20210108071337.3598-1-hoang.h.le@dektech.com.au
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3aec0767b300833d285febb910871c4c4466bd09
Author: David Howells <dhowells@redhat.com>
Date:   Tue Jan 12 15:23:51 2021 +0000

    rxrpc: Fix handling of an unsupported token type in rxrpc_read()
    
    [ Upstream commit d52e419ac8b50c8bef41b398ed13528e75d7ad48 ]
    
    Clang static analysis reports the following:
    
    net/rxrpc/key.c:657:11: warning: Assigned value is garbage or undefined
                    toksize = toksizes[tok++];
                            ^ ~~~~~~~~~~~~~~~
    
    rxrpc_read() contains two consecutive loops.  The first loop calculates the
    token sizes and stores the results in toksizes[] and the second one uses
    the array.  When there is an error in identifying the token in the first
    loop, the token is skipped, no change is made to the toksizes[] array.
    When the same error happens in the second loop, the token is not skipped.
    This will cause the toksizes[] array to be out of step and will overrun
    past the calculated sizes.
    
    Fix this by making both loops log a message and return an error in this
    case.  This should only happen if a new token type is incompletely
    implemented, so it should normally be impossible to trigger this.
    
    Fixes: 9a059cd5ca7d ("rxrpc: Downgrade the BUG() for unsupported token type in rxrpc_read()")
    Reported-by: Tom Rix <trix@redhat.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Tom Rix <trix@redhat.com>
    Link: https://lore.kernel.org/r/161046503122.2445787.16714129930607546635.stgit@warthog.procyon.org.uk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 40b95b92f1dbb1298fdffda9e2139005edeca590
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jan 13 08:18:19 2021 -0800

    net: avoid 32 x truesize under-estimation for tiny skbs
    
    [ Upstream commit 3226b158e67cfaa677fd180152bfb28989cb2fac ]
    
    Both virtio net and napi_get_frags() allocate skbs
    with a very small skb->head
    
    While using page fragments instead of a kmalloc backed skb->head might give
    a small performance improvement in some cases, there is a huge risk of
    under estimating memory usage.
    
    For both GOOD_COPY_LEN and GRO_MAX_HEAD, we can fit at least 32 allocations
    per page (order-3 page in x86), or even 64 on PowerPC
    
    We have been tracking OOM issues on GKE hosts hitting tcp_mem limits
    but consuming far more memory for TCP buffers than instructed in tcp_mem[2]
    
    Even if we force napi_alloc_skb() to only use order-0 pages, the issue
    would still be there on arches with PAGE_SIZE >= 32768
    
    This patch makes sure that small skb head are kmalloc backed, so that
    other objects in the slab page can be reused instead of being held as long
    as skbs are sitting in socket queues.
    
    Note that we might in the future use the sk_buff napi cache,
    instead of going through a more expensive __alloc_skb()
    
    Another idea would be to use separate page sizes depending
    on the allocated length (to never have more than 4 frags per page)
    
    I would like to thank Greg Thelen for his precious help on this matter,
    analysing crash dumps is always a time consuming task.
    
    Fixes: fd11a83dd363 ("net: Pull out core bits of __netdev_alloc_skb and add __napi_alloc_skb")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Cc: Greg Thelen <gthelen@google.com>
    Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Link: https://lore.kernel.org/r/20210113161819.1155526-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86fff7c7d4011c4dcea7c68b829db142ef6c938b
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Wed Jan 13 17:29:47 2021 -0800

    net: sit: unregister_netdevice on newlink's error path
    
    [ Upstream commit 47e4bb147a96f1c9b4e7691e7e994e53838bfff8 ]
    
    We need to unregister the netdevice if config failed.
    .ndo_uninit takes care of most of the heavy lifting.
    
    This was uncovered by recent commit c269a24ce057 ("net: make
    free_netdev() more lenient with unregistering devices").
    Previously the partially-initialized device would be left
    in the system.
    
    Reported-and-tested-by: syzbot+2393580080a2da190f04@syzkaller.appspotmail.com
    Fixes: e2f1f072db8d ("sit: allow to configure 6rd tunnels via netlink")
    Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Link: https://lore.kernel.org/r/20210114012947.2515313-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c475b7b5a33bc9f9d889e1663456260251ce141
Author: David Wu <david.wu@rock-chips.com>
Date:   Wed Jan 13 11:41:09 2021 +0800

    net: stmmac: Fixed mtu channged by cache aligned
    
    [ Upstream commit 5b55299eed78538cc4746e50ee97103a1643249c ]
    
    Since the original mtu is not used when the mtu is updated,
    the mtu is aligned with cache, this will get an incorrect.
    For example, if you want to configure the mtu to be 1500,
    but mtu 1536 is configured in fact.
    
    Fixed: eaf4fac478077 ("net: stmmac: Do not accept invalid MTU values")
    Signed-off-by: David Wu <david.wu@rock-chips.com>
    Link: https://lore.kernel.org/r/20210113034109.27865-1-david.wu@rock-chips.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit faebcfeba362a183d3cbc984fd0119249de5cda6
Author: Petr Machata <petrm@nvidia.com>
Date:   Mon Jan 11 18:07:07 2021 +0100

    net: dcb: Accept RTM_GETDCB messages carrying set-like DCB commands
    
    [ Upstream commit df85bc140a4d6cbaa78d8e9c35154e1a2f0622c7 ]
    
    In commit 826f328e2b7e ("net: dcb: Validate netlink message in DCB
    handler"), Linux started rejecting RTM_GETDCB netlink messages if they
    contained a set-like DCB_CMD_ command.
    
    The reason was that privileges were only verified for RTM_SETDCB messages,
    but the value that determined the action to be taken is the command, not
    the message type. And validation of message type against the DCB command
    was the obvious missing piece.
    
    Unfortunately it turns out that mlnx_qos, a somewhat widely deployed tool
    for configuration of DCB, accesses the DCB set-like APIs through
    RTM_GETDCB.
    
    Therefore do not bounce the discrepancy between message type and command.
    Instead, in addition to validating privileges based on the actual message
    type, validate them also based on the expected message type. This closes
    the loophole of allowing DCB configuration on non-admin accounts, while
    maintaining backward compatibility.
    
    Fixes: 2f90b8657ec9 ("ixgbe: this patch adds support for DCB to the kernel and ixgbe driver")
    Fixes: 826f328e2b7e ("net: dcb: Validate netlink message in DCB handler")
    Signed-off-by: Petr Machata <petrm@nvidia.com>
    Link: https://lore.kernel.org/r/a3edcfda0825f2aa2591801c5232f2bbf2d8a554.1610384801.git.me@pmachata.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9591d6a21f402237b980c943a4b6895aed4c84a5
Author: Petr Machata <me@pmachata.org>
Date:   Tue Dec 22 22:49:44 2020 +0100

    net: dcb: Validate netlink message in DCB handler
    
    [ Upstream commit 826f328e2b7e8854dd42ea44e6519cd75018e7b1 ]
    
    DCB uses the same handler function for both RTM_GETDCB and RTM_SETDCB
    messages. dcb_doit() bounces RTM_SETDCB mesasges if the user does not have
    the CAP_NET_ADMIN capability.
    
    However, the operation to be performed is not decided from the DCB message
    type, but from the DCB command. Thus DCB_CMD_*_GET commands are used for
    reading DCB objects, the corresponding SET and DEL commands are used for
    manipulation.
    
    The assumption is that set-like commands will be sent via an RTM_SETDCB
    message, and get-like ones via RTM_GETDCB. However, this assumption is not
    enforced.
    
    It is therefore possible to manipulate DCB objects without CAP_NET_ADMIN
    capability by sending the corresponding command in an RTM_GETDCB message.
    That is a bug. Fix it by validating the type of the request message against
    the type used for the response.
    
    Fixes: 2f90b8657ec9 ("ixgbe: this patch adds support for DCB to the kernel and ixgbe driver")
    Signed-off-by: Petr Machata <me@pmachata.org>
    Link: https://lore.kernel.org/r/a2a9b88418f3a58ef211b718f2970128ef9e3793.1608673640.git.me@pmachata.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9c167459fc87f0e28737696bdc15345038c6063
Author: Willem de Bruijn <willemb@google.com>
Date:   Sat Jan 9 17:18:34 2021 -0500

    esp: avoid unneeded kmap_atomic call
    
    [ Upstream commit 9bd6b629c39e3fa9e14243a6d8820492be1a5b2e ]
    
    esp(6)_output_head uses skb_page_frag_refill to allocate a buffer for
    the esp trailer.
    
    It accesses the page with kmap_atomic to handle highmem. But
    skb_page_frag_refill can return compound pages, of which
    kmap_atomic only maps the first underlying page.
    
    skb_page_frag_refill does not return highmem, because flag
    __GFP_HIGHMEM is not set. ESP uses it in the same manner as TCP.
    That also does not call kmap_atomic, but directly uses page_address,
    in skb_copy_to_page_nocache. Do the same for ESP.
    
    This issue has become easier to trigger with recent kmap local
    debugging feature CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP.
    
    Fixes: cac2661c53f3 ("esp4: Avoid skb_cow_data whenever possible")
    Fixes: 03e2a30f6a27 ("esp6: Avoid skb_cow_data whenever possible")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4788d7d6ffe5225d9e052d38cf5523888e877a43
Author: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
Date:   Fri Jan 8 09:58:39 2021 +0000

    rndis_host: set proper input size for OID_GEN_PHYSICAL_MEDIUM request
    
    [ Upstream commit e56b3d94d939f52d46209b9e1b6700c5bfff3123 ]
    
    MSFT ActiveSync implementation requires that the size of the response for
    incoming query is to be provided in the request input length. Failure to
    set the input size proper results in failed request transfer, where the
    ActiveSync counterpart reports the NDIS_STATUS_INVALID_LENGTH (0xC0010014L)
    error.
    
    Set the input size for OID_GEN_PHYSICAL_MEDIUM query to the expected size
    of the response in order for the ActiveSync to properly respond to the
    request.
    
    Fixes: 039ee17d1baa ("rndis_host: Add RNDIS physical medium checking into generic_rndis_bind()")
    Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
    Link: https://lore.kernel.org/r/20210108095839.3335-1-andrey.zhizhikin@leica-geosystems.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70a8819b4a26e229d2808f1b63fd4b5932ac525d
Author: Manish Chopra <manishc@marvell.com>
Date:   Thu Jan 7 02:15:20 2021 -0800

    netxen_nic: fix MSI/MSI-x interrupts
    
    [ Upstream commit a2bc221b972db91e4be1970e776e98f16aa87904 ]
    
    For all PCI functions on the netxen_nic adapter, interrupt
    mode (INTx or MSI) configuration is dependent on what has
    been configured by the PCI function zero in the shared
    interrupt register, as these adapters do not support mixed
    mode interrupts among the functions of a given adapter.
    
    Logic for setting MSI/MSI-x interrupt mode in the shared interrupt
    register based on PCI function id zero check is not appropriate for
    all family of netxen adapters, as for some of the netxen family
    adapters PCI function zero is not really meant to be probed/loaded
    in the host but rather just act as a management function on the device,
    which caused all the other PCI functions on the adapter to always use
    legacy interrupt (INTx) mode instead of choosing MSI/MSI-x interrupt mode.
    
    This patch replaces that check with port number so that for all
    type of adapters driver attempts for MSI/MSI-x interrupt modes.
    
    Fixes: b37eb210c076 ("netxen_nic: Avoid mixed mode interrupts")
    Signed-off-by: Manish Chopra <manishc@marvell.com>
    Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
    Link: https://lore.kernel.org/r/20210107101520.6735-1-manishc@marvell.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f60f9d1e6182d9440614c13cdf6106e2d470f89
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Mon Jan 11 16:01:29 2021 -0500

    nfsd4: readdirplus shouldn't return parent of export
    
    commit 51b2ee7d006a736a9126e8111d1f24e4fd0afaa6 upstream.
    
    If you export a subdirectory of a filesystem, a READDIRPLUS on the root
    of that export will return the filehandle of the parent with the ".."
    entry.
    
    The filehandle is optional, so let's just not return the filehandle for
    ".." if we're at the root of an export.
    
    Note that once the client learns one filehandle outside of the export,
    they can trivially access the rest of the export using further lookups.
    
    However, it is also not very difficult to guess filehandles outside of
    the export.  So exporting a subdirectory of a filesystem should
    considered equivalent to providing access to the entire filesystem.  To
    avoid confusion, we recommend only exporting entire filesystems.
    
    Reported-by: Youjipeng <wangzhibei1999@gmail.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83bd727805e5dea4d4b67a9857f7db330c837e92
Author: Hamish Martin <hamish.martin@alliedtelesis.co.nz>
Date:   Fri Sep 11 09:25:12 2020 +1200

    usb: ohci: Make distrust_firmware param default to false
    
    commit c4005a8f65edc55fb1700dfc5c1c3dc58be80209 upstream.
    
    The 'distrust_firmware' module parameter dates from 2004 and the USB
    subsystem is a lot more mature and reliable now than it was then.
    Alter the default to false now.
    
    Suggested-by: Alan Stern <stern@rowland.harvard.edu>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Hamish Martin <hamish.martin@alliedtelesis.co.nz>
    Link: https://lore.kernel.org/r/20200910212512.16670-2-hamish.martin@alliedtelesis.co.nz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae4791392639cba8a9a67653914ea2204c0b8680
Author: Jesper Dangaard Brouer <brouer@redhat.com>
Date:   Fri Jan 8 12:44:33 2021 +0100

    netfilter: conntrack: fix reading nf_conntrack_buckets
    
    commit f6351c3f1c27c80535d76cac2299aec44c36291e upstream.
    
    The old way of changing the conntrack hashsize runtime was through changing
    the module param via file /sys/module/nf_conntrack/parameters/hashsize. This
    was extended to sysctl change in commit 3183ab8997a4 ("netfilter: conntrack:
    allow increasing bucket size via sysctl too").
    
    The commit introduced second "user" variable nf_conntrack_htable_size_user
    which shadow actual variable nf_conntrack_htable_size. When hashsize is
    changed via module param this "user" variable isn't updated. This results in
    sysctl net/netfilter/nf_conntrack_buckets shows the wrong value when users
    update via the old way.
    
    This patch fix the issue by always updating "user" variable when reading the
    proc file. This will take care of changes to the actual variable without
    sysctl need to be aware.
    
    Fixes: 3183ab8997a4 ("netfilter: conntrack: allow increasing bucket size via sysctl too")
    Reported-by: Yoel Caspersen <yoel@kviknet.dk>
    Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92f72f2c8ef1dcaeefd32efb60788de5b54ab4f2
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Jan 11 14:02:50 2021 +0100

    ALSA: fireface: Fix integer overflow in transmit_midi_msg()
    
    commit e7c22eeaff8565d9a8374f320238c251ca31480b upstream.
    
    As snd_ff.rx_bytes[] is unsigned int, and NSEC_PER_SEC is 1000000000L,
    the second multiplication in
    
        ff->rx_bytes[port] * 8 * NSEC_PER_SEC / 31250
    
    always overflows on 32-bit platforms, truncating the result.  Fix this
    by precalculating "NSEC_PER_SEC / 31250", which is an integer constant.
    
    Note that this assumes ff->rx_bytes[port] <= 16777.
    
    Fixes: 19174295788de77d ("ALSA: fireface: add transaction support")
    Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/20210111130251.361335-2-geert+renesas@glider.be
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 775f1efa1211dfcb3633db73a5e9e1a42954ce95
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Jan 11 14:02:51 2021 +0100

    ALSA: firewire-tascam: Fix integer overflow in midi_port_work()
    
    commit 9f65df9c589f249435255da37a5dd11f1bc86f4d upstream.
    
    As snd_fw_async_midi_port.consume_bytes is unsigned int, and
    NSEC_PER_SEC is 1000000000L, the second multiplication in
    
        port->consume_bytes * 8 * NSEC_PER_SEC / 31250
    
    always overflows on 32-bit platforms, truncating the result.  Fix this
    by precalculating "NSEC_PER_SEC / 31250", which is an integer constant.
    
    Note that this assumes port->consume_bytes <= 16777.
    
    Fixes: 531f471834227d03 ("ALSA: firewire-lib/firewire-tascam: localize async midi port")
    Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/20210111130251.361335-3-geert+renesas@glider.be
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9189a71746ecbd842246c88a9404f211984d7bb9
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Wed Jan 6 18:19:05 2021 -0500

    dm: eliminate potential source of excessive kernel log noise
    
    commit 0378c625afe80eb3f212adae42cc33c9f6f31abf upstream.
    
    There wasn't ever a real need to log an error in the kernel log for
    ioctls issued with insufficient permissions. Simply return an error
    and if an admin/user is sufficiently motivated they can enable DM's
    dynamic debugging to see an explanation for why the ioctls were
    disallowed.
    
    Reported-by: Nir Soffer <nsoffer@redhat.com>
    Fixes: e980f62353c6 ("dm: don't allow ioctls to targets that don't map to whole devices")
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7ee3b992a46d04d024b3a5b5f230b847e9a3123
Author: j.nixdorf@avm.de <j.nixdorf@avm.de>
Date:   Tue Jan 5 15:17:01 2021 +0100

    net: sunrpc: interpret the return value of kstrtou32 correctly
    
    commit 86b53fbf08f48d353a86a06aef537e78e82ba721 upstream.
    
    A return value of 0 means success. This is documented in lib/kstrtox.c.
    
    This was found by trying to mount an NFS share from a link-local IPv6
    address with the interface specified by its index:
    
      mount("[fe80::1%1]:/srv/nfs", "/mnt", "nfs", 0, "nolock,addr=fe80::1%1")
    
    Before this commit this failed with EINVAL and also caused the following
    message in dmesg:
    
      [...] NFS: bad IP address specified: addr=fe80::1%1
    
    The syscall using the same address based on the interface name instead
    of its index succeeds.
    
    Credits for this patch go to my colleague Christian Speich, who traced
    the origin of this bug to this line of code.
    
    Signed-off-by: Johannes Nixdorf <j.nixdorf@avm.de>
    Fixes: 00cfaa943ec3 ("replace strict_strto calls")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d4d46d0193425b0dd3c5794f86a12b236ff0bc9
Author: Jann Horn <jannh@google.com>
Date:   Tue Jan 12 15:49:04 2021 -0800

    mm, slub: consider rest of partial list if acquire_slab() fails
    
    commit 8ff60eb052eeba95cfb3efe16b08c9199f8121cf upstream.
    
    acquire_slab() fails if there is contention on the freelist of the page
    (probably because some other CPU is concurrently freeing an object from
    the page).  In that case, it might make sense to look for a different page
    (since there might be more remote frees to the page from other CPUs, and
    we don't want contention on struct page).
    
    However, the current code accidentally stops looking at the partial list
    completely in that case.  Especially on kernels without CONFIG_NUMA set,
    this means that get_partial() fails and new_slab_objects() falls back to
    new_slab(), allocating new pages.  This could lead to an unnecessary
    increase in memory fragmentation.
    
    Link: https://lkml.kernel.org/r/20201228130853.1871516-1-jannh@google.com
    Fixes: 7ced37197196 ("slub: Acquire_slab() avoid loop")
    Signed-off-by: Jann Horn <jannh@google.com>
    Acked-by: David Rientjes <rientjes@google.com>
    Acked-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 102f2a4047386f960ad2fdd1cc8760f71f969bbf
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Sat Dec 26 15:42:48 2020 +0800

    RDMA/usnic: Fix memleak in find_free_vf_and_create_qp_grp
    
    commit a306aba9c8d869b1fdfc8ad9237f1ed718ea55e6 upstream.
    
    If usnic_ib_qp_grp_create() fails at the first call, dev_list
    will not be freed on error, which leads to memleak.
    
    Fixes: e3cf00d0a87f ("IB/usnic: Add Cisco VIC low-level hardware driver")
    Link: https://lore.kernel.org/r/20201226074248.2893-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9dd21048ad50e57a862aa4ba8796063041379bec
Author: Jan Kara <jack@suse.cz>
Date:   Wed Dec 16 11:18:43 2020 +0100

    ext4: fix superblock checksum failure when setting password salt
    
    commit dfd56c2c0c0dbb11be939b804ddc8d5395ab3432 upstream.
    
    When setting password salt in the superblock, we forget to recompute the
    superblock checksum so it will not match until the next superblock
    modification which recomputes the checksum. Fix it.
    
    CC: Michael Halcrow <mhalcrow@google.com>
    Reported-by: Andreas Dilger <adilger@dilger.ca>
    Fixes: 9bd8212f981e ("ext4 crypto: add encryption policy and password salt support")
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20201216101844.22917-8-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d00e517fa8dfe5509dfb82c656b12cd13dca1a2e
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Sun Jan 10 15:58:08 2021 -0500

    NFS: nfs_igrab_and_active must first reference the superblock
    
    commit 896567ee7f17a8a736cda8a28cc987228410a2ac upstream.
    
    Before referencing the inode, we must ensure that the superblock can be
    referenced. Otherwise, we can end up with iput() calling superblock
    operations that are no longer valid or accessible.
    
    Fixes: ea7c38fef0b7 ("NFSv4: Ensure we reference the inode for return-on-close in delegreturn")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc04f6f240aa8c86389b2982fbaef8c7d6b3c119
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Mon Jan 4 13:35:46 2021 -0500

    pNFS: Mark layout for return if return-on-close was not sent
    
    commit 67bbceedc9bb8ad48993a8bd6486054756d711f4 upstream.
    
    If the layout return-on-close failed because the layoutreturn was never
    sent, then we should mark the layout for return again.
    
    Fixes: 9c47b18cf722 ("pNFS: Ensure we do clear the return-on-close layout stateid on fatal errors")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 905e5e439fb533ccb03958716e9e8697cf02e641
Author: Dave Wysochanski <dwysocha@redhat.com>
Date:   Fri Dec 11 05:12:51 2020 -0500

    NFS4: Fix use-after-free in trace_event_raw_event_nfs4_set_lock
    
    commit 3d1a90ab0ed93362ec8ac85cf291243c87260c21 upstream.
    
    It is only safe to call the tracepoint before rpc_put_task() because
    'data' is freed inside nfs4_lock_release (rpc_release).
    
    Fixes: 48c9579a1afe ("Adding stateid information to tracepoints")
    Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b972cda608f5fd3db77e05f3a1287cdcd7d8b21
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Dec 11 13:06:52 2020 +0300

    ASoC: Intel: fix error code cnl_set_dsp_D0()
    
    commit f373a811fd9a69fc8bafb9bcb41d2cfa36c62665 upstream.
    
    Return -ETIMEDOUT if the dsp boot times out instead of returning
    success.
    
    Fixes: cb6a55284629 ("ASoC: Intel: cnl: Add sst library functions for cnl platform")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
    Link: https://lore.kernel.org/r/X9NEvCzuN+IObnTN@mwanda
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f121a8d64753b3a2d51a97e9c345668feff76f8
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Jan 5 14:43:46 2021 -0500

    dump_common_audit_data(): fix racy accesses to ->d_name
    
    commit d36a1dd9f77ae1e72da48f4123ed35627848507d upstream.
    
    We are not guaranteed the locking environment that would prevent
    dentry getting renamed right under us.  And it's possible for
    old long name to be freed after rename, leading to UAF here.
    
    Cc: stable@kernel.org # v2.6.2+
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00b646138a9a0771c8806f1c61a8d5c58d53bade
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Dec 30 16:20:05 2020 +0100

    ARM: picoxcell: fix missing interrupt-parent properties
    
    [ Upstream commit bac717171971176b78c72d15a8b6961764ab197f ]
    
    dtc points out that the interrupts for some devices are not parsable:
    
    picoxcell-pc3x2.dtsi:45.19-49.5: Warning (interrupts_property): /paxi/gem@30000: Missing interrupt-parent
    picoxcell-pc3x2.dtsi:51.21-55.5: Warning (interrupts_property): /paxi/dmac@40000: Missing interrupt-parent
    picoxcell-pc3x2.dtsi:57.21-61.5: Warning (interrupts_property): /paxi/dmac@50000: Missing interrupt-parent
    picoxcell-pc3x2.dtsi:233.21-237.5: Warning (interrupts_property): /rwid-axi/axi2pico@c0000000: Missing interrupt-parent
    
    There are two VIC instances, so it's not clear which one needs to be
    used. I found the BSP sources that reference VIC0, so use that:
    
    https://github.com/r1mikey/meta-picoxcell/blob/master/recipes-kernel/linux/linux-picochip-3.0/0001-picoxcell-support-for-Picochip-picoXcell-SoC.patch
    
    Acked-by: Jamie Iles <jamie@jamieiles.com>
    Link: https://lore.kernel.org/r/20201230152010.3914962-1-arnd@kernel.org'
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da7b95a233c5935995b00827958a5417f19fd049
Author: Shawn Guo <shawn.guo@linaro.org>
Date:   Thu Dec 31 19:35:25 2020 +0800

    ACPI: scan: add stub acpi_create_platform_device() for !CONFIG_ACPI
    
    [ Upstream commit ee61cfd955a64a58ed35cbcfc54068fcbd486945 ]
    
    It adds a stub acpi_create_platform_device() for !CONFIG_ACPI build, so
    that caller doesn't have to deal with !CONFIG_ACPI build issue.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 29ef11af20cb5eb530420692c3883e464f69947b
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Tue Jan 5 20:15:15 2021 +1100

    net: ethernet: fs_enet: Add missing MODULE_LICENSE
    
    [ Upstream commit 445c6198fe7be03b7d38e66fe8d4b3187bc251d4 ]
    
    Since commit 1d6cd3929360 ("modpost: turn missing MODULE_LICENSE()
    into error") the ppc32_allmodconfig build fails with:
    
      ERROR: modpost: missing MODULE_LICENSE() in drivers/net/ethernet/freescale/fs_enet/mii-fec.o
      ERROR: modpost: missing MODULE_LICENSE() in drivers/net/ethernet/freescale/fs_enet/mii-bitbang.o
    
    Add the missing MODULE_LICENSEs to fix the build. Both files include a
    copyright header indicating they are GPL v2.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 01a2660867d53064067d6a0eafcb5c123794f816
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 22:36:22 2021 +0100

    misdn: dsp: select CONFIG_BITREVERSE
    
    [ Upstream commit 51049bd903a81307f751babe15a1df8d197884e8 ]
    
    Without this, we run into a link error
    
    arm-linux-gnueabi-ld: drivers/isdn/mISDN/dsp_audio.o: in function `dsp_audio_generate_law_tables':
    (.text+0x30c): undefined reference to `byte_rev_table'
    arm-linux-gnueabi-ld: drivers/isdn/mISDN/dsp_audio.o:(.text+0x5e4): more undefined references to `byte_rev_table' follow
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 28ac2dbbdb8a51aeae2b9e7ec400a8165303e0a8
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Jan 4 19:44:53 2021 -0800

    arch/arc: add copy_user_page() to <asm/page.h> to fix build error on ARC
    
    [ Upstream commit 8a48c0a3360bf2bf4f40c980d0ec216e770e58ee ]
    
    fs/dax.c uses copy_user_page() but ARC does not provide that interface,
    resulting in a build error.
    
    Provide copy_user_page() in <asm/page.h>.
    
    ../fs/dax.c: In function 'copy_cow_page_dax':
    ../fs/dax.c:702:2: error: implicit declaration of function 'copy_user_page'; did you mean 'copy_to_user_page'? [-Werror=implicit-function-declaration]
    
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Vineet Gupta <vgupta@synopsys.com>
    Cc: linux-snps-arc@lists.infradead.org
    Cc: Dan Williams <dan.j.williams@intel.com>
    #Acked-by: Vineet Gupta <vgupta@synopsys.com> # v1
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Jan Kara <jack@suse.cz>
    Cc: linux-fsdevel@vger.kernel.org
    Cc: linux-nvdimm@lists.01.org
    #Reviewed-by: Ira Weiny <ira.weiny@intel.com> # v2
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cc9a54ed4929808e0525ea7d48f7281333d839f4
Author: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Date:   Fri Dec 18 11:55:37 2020 +0100

    ethernet: ucc_geth: fix definition and size of ucc_geth_tx_global_pram
    
    [ Upstream commit 887078de2a23689e29d6fa1b75d7cbc544c280be ]
    
    Table 8-53 in the QUICC Engine Reference manual shows definitions of
    fields up to a size of 192 bytes, not just 128. But in table 8-111,
    one does find the text
    
      Base Address of the Global Transmitter Parameter RAM Page. [...]
      The user needs to allocate 128 bytes for this page. The address must
      be aligned to the page size.
    
    I've checked both rev. 7 (11/2015) and rev. 9 (05/2018) of the manual;
    they both have this inconsistency (and the table numbers are the
    same).
    
    Adding a bit of debug printing, on my board the struct
    ucc_geth_tx_global_pram is allocated at offset 0x880, while
    the (opaque) ucc_geth_thread_data_tx gets allocated immediately
    afterwards, at 0x900. So whatever the engine writes into the thread
    data overlaps with the tail of the global tx pram (and devmem says
    that something does get written during a simple ping).
    
    I haven't observed any failure that could be attributed to this, but
    it seems to be the kind of thing that would be extremely hard to
    debug. So extend the struct definition so that we do allocate 192
    bytes.
    
    Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e462cd9c097e844c20d1bdeb3c5af180c2cbaa78
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Dec 14 10:10:45 2020 +0000

    btrfs: fix transaction leak and crash after RO remount caused by qgroup rescan
    
    [ Upstream commit cb13eea3b49055bd78e6ddf39defd6340f7379fc ]
    
    If we remount a filesystem in RO mode while the qgroup rescan worker is
    running, we can end up having it still running after the remount is done,
    and at unmount time we may end up with an open transaction that ends up
    never getting committed. If that happens we end up with several memory
    leaks and can crash when hardware acceleration is unavailable for crc32c.
    Possibly it can lead to other nasty surprises too, due to use-after-free
    issues.
    
    The following steps explain how the problem happens.
    
    1) We have a filesystem mounted in RW mode and the qgroup rescan worker is
       running;
    
    2) We remount the filesystem in RO mode, and never stop/pause the rescan
       worker, so after the remount the rescan worker is still running. The
       important detail here is that the rescan task is still running after
       the remount operation committed any ongoing transaction through its
       call to btrfs_commit_super();
    
    3) The rescan is still running, and after the remount completed, the
       rescan worker started a transaction, after it finished iterating all
       leaves of the extent tree, to update the qgroup status item in the
       quotas tree. It does not commit the transaction, it only releases its
       handle on the transaction;
    
    4) A filesystem unmount operation starts shortly after;
    
    5) The unmount task, at close_ctree(), stops the transaction kthread,
       which had not had a chance to commit the open transaction since it was
       sleeping and the commit interval (default of 30 seconds) has not yet
       elapsed since the last time it committed a transaction;
    
    6) So after stopping the transaction kthread we still have the transaction
       used to update the qgroup status item open. At close_ctree(), when the
       filesystem is in RO mode and no transaction abort happened (or the
       filesystem is in error mode), we do not expect to have any transaction
       open, so we do not call btrfs_commit_super();
    
    7) We then proceed to destroy the work queues, free the roots and block
       groups, etc. After that we drop the last reference on the btree inode
       by calling iput() on it. Since there are dirty pages for the btree
       inode, corresponding to the COWed extent buffer for the quotas btree,
       btree_write_cache_pages() is invoked to flush those dirty pages. This
       results in creating a bio and submitting it, which makes us end up at
       btrfs_submit_metadata_bio();
    
    8) At btrfs_submit_metadata_bio() we end up at the if-then-else branch
       that calls btrfs_wq_submit_bio(), because check_async_write() returned
       a value of 1. This value of 1 is because we did not have hardware
       acceleration available for crc32c, so BTRFS_FS_CSUM_IMPL_FAST was not
       set in fs_info->flags;
    
    9) Then at btrfs_wq_submit_bio() we call btrfs_queue_work() against the
       workqueue at fs_info->workers, which was already freed before by the
       call to btrfs_stop_all_workers() at close_ctree(). This results in an
       invalid memory access due to a use-after-free, leading to a crash.
    
    When this happens, before the crash there are several warnings triggered,
    since we have reserved metadata space in a block group, the delayed refs
    reservation, etc:
    
      ------------[ cut here ]------------
      WARNING: CPU: 4 PID: 1729896 at fs/btrfs/block-group.c:125 btrfs_put_block_group+0x63/0xa0 [btrfs]
      Modules linked in: btrfs dm_snapshot dm_thin_pool (...)
      CPU: 4 PID: 1729896 Comm: umount Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      RIP: 0010:btrfs_put_block_group+0x63/0xa0 [btrfs]
      Code: f0 01 00 00 48 39 c2 75 (...)
      RSP: 0018:ffffb270826bbdd8 EFLAGS: 00010206
      RAX: 0000000000000001 RBX: ffff947ed73e4000 RCX: ffff947ebc8b29c8
      RDX: 0000000000000001 RSI: ffffffffc0b150a0 RDI: ffff947ebc8b2800
      RBP: ffff947ebc8b2800 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000001 R12: ffff947ed73e4110
      R13: ffff947ed73e4160 R14: ffff947ebc8b2988 R15: dead000000000100
      FS:  00007f15edfea840(0000) GS:ffff9481ad600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f37e2893320 CR3: 0000000138f68001 CR4: 00000000003706e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       btrfs_free_block_groups+0x17f/0x2f0 [btrfs]
       close_ctree+0x2ba/0x2fa [btrfs]
       generic_shutdown_super+0x6c/0x100
       kill_anon_super+0x14/0x30
       btrfs_kill_super+0x12/0x20 [btrfs]
       deactivate_locked_super+0x31/0x70
       cleanup_mnt+0x100/0x160
       task_work_run+0x68/0xb0
       exit_to_user_mode_prepare+0x1bb/0x1c0
       syscall_exit_to_user_mode+0x4b/0x260
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f15ee221ee7
      Code: ff 0b 00 f7 d8 64 89 01 48 (...)
      RSP: 002b:00007ffe9470f0f8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
      RAX: 0000000000000000 RBX: 00007f15ee347264 RCX: 00007f15ee221ee7
      RDX: ffffffffffffff78 RSI: 0000000000000000 RDI: 000056169701d000
      RBP: 0000561697018a30 R08: 0000000000000000 R09: 00007f15ee2e2be0
      R10: 000056169701efe0 R11: 0000000000000246 R12: 0000000000000000
      R13: 000056169701d000 R14: 0000561697018b40 R15: 0000561697018c60
      irq event stamp: 0
      hardirqs last  enabled at (0): [<0000000000000000>] 0x0
      hardirqs last disabled at (0): [<ffffffff8bcae560>] copy_process+0x8a0/0x1d70
      softirqs last  enabled at (0): [<ffffffff8bcae560>] copy_process+0x8a0/0x1d70
      softirqs last disabled at (0): [<0000000000000000>] 0x0
      ---[ end trace dd74718fef1ed5c6 ]---
      ------------[ cut here ]------------
      WARNING: CPU: 2 PID: 1729896 at fs/btrfs/block-rsv.c:459 btrfs_release_global_block_rsv+0x70/0xc0 [btrfs]
      Modules linked in: btrfs dm_snapshot dm_thin_pool (...)
      CPU: 2 PID: 1729896 Comm: umount Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      RIP: 0010:btrfs_release_global_block_rsv+0x70/0xc0 [btrfs]
      Code: 48 83 bb b0 03 00 00 00 (...)
      RSP: 0018:ffffb270826bbdd8 EFLAGS: 00010206
      RAX: 000000000033c000 RBX: ffff947ed73e4000 RCX: 0000000000000000
      RDX: 0000000000000001 RSI: ffffffffc0b0d8c1 RDI: 00000000ffffffff
      RBP: ffff947ebc8b7000 R08: 0000000000000001 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000001 R12: ffff947ed73e4110
      R13: ffff947ed73e5278 R14: dead000000000122 R15: dead000000000100
      FS:  00007f15edfea840(0000) GS:ffff9481aca00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000561a79f76e20 CR3: 0000000138f68006 CR4: 00000000003706e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       btrfs_free_block_groups+0x24c/0x2f0 [btrfs]
       close_ctree+0x2ba/0x2fa [btrfs]
       generic_shutdown_super+0x6c/0x100
       kill_anon_super+0x14/0x30
       btrfs_kill_super+0x12/0x20 [btrfs]
       deactivate_locked_super+0x31/0x70
       cleanup_mnt+0x100/0x160
       task_work_run+0x68/0xb0
       exit_to_user_mode_prepare+0x1bb/0x1c0
       syscall_exit_to_user_mode+0x4b/0x260
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f15ee221ee7
      Code: ff 0b 00 f7 d8 64 89 01 (...)
      RSP: 002b:00007ffe9470f0f8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
      RAX: 0000000000000000 RBX: 00007f15ee347264 RCX: 00007f15ee221ee7
      RDX: ffffffffffffff78 RSI: 0000000000000000 RDI: 000056169701d000
      RBP: 0000561697018a30 R08: 0000000000000000 R09: 00007f15ee2e2be0
      R10: 000056169701efe0 R11: 0000000000000246 R12: 0000000000000000
      R13: 000056169701d000 R14: 0000561697018b40 R15: 0000561697018c60
      irq event stamp: 0
      hardirqs last  enabled at (0): [<0000000000000000>] 0x0
      hardirqs last disabled at (0): [<ffffffff8bcae560>] copy_process+0x8a0/0x1d70
      softirqs last  enabled at (0): [<ffffffff8bcae560>] copy_process+0x8a0/0x1d70
      softirqs last disabled at (0): [<0000000000000000>] 0x0
      ---[ end trace dd74718fef1ed5c7 ]---
      ------------[ cut here ]------------
      WARNING: CPU: 2 PID: 1729896 at fs/btrfs/block-group.c:3377 btrfs_free_block_groups+0x25d/0x2f0 [btrfs]
      Modules linked in: btrfs dm_snapshot dm_thin_pool (...)
      CPU: 5 PID: 1729896 Comm: umount Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      RIP: 0010:btrfs_free_block_groups+0x25d/0x2f0 [btrfs]
      Code: ad de 49 be 22 01 00 (...)
      RSP: 0018:ffffb270826bbde8 EFLAGS: 00010206
      RAX: ffff947ebeae1d08 RBX: ffff947ed73e4000 RCX: 0000000000000000
      RDX: 0000000000000001 RSI: ffff947e9d823ae8 RDI: 0000000000000246
      RBP: ffff947ebeae1d08 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000001 R12: ffff947ebeae1c00
      R13: ffff947ed73e5278 R14: dead000000000122 R15: dead000000000100
      FS:  00007f15edfea840(0000) GS:ffff9481ad200000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f1475d98ea8 CR3: 0000000138f68005 CR4: 00000000003706e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       close_ctree+0x2ba/0x2fa [btrfs]
       generic_shutdown_super+0x6c/0x100
       kill_anon_super+0x14/0x30
       btrfs_kill_super+0x12/0x20 [btrfs]
       deactivate_locked_super+0x31/0x70
       cleanup_mnt+0x100/0x160
       task_work_run+0x68/0xb0
       exit_to_user_mode_prepare+0x1bb/0x1c0
       syscall_exit_to_user_mode+0x4b/0x260
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f15ee221ee7
      Code: ff 0b 00 f7 d8 64 89 (...)
      RSP: 002b:00007ffe9470f0f8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
      RAX: 0000000000000000 RBX: 00007f15ee347264 RCX: 00007f15ee221ee7
      RDX: ffffffffffffff78 RSI: 0000000000000000 RDI: 000056169701d000
      RBP: 0000561697018a30 R08: 0000000000000000 R09: 00007f15ee2e2be0
      R10: 000056169701efe0 R11: 0000000000000246 R12: 0000000000000000
      R13: 000056169701d000 R14: 0000561697018b40 R15: 0000561697018c60
      irq event stamp: 0
      hardirqs last  enabled at (0): [<0000000000000000>] 0x0
      hardirqs last disabled at (0): [<ffffffff8bcae560>] copy_process+0x8a0/0x1d70
      softirqs last  enabled at (0): [<ffffffff8bcae560>] copy_process+0x8a0/0x1d70
      softirqs last disabled at (0): [<0000000000000000>] 0x0
      ---[ end trace dd74718fef1ed5c8 ]---
      BTRFS info (device sdc): space_info 4 has 268238848 free, is not full
      BTRFS info (device sdc): space_info total=268435456, used=114688, pinned=0, reserved=16384, may_use=0, readonly=65536
      BTRFS info (device sdc): global_block_rsv: size 0 reserved 0
      BTRFS info (device sdc): trans_block_rsv: size 0 reserved 0
      BTRFS info (device sdc): chunk_block_rsv: size 0 reserved 0
      BTRFS info (device sdc): delayed_block_rsv: size 0 reserved 0
      BTRFS info (device sdc): delayed_refs_rsv: size 524288 reserved 0
    
    And the crash, which only happens when we do not have crc32c hardware
    acceleration, produces the following trace immediately after those
    warnings:
    
      stack segment: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC PTI
      CPU: 2 PID: 1749129 Comm: umount Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      RIP: 0010:btrfs_queue_work+0x36/0x190 [btrfs]
      Code: 54 55 53 48 89 f3 (...)
      RSP: 0018:ffffb27082443ae8 EFLAGS: 00010282
      RAX: 0000000000000004 RBX: ffff94810ee9ad90 RCX: 0000000000000000
      RDX: 0000000000000001 RSI: ffff94810ee9ad90 RDI: ffff947ed8ee75a0
      RBP: a56b6b6b6b6b6b6b R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000007 R11: 0000000000000001 R12: ffff947fa9b435a8
      R13: ffff94810ee9ad90 R14: 0000000000000000 R15: ffff947e93dc0000
      FS:  00007f3cfe974840(0000) GS:ffff9481ac600000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f1b42995a70 CR3: 0000000127638003 CR4: 00000000003706e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       btrfs_wq_submit_bio+0xb3/0xd0 [btrfs]
       btrfs_submit_metadata_bio+0x44/0xc0 [btrfs]
       submit_one_bio+0x61/0x70 [btrfs]
       btree_write_cache_pages+0x414/0x450 [btrfs]
       ? kobject_put+0x9a/0x1d0
       ? trace_hardirqs_on+0x1b/0xf0
       ? _raw_spin_unlock_irqrestore+0x3c/0x60
       ? free_debug_processing+0x1e1/0x2b0
       do_writepages+0x43/0xe0
       ? lock_acquired+0x199/0x490
       __writeback_single_inode+0x59/0x650
       writeback_single_inode+0xaf/0x120
       write_inode_now+0x94/0xd0
       iput+0x187/0x2b0
       close_ctree+0x2c6/0x2fa [btrfs]
       generic_shutdown_super+0x6c/0x100
       kill_anon_super+0x14/0x30
       btrfs_kill_super+0x12/0x20 [btrfs]
       deactivate_locked_super+0x31/0x70
       cleanup_mnt+0x100/0x160
       task_work_run+0x68/0xb0
       exit_to_user_mode_prepare+0x1bb/0x1c0
       syscall_exit_to_user_mode+0x4b/0x260
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f3cfebabee7
      Code: ff 0b 00 f7 d8 64 89 01 (...)
      RSP: 002b:00007ffc9c9a05f8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
      RAX: 0000000000000000 RBX: 00007f3cfecd1264 RCX: 00007f3cfebabee7
      RDX: ffffffffffffff78 RSI: 0000000000000000 RDI: 0000562b6b478000
      RBP: 0000562b6b473a30 R08: 0000000000000000 R09: 00007f3cfec6cbe0
      R10: 0000562b6b479fe0 R11: 0000000000000246 R12: 0000000000000000
      R13: 0000562b6b478000 R14: 0000562b6b473b40 R15: 0000562b6b473c60
      Modules linked in: btrfs dm_snapshot dm_thin_pool (...)
      ---[ end trace dd74718fef1ed5cc ]---
    
    Finally when we remove the btrfs module (rmmod btrfs), there are several
    warnings about objects that were allocated from our slabs but were never
    freed, consequence of the transaction that was never committed and got
    leaked:
    
      =============================================================================
      BUG btrfs_delayed_ref_head (Tainted: G    B   W        ): Objects remaining in btrfs_delayed_ref_head on __kmem_cache_shutdown()
      -----------------------------------------------------------------------------
    
      INFO: Slab 0x0000000094c2ae56 objects=24 used=2 fp=0x000000002bfa2521 flags=0x17fffc000010200
      CPU: 5 PID: 1729921 Comm: rmmod Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      Call Trace:
       dump_stack+0x8d/0xb5
       slab_err+0xb7/0xdc
       ? lock_acquired+0x199/0x490
       __kmem_cache_shutdown+0x1ac/0x3c0
       ? lock_release+0x20e/0x4c0
       kmem_cache_destroy+0x55/0x120
       btrfs_delayed_ref_exit+0x11/0x35 [btrfs]
       exit_btrfs_fs+0xa/0x59 [btrfs]
       __x64_sys_delete_module+0x194/0x260
       ? fpregs_assert_state_consistent+0x1e/0x40
       ? exit_to_user_mode_prepare+0x55/0x1c0
       ? trace_hardirqs_on+0x1b/0xf0
       do_syscall_64+0x33/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f693e305897
      Code: 73 01 c3 48 8b 0d f9 f5 (...)
      RSP: 002b:00007ffcf73eb508 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
      RAX: ffffffffffffffda RBX: 0000559df504f760 RCX: 00007f693e305897
      RDX: 000000000000000a RSI: 0000000000000800 RDI: 0000559df504f7c8
      RBP: 00007ffcf73eb568 R08: 0000000000000000 R09: 0000000000000000
      R10: 00007f693e378ac0 R11: 0000000000000206 R12: 00007ffcf73eb740
      R13: 00007ffcf73ec5a6 R14: 0000559df504f2a0 R15: 0000559df504f760
      INFO: Object 0x0000000050cbdd61 @offset=12104
      INFO: Allocated in btrfs_add_delayed_tree_ref+0xbb/0x480 [btrfs] age=1894 cpu=6 pid=1729873
            __slab_alloc.isra.0+0x109/0x1c0
            kmem_cache_alloc+0x7bb/0x830
            btrfs_add_delayed_tree_ref+0xbb/0x480 [btrfs]
            btrfs_free_tree_block+0x128/0x360 [btrfs]
            __btrfs_cow_block+0x489/0x5f0 [btrfs]
            btrfs_cow_block+0xf7/0x220 [btrfs]
            btrfs_search_slot+0x62a/0xc40 [btrfs]
            btrfs_del_orphan_item+0x65/0xd0 [btrfs]
            btrfs_find_orphan_roots+0x1bf/0x200 [btrfs]
            open_ctree+0x125a/0x18a0 [btrfs]
            btrfs_mount_root.cold+0x13/0xed [btrfs]
            legacy_get_tree+0x30/0x60
            vfs_get_tree+0x28/0xe0
            fc_mount+0xe/0x40
            vfs_kern_mount.part.0+0x71/0x90
            btrfs_mount+0x13b/0x3e0 [btrfs]
      INFO: Freed in __btrfs_run_delayed_refs+0x1117/0x1290 [btrfs] age=4292 cpu=2 pid=1729526
            kmem_cache_free+0x34c/0x3c0
            __btrfs_run_delayed_refs+0x1117/0x1290 [btrfs]
            btrfs_run_delayed_refs+0x81/0x210 [btrfs]
            commit_cowonly_roots+0xfb/0x300 [btrfs]
            btrfs_commit_transaction+0x367/0xc40 [btrfs]
            sync_filesystem+0x74/0x90
            generic_shutdown_super+0x22/0x100
            kill_anon_super+0x14/0x30
            btrfs_kill_super+0x12/0x20 [btrfs]
            deactivate_locked_super+0x31/0x70
            cleanup_mnt+0x100/0x160
            task_work_run+0x68/0xb0
            exit_to_user_mode_prepare+0x1bb/0x1c0
            syscall_exit_to_user_mode+0x4b/0x260
            entry_SYSCALL_64_after_hwframe+0x44/0xa9
      INFO: Object 0x0000000086e9b0ff @offset=12776
      INFO: Allocated in btrfs_add_delayed_tree_ref+0xbb/0x480 [btrfs] age=1900 cpu=6 pid=1729873
            __slab_alloc.isra.0+0x109/0x1c0
            kmem_cache_alloc+0x7bb/0x830
            btrfs_add_delayed_tree_ref+0xbb/0x480 [btrfs]
            btrfs_alloc_tree_block+0x2bf/0x360 [btrfs]
            alloc_tree_block_no_bg_flush+0x4f/0x60 [btrfs]
            __btrfs_cow_block+0x12d/0x5f0 [btrfs]
            btrfs_cow_block+0xf7/0x220 [btrfs]
            btrfs_search_slot+0x62a/0xc40 [btrfs]
            btrfs_del_orphan_item+0x65/0xd0 [btrfs]
            btrfs_find_orphan_roots+0x1bf/0x200 [btrfs]
            open_ctree+0x125a/0x18a0 [btrfs]
            btrfs_mount_root.cold+0x13/0xed [btrfs]
            legacy_get_tree+0x30/0x60
            vfs_get_tree+0x28/0xe0
            fc_mount+0xe/0x40
            vfs_kern_mount.part.0+0x71/0x90
      INFO: Freed in __btrfs_run_delayed_refs+0x1117/0x1290 [btrfs] age=3141 cpu=6 pid=1729803
            kmem_cache_free+0x34c/0x3c0
            __btrfs_run_delayed_refs+0x1117/0x1290 [btrfs]
            btrfs_run_delayed_refs+0x81/0x210 [btrfs]
            btrfs_write_dirty_block_groups+0x17d/0x3d0 [btrfs]
            commit_cowonly_roots+0x248/0x300 [btrfs]
            btrfs_commit_transaction+0x367/0xc40 [btrfs]
            close_ctree+0x113/0x2fa [btrfs]
            generic_shutdown_super+0x6c/0x100
            kill_anon_super+0x14/0x30
            btrfs_kill_super+0x12/0x20 [btrfs]
            deactivate_locked_super+0x31/0x70
            cleanup_mnt+0x100/0x160
            task_work_run+0x68/0xb0
            exit_to_user_mode_prepare+0x1bb/0x1c0
            syscall_exit_to_user_mode+0x4b/0x260
            entry_SYSCALL_64_after_hwframe+0x44/0xa9
      kmem_cache_destroy btrfs_delayed_ref_head: Slab cache still has objects
      CPU: 5 PID: 1729921 Comm: rmmod Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      Call Trace:
       dump_stack+0x8d/0xb5
       kmem_cache_destroy+0x119/0x120
       btrfs_delayed_ref_exit+0x11/0x35 [btrfs]
       exit_btrfs_fs+0xa/0x59 [btrfs]
       __x64_sys_delete_module+0x194/0x260
       ? fpregs_assert_state_consistent+0x1e/0x40
       ? exit_to_user_mode_prepare+0x55/0x1c0
       ? trace_hardirqs_on+0x1b/0xf0
       do_syscall_64+0x33/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f693e305897
      Code: 73 01 c3 48 8b 0d f9 f5 0b (...)
      RSP: 002b:00007ffcf73eb508 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
      RAX: ffffffffffffffda RBX: 0000559df504f760 RCX: 00007f693e305897
      RDX: 000000000000000a RSI: 0000000000000800 RDI: 0000559df504f7c8
      RBP: 00007ffcf73eb568 R08: 0000000000000000 R09: 0000000000000000
      R10: 00007f693e378ac0 R11: 0000000000000206 R12: 00007ffcf73eb740
      R13: 00007ffcf73ec5a6 R14: 0000559df504f2a0 R15: 0000559df504f760
      =============================================================================
      BUG btrfs_delayed_tree_ref (Tainted: G    B   W        ): Objects remaining in btrfs_delayed_tree_ref on __kmem_cache_shutdown()
      -----------------------------------------------------------------------------
    
      INFO: Slab 0x0000000011f78dc0 objects=37 used=2 fp=0x0000000032d55d91 flags=0x17fffc000010200
      CPU: 3 PID: 1729921 Comm: rmmod Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      Call Trace:
       dump_stack+0x8d/0xb5
       slab_err+0xb7/0xdc
       ? lock_acquired+0x199/0x490
       __kmem_cache_shutdown+0x1ac/0x3c0
       ? lock_release+0x20e/0x4c0
       kmem_cache_destroy+0x55/0x120
       btrfs_delayed_ref_exit+0x1d/0x35 [btrfs]
       exit_btrfs_fs+0xa/0x59 [btrfs]
       __x64_sys_delete_module+0x194/0x260
       ? fpregs_assert_state_consistent+0x1e/0x40
       ? exit_to_user_mode_prepare+0x55/0x1c0
       ? trace_hardirqs_on+0x1b/0xf0
       do_syscall_64+0x33/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f693e305897
      Code: 73 01 c3 48 8b 0d f9 f5 (...)
      RSP: 002b:00007ffcf73eb508 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
      RAX: ffffffffffffffda RBX: 0000559df504f760 RCX: 00007f693e305897
      RDX: 000000000000000a RSI: 0000000000000800 RDI: 0000559df504f7c8
      RBP: 00007ffcf73eb568 R08: 0000000000000000 R09: 0000000000000000
      R10: 00007f693e378ac0 R11: 0000000000000206 R12: 00007ffcf73eb740
      R13: 00007ffcf73ec5a6 R14: 0000559df504f2a0 R15: 0000559df504f760
      INFO: Object 0x000000001a340018 @offset=4408
      INFO: Allocated in btrfs_add_delayed_tree_ref+0x9e/0x480 [btrfs] age=1917 cpu=6 pid=1729873
            __slab_alloc.isra.0+0x109/0x1c0
            kmem_cache_alloc+0x7bb/0x830
            btrfs_add_delayed_tree_ref+0x9e/0x480 [btrfs]
            btrfs_free_tree_block+0x128/0x360 [btrfs]
            __btrfs_cow_block+0x489/0x5f0 [btrfs]
            btrfs_cow_block+0xf7/0x220 [btrfs]
            btrfs_search_slot+0x62a/0xc40 [btrfs]
            btrfs_del_orphan_item+0x65/0xd0 [btrfs]
            btrfs_find_orphan_roots+0x1bf/0x200 [btrfs]
            open_ctree+0x125a/0x18a0 [btrfs]
            btrfs_mount_root.cold+0x13/0xed [btrfs]
            legacy_get_tree+0x30/0x60
            vfs_get_tree+0x28/0xe0
            fc_mount+0xe/0x40
            vfs_kern_mount.part.0+0x71/0x90
            btrfs_mount+0x13b/0x3e0 [btrfs]
      INFO: Freed in __btrfs_run_delayed_refs+0x63d/0x1290 [btrfs] age=4167 cpu=4 pid=1729795
            kmem_cache_free+0x34c/0x3c0
            __btrfs_run_delayed_refs+0x63d/0x1290 [btrfs]
            btrfs_run_delayed_refs+0x81/0x210 [btrfs]
            btrfs_commit_transaction+0x60/0xc40 [btrfs]
            create_subvol+0x56a/0x990 [btrfs]
            btrfs_mksubvol+0x3fb/0x4a0 [btrfs]
            __btrfs_ioctl_snap_create+0x119/0x1a0 [btrfs]
            btrfs_ioctl_snap_create+0x58/0x80 [btrfs]
            btrfs_ioctl+0x1a92/0x36f0 [btrfs]
            __x64_sys_ioctl+0x83/0xb0
            do_syscall_64+0x33/0x80
            entry_SYSCALL_64_after_hwframe+0x44/0xa9
      INFO: Object 0x000000002b46292a @offset=13648
      INFO: Allocated in btrfs_add_delayed_tree_ref+0x9e/0x480 [btrfs] age=1923 cpu=6 pid=1729873
            __slab_alloc.isra.0+0x109/0x1c0
            kmem_cache_alloc+0x7bb/0x830
            btrfs_add_delayed_tree_ref+0x9e/0x480 [btrfs]
            btrfs_alloc_tree_block+0x2bf/0x360 [btrfs]
            alloc_tree_block_no_bg_flush+0x4f/0x60 [btrfs]
            __btrfs_cow_block+0x12d/0x5f0 [btrfs]
            btrfs_cow_block+0xf7/0x220 [btrfs]
            btrfs_search_slot+0x62a/0xc40 [btrfs]
            btrfs_del_orphan_item+0x65/0xd0 [btrfs]
            btrfs_find_orphan_roots+0x1bf/0x200 [btrfs]
            open_ctree+0x125a/0x18a0 [btrfs]
            btrfs_mount_root.cold+0x13/0xed [btrfs]
            legacy_get_tree+0x30/0x60
            vfs_get_tree+0x28/0xe0
            fc_mount+0xe/0x40
            vfs_kern_mount.part.0+0x71/0x90
      INFO: Freed in __btrfs_run_delayed_refs+0x63d/0x1290 [btrfs] age=3164 cpu=6 pid=1729803
            kmem_cache_free+0x34c/0x3c0
            __btrfs_run_delayed_refs+0x63d/0x1290 [btrfs]
            btrfs_run_delayed_refs+0x81/0x210 [btrfs]
            commit_cowonly_roots+0xfb/0x300 [btrfs]
            btrfs_commit_transaction+0x367/0xc40 [btrfs]
            close_ctree+0x113/0x2fa [btrfs]
            generic_shutdown_super+0x6c/0x100
            kill_anon_super+0x14/0x30
            btrfs_kill_super+0x12/0x20 [btrfs]
            deactivate_locked_super+0x31/0x70
            cleanup_mnt+0x100/0x160
            task_work_run+0x68/0xb0
            exit_to_user_mode_prepare+0x1bb/0x1c0
            syscall_exit_to_user_mode+0x4b/0x260
            entry_SYSCALL_64_after_hwframe+0x44/0xa9
      kmem_cache_destroy btrfs_delayed_tree_ref: Slab cache still has objects
      CPU: 5 PID: 1729921 Comm: rmmod Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      Call Trace:
       dump_stack+0x8d/0xb5
       kmem_cache_destroy+0x119/0x120
       btrfs_delayed_ref_exit+0x1d/0x35 [btrfs]
       exit_btrfs_fs+0xa/0x59 [btrfs]
       __x64_sys_delete_module+0x194/0x260
       ? fpregs_assert_state_consistent+0x1e/0x40
       ? exit_to_user_mode_prepare+0x55/0x1c0
       ? trace_hardirqs_on+0x1b/0xf0
       do_syscall_64+0x33/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f693e305897
      Code: 73 01 c3 48 8b 0d f9 f5 (...)
      RSP: 002b:00007ffcf73eb508 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
      RAX: ffffffffffffffda RBX: 0000559df504f760 RCX: 00007f693e305897
      RDX: 000000000000000a RSI: 0000000000000800 RDI: 0000559df504f7c8
      RBP: 00007ffcf73eb568 R08: 0000000000000000 R09: 0000000000000000
      R10: 00007f693e378ac0 R11: 0000000000000206 R12: 00007ffcf73eb740
      R13: 00007ffcf73ec5a6 R14: 0000559df504f2a0 R15: 0000559df504f760
      =============================================================================
      BUG btrfs_delayed_extent_op (Tainted: G    B   W        ): Objects remaining in btrfs_delayed_extent_op on __kmem_cache_shutdown()
      -----------------------------------------------------------------------------
    
      INFO: Slab 0x00000000f145ce2f objects=22 used=1 fp=0x00000000af0f92cf flags=0x17fffc000010200
      CPU: 5 PID: 1729921 Comm: rmmod Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      Call Trace:
       dump_stack+0x8d/0xb5
       slab_err+0xb7/0xdc
       ? lock_acquired+0x199/0x490
       __kmem_cache_shutdown+0x1ac/0x3c0
       ? __mutex_unlock_slowpath+0x45/0x2a0
       kmem_cache_destroy+0x55/0x120
       exit_btrfs_fs+0xa/0x59 [btrfs]
       __x64_sys_delete_module+0x194/0x260
       ? fpregs_assert_state_consistent+0x1e/0x40
       ? exit_to_user_mode_prepare+0x55/0x1c0
       ? trace_hardirqs_on+0x1b/0xf0
       do_syscall_64+0x33/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f693e305897
      Code: 73 01 c3 48 8b 0d f9 f5 (...)
      RSP: 002b:00007ffcf73eb508 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
      RAX: ffffffffffffffda RBX: 0000559df504f760 RCX: 00007f693e305897
      RDX: 000000000000000a RSI: 0000000000000800 RDI: 0000559df504f7c8
      RBP: 00007ffcf73eb568 R08: 0000000000000000 R09: 0000000000000000
      R10: 00007f693e378ac0 R11: 0000000000000206 R12: 00007ffcf73eb740
      R13: 00007ffcf73ec5a6 R14: 0000559df504f2a0 R15: 0000559df504f760
      INFO: Object 0x000000004cf95ea8 @offset=6264
      INFO: Allocated in btrfs_alloc_tree_block+0x1e0/0x360 [btrfs] age=1931 cpu=6 pid=1729873
            __slab_alloc.isra.0+0x109/0x1c0
            kmem_cache_alloc+0x7bb/0x830
            btrfs_alloc_tree_block+0x1e0/0x360 [btrfs]
            alloc_tree_block_no_bg_flush+0x4f/0x60 [btrfs]
            __btrfs_cow_block+0x12d/0x5f0 [btrfs]
            btrfs_cow_block+0xf7/0x220 [btrfs]
            btrfs_search_slot+0x62a/0xc40 [btrfs]
            btrfs_del_orphan_item+0x65/0xd0 [btrfs]
            btrfs_find_orphan_roots+0x1bf/0x200 [btrfs]
            open_ctree+0x125a/0x18a0 [btrfs]
            btrfs_mount_root.cold+0x13/0xed [btrfs]
            legacy_get_tree+0x30/0x60
            vfs_get_tree+0x28/0xe0
            fc_mount+0xe/0x40
            vfs_kern_mount.part.0+0x71/0x90
            btrfs_mount+0x13b/0x3e0 [btrfs]
      INFO: Freed in __btrfs_run_delayed_refs+0xabd/0x1290 [btrfs] age=3173 cpu=6 pid=1729803
            kmem_cache_free+0x34c/0x3c0
            __btrfs_run_delayed_refs+0xabd/0x1290 [btrfs]
            btrfs_run_delayed_refs+0x81/0x210 [btrfs]
            commit_cowonly_roots+0xfb/0x300 [btrfs]
            btrfs_commit_transaction+0x367/0xc40 [btrfs]
            close_ctree+0x113/0x2fa [btrfs]
            generic_shutdown_super+0x6c/0x100
            kill_anon_super+0x14/0x30
            btrfs_kill_super+0x12/0x20 [btrfs]
            deactivate_locked_super+0x31/0x70
            cleanup_mnt+0x100/0x160
            task_work_run+0x68/0xb0
            exit_to_user_mode_prepare+0x1bb/0x1c0
            syscall_exit_to_user_mode+0x4b/0x260
            entry_SYSCALL_64_after_hwframe+0x44/0xa9
      kmem_cache_destroy btrfs_delayed_extent_op: Slab cache still has objects
      CPU: 3 PID: 1729921 Comm: rmmod Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      Call Trace:
       dump_stack+0x8d/0xb5
       kmem_cache_destroy+0x119/0x120
       exit_btrfs_fs+0xa/0x59 [btrfs]
       __x64_sys_delete_module+0x194/0x260
       ? fpregs_assert_state_consistent+0x1e/0x40
       ? exit_to_user_mode_prepare+0x55/0x1c0
       ? trace_hardirqs_on+0x1b/0xf0
       do_syscall_64+0x33/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xa9
      RIP: 0033:0x7f693e305897
      Code: 73 01 c3 48 8b 0d f9 (...)
      RSP: 002b:00007ffcf73eb508 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
      RAX: ffffffffffffffda RBX: 0000559df504f760 RCX: 00007f693e305897
      RDX: 000000000000000a RSI: 0000000000000800 RDI: 0000559df504f7c8
      RBP: 00007ffcf73eb568 R08: 0000000000000000 R09: 0000000000000000
      R10: 00007f693e378ac0 R11: 0000000000000206 R12: 00007ffcf73eb740
      R13: 00007ffcf73ec5a6 R14: 0000559df504f2a0 R15: 0000559df504f760
      BTRFS: state leak: start 30408704 end 30425087 state 1 in tree 1 refs 1
    
    Fix this issue by having the remount path stop the qgroup rescan worker
    when we are remounting RO and teach the rescan worker to stop when a
    remount is in progress. If later a remount in RW mode happens, we are
    already resuming the qgroup rescan worker through the call to
    btrfs_qgroup_rescan_resume(), so we do not need to worry about that.
    
    Tested-by: Fabian Vogt <fvogt@suse.com>
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 974efba82da2782370abc513181ae0378c5b9aed
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sun Nov 22 04:36:54 2020 +0900

    ARC: build: add boot_targets to PHONY
    
    [ Upstream commit 0cfccb3c04934cdef42ae26042139f16e805b5f7 ]
    
    The top-level boot_targets (uImage and uImage.*) should be phony
    targets. They just let Kbuild descend into arch/arc/boot/ and create
    files there.
    
    If a file exists in the top directory with the same name, the boot
    image will not be created.
    
    You can confirm it by the following steps:
    
      $ export CROSS_COMPILE=<your-arc-compiler-prefix>
      $ make -s ARCH=arc defconfig all   # vmlinux will be built
      $ touch uImage.gz
      $ make ARCH=arc uImage.gz
      CALL    scripts/atomic/check-atomics.sh
      CALL    scripts/checksyscalls.sh
      CHK     include/generated/compile.h
      # arch/arc/boot/uImage.gz is not created
    
    Specify the targets as PHONY to fix this.
    
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d35ad5d5bc1e5d4d481c0e03fc7898b21fa21560
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sun Nov 22 04:36:53 2020 +0900

    ARC: build: add uImage.lzma to the top-level target
    
    [ Upstream commit f2712ec76a5433e5ec9def2bd52a95df1f96d050 ]
    
    arch/arc/boot/Makefile supports uImage.lzma, but you cannot do
    'make uImage.lzma' because the corresponding target is missing
    in arch/arc/Makefile. Add it.
    
    I also changed the assignment operator '+=' to ':=' since this is the
    only place where we expect this variable to be set.
    
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4c8e76fc73cb20db8b2bf26d3ecb26d51f5287c9
Author: Masahiro Yamada <masahiroy@kernel.org>
Date:   Sun Nov 22 04:36:52 2020 +0900

    ARC: build: remove non-existing bootpImage from KBUILD_IMAGE
    
    [ Upstream commit 9836720911cfec25d3fbdead1c438bf87e0f2841 ]
    
    The deb-pkg builds for ARCH=arc fail.
    
      $ export CROSS_COMPILE=<your-arc-compiler-prefix>
      $ make -s ARCH=arc defconfig
      $ make ARCH=arc bindeb-pkg
      SORTTAB vmlinux
      SYSMAP  System.map
      MODPOST Module.symvers
      make KERNELRELEASE=5.10.0-rc4 ARCH=arc KBUILD_BUILD_VERSION=2 -f ./Makefile intdeb-pkg
      sh ./scripts/package/builddeb
      cp: cannot stat 'arch/arc/boot/bootpImage': No such file or directory
      make[4]: *** [scripts/Makefile.package:87: intdeb-pkg] Error 1
      make[3]: *** [Makefile:1527: intdeb-pkg] Error 2
      make[2]: *** [debian/rules:13: binary-arch] Error 2
      dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
      make[1]: *** [scripts/Makefile.package:83: bindeb-pkg] Error 2
      make: *** [Makefile:1527: bindeb-pkg] Error 2
    
    The reason is obvious; arch/arc/Makefile sets $(boot)/bootpImage as
    the default image, but there is no rule to build it.
    
    Remove the meaningless KBUILD_IMAGE assignment so it will fallback
    to the default vmlinux. With this change, you can build the deb package.
    
    I removed the 'bootpImage' target as well. At best, it provides
    'make bootpImage' as an alias of 'make vmlinux', but I do not see
    much sense in doing so.
    
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit edef9d8bcfb3d1ab4dd0d9f8f075a25357a13b43
Author: yangerkun <yangerkun@huawei.com>
Date:   Tue Jan 5 14:28:57 2021 +0800

    ext4: fix bug for rename with RENAME_WHITEOUT
    
    [ Upstream commit 6b4b8e6b4ad8553660421d6360678b3811d5deb9 ]
    
    We got a "deleted inode referenced" warning cross our fsstress test. The
    bug can be reproduced easily with following steps:
    
      cd /dev/shm
      mkdir test/
      fallocate -l 128M img
      mkfs.ext4 -b 1024 img
      mount img test/
      dd if=/dev/zero of=test/foo bs=1M count=128
      mkdir test/dir/ && cd test/dir/
      for ((i=0;i<1000;i++)); do touch file$i; done # consume all block
      cd ~ && renameat2(AT_FDCWD, /dev/shm/test/dir/file1, AT_FDCWD,
        /dev/shm/test/dir/dst_file, RENAME_WHITEOUT) # ext4_add_entry in
        ext4_rename will return ENOSPC!!
      cd /dev/shm/ && umount test/ && mount img test/ && ls -li test/dir/file1
      We will get the output:
      "ls: cannot access 'test/dir/file1': Structure needs cleaning"
      and the dmesg show:
      "EXT4-fs error (device loop0): ext4_lookup:1626: inode #2049: comm ls:
      deleted inode referenced: 139"
    
    ext4_rename will create a special inode for whiteout and use this 'ino'
    to replace the source file's dir entry 'ino'. Once error happens
    latter(the error above was the ENOSPC return from ext4_add_entry in
    ext4_rename since all space has been consumed), the cleanup do drop the
    nlink for whiteout, but forget to restore 'ino' with source file. This
    will trigger the bug describle as above.
    
    Signed-off-by: yangerkun <yangerkun@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: stable@vger.kernel.org
    Fixes: cd808deced43 ("ext4: support RENAME_WHITEOUT")
    Link: https://lore.kernel.org/r/20210105062857.3566-1-yangerkun@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a5090e8c03dbf97468e41d6154275495e173c8d
Author: Leon Schuermann <leon@is.currently.online>
Date:   Mon Jan 11 20:03:13 2021 +0100

    r8152: Add Lenovo Powered USB-C Travel Hub
    
    commit cb82a54904a99df9e8f9e9d282046055dae5a730 upstream.
    
    This USB-C Hub (17ef:721e) based on the Realtek RTL8153B chip used to
    use the cdc_ether driver. However, using this driver, with the system
    suspended the device constantly sends pause-frames as soon as the
    receive buffer fills up. This causes issues with other devices, where
    some Ethernet switches stop forwarding packets altogether.
    
    Using the Realtek driver (r8152) fixes this issue. Pause frames are no
    longer sent while the host system is suspended.
    
    Signed-off-by: Leon Schuermann <leon@is.currently.online>
    Tested-by: Leon Schuermann <leon@is.currently.online>
    Link: https://lore.kernel.org/r/20210111190312.12589-2-leon@is.currently.online
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82355e525619257be5714ca8e422a16591b3b2cd
Author: Akilesh Kailash <akailash@google.com>
Date:   Mon Dec 28 07:14:07 2020 +0000

    dm snapshot: flush merged data before committing metadata
    
    commit fcc42338375a1e67b8568dbb558f8b784d0f3b01 upstream.
    
    If the origin device has a volatile write-back cache and the following
    events occur:
    
    1: After finishing merge operation of one set of exceptions,
       merge_callback() is invoked.
    2: Update the metadata in COW device tracking the merge completion.
       This update to COW device is flushed cleanly.
    3: System crashes and the origin device's cache where the recent
       merge was completed has not been flushed.
    
    During the next cycle when we read the metadata from the COW device,
    we will skip reading those metadata whose merge was completed in
    step (1). This will lead to data loss/corruption.
    
    To address this, flush the origin device post merge IO before
    updating the metadata.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Akilesh Kailash <akailash@google.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 399fecd2cfc6ca7af4e1781fc8f0e140872cac65
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Tue Jan 12 15:49:24 2021 -0800

    mm/hugetlb: fix potential missing huge page size info
    
    commit 0eb98f1588c2cc7a79816d84ab18a55d254f481c upstream.
    
    The huge page size is encoded for VM_FAULT_HWPOISON errors only.  So if
    we return VM_FAULT_HWPOISON, huge page size would just be ignored.
    
    Link: https://lkml.kernel.org/r/20210107123449.38481-1-linmiaohe@huawei.com
    Fixes: aa50d3a7aa81 ("Encode huge page size for VM_FAULT_HWPOISON errors")
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f721258b94c6036b239415a99842477f8a6340c
Author: Dexuan Cui <decui@microsoft.com>
Date:   Thu Jan 7 23:23:48 2021 -0800

    ACPI: scan: Harden acpi_device_add() against device ID overflows
    
    commit a58015d638cd4e4555297b04bec9b49028369075 upstream.
    
    Linux VM on Hyper-V crashes with the latest mainline:
    
    [    4.069624] detected buffer overflow in strcpy
    [    4.077733] kernel BUG at lib/string.c:1149!
    ..
    [    4.085819] RIP: 0010:fortify_panic+0xf/0x11
    ...
    [    4.085819] Call Trace:
    [    4.085819]  acpi_device_add.cold.15+0xf2/0xfb
    [    4.085819]  acpi_add_single_object+0x2a6/0x690
    [    4.085819]  acpi_bus_check_add+0xc6/0x280
    [    4.085819]  acpi_ns_walk_namespace+0xda/0x1aa
    [    4.085819]  acpi_walk_namespace+0x9a/0xc2
    [    4.085819]  acpi_bus_scan+0x78/0x90
    [    4.085819]  acpi_scan_init+0xfa/0x248
    [    4.085819]  acpi_init+0x2c1/0x321
    [    4.085819]  do_one_initcall+0x44/0x1d0
    [    4.085819]  kernel_init_freeable+0x1ab/0x1f4
    
    This is because of the recent buffer overflow detection in the
    commit 6a39e62abbaf ("lib: string.h: detect intra-object overflow in
    fortified string functions")
    
    Here acpi_device_bus_id->bus_id can only hold 14 characters, while the
    the acpi_device_hid(device) returns a 22-char string
    "HYPER_V_GEN_COUNTER_V1".
    
    Per ACPI Spec v6.2, Section 6.1.5 _HID (Hardware ID), if the ID is a
    string, it must be of the form AAA#### or NNNN####, i.e. 7 chars or 8
    chars.
    
    The field bus_id in struct acpi_device_bus_id was originally defined as
    char bus_id[9], and later was enlarged to char bus_id[15] in 2007 in the
    commit bb0958544f3c ("ACPI: use more understandable bus_id for ACPI
    devices")
    
    Fix the issue by changing the field bus_id to const char *, and use
    kstrdup_const() to initialize it.
    
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Tested-By: Jethro Beekman <jethro@fortanix.com>
    [ rjw: Subject change, whitespace adjustment ]
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8ffdaf20e6f6f0ce23d0afb35bc881de6d72452
Author: Alexander Lobakin <alobakin@pm.me>
Date:   Sun Jan 10 14:21:05 2021 +0000

    MIPS: relocatable: fix possible boot hangup with KASLR enabled
    
    commit 69e976831cd53f9ba304fd20305b2025ecc78eab upstream.
    
    LLVM-built Linux triggered a boot hangup with KASLR enabled.
    
    arch/mips/kernel/relocate.c:get_random_boot() uses linux_banner,
    which is a string constant, as a random seed, but accesses it
    as an array of unsigned long (in rotate_xor()).
    When the address of linux_banner is not aligned to sizeof(long),
    such access emits unaligned access exception and hangs the kernel.
    
    Use PTR_ALIGN() to align input address to sizeof(long) and also
    align down the input length to prevent possible access-beyond-end.
    
    Fixes: 405bc8fd12f5 ("MIPS: Kernel: Implement KASLR using CONFIG_RELOCATABLE")
    Cc: stable@vger.kernel.org # 4.7+
    Signed-off-by: Alexander Lobakin <alobakin@pm.me>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbd5f99a45cd6716ec750ae58f1699bebf0e5b00
Author: Paul Cercueil <paul@crapouillou.net>
Date:   Wed Dec 16 23:39:56 2020 +0000

    MIPS: boot: Fix unaligned access with CONFIG_MIPS_RAW_APPENDED_DTB
    
    commit 4d4f9c1a17a3480f8fe523673f7232b254d724b7 upstream.
    
    The compressed payload is not necesarily 4-byte aligned, at least when
    compiling with Clang. In that case, the 4-byte value appended to the
    compressed payload that corresponds to the uncompressed kernel image
    size must be read using get_unaligned_le32().
    
    This fixes Clang-built kernels not booting on MIPS (tested on a Ingenic
    JZ4770 board).
    
    Fixes: b8f54f2cde78 ("MIPS: ZBOOT: copy appended dtb to the end of the kernel")
    Cc: <stable@vger.kernel.org> # v4.7
    Signed-off-by: Paul Cercueil <paul@crapouillou.net>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f00a1ca93b345c4afef744411203f2a05ff6c09a
Author: Thomas Hebb <tommyhebb@gmail.com>
Date:   Sat Dec 12 17:20:12 2020 -0800

    ASoC: dapm: remove widget from dirty list on free
    
    commit 5c6679b5cb120f07652418524ab186ac47680b49 upstream.
    
    A widget's "dirty" list_head, much like its "list" list_head, eventually
    chains back to a list_head on the snd_soc_card itself. This means that
    the list can stick around even after the widget (or all widgets) have
    been freed. Currently, however, widgets that are in the dirty list when
    freed remain there, corrupting the entire list and leading to memory
    errors and undefined behavior when the list is next accessed or
    modified.
    
    I encountered this issue when a component failed to probe relatively
    late in snd_soc_bind_card(), causing it to bail out and call
    soc_cleanup_card_resources(), which eventually called
    snd_soc_dapm_free() with widgets that were still dirty from when they'd
    been added.
    
    Fixes: db432b414e20 ("ASoC: Do DAPM power checks only for widgets changed since last run")
    Cc: stable@vger.kernel.org
    Signed-off-by: Thomas Hebb <tommyhebb@gmail.com>
    Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/f8b5f031d50122bf1a9bfc9cae046badf4a7a31a.1607822410.git.tommyhebb@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>