commit 633c3b4c71bb949de771388de213d331c1ebd270
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Sep 5 10:30:13 2022 +0200

    Linux 5.15.65
    
    Link: https://lore.kernel.org/r/20220902121404.435662285@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 572b646c8d9388b31aa5fe8c97276d8f5686d77a
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Mon Aug 22 10:53:46 2022 +0800

    net: neigh: don't call kfree_skb() under spin_lock_irqsave()
    
    commit d5485d9dd24e1d04e5509916515260186eb1455c upstream.
    
    It is not allowed to call kfree_skb() from hardware interrupt
    context or with interrupts being disabled. So add all skb to
    a tmp list, then free them after spin_unlock_irqrestore() at
    once.
    
    Fixes: 66ba215cb513 ("neigh: fix possible DoS due to net iface start/stop loop")
    Suggested-by: Denis V. Lunev <den@openvz.org>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit facf99bc3a951ab7adddfc7a88b1411d01342d82
Author: Zhengchao Shao <shaozhengchao@huawei.com>
Date:   Wed Jul 27 17:33:12 2022 +0800

    net/af_packet: check len when min_header_len equals to 0
    
    commit dc633700f00f726e027846a318c5ffeb8deaaeda upstream.
    
    User can use AF_PACKET socket to send packets with the length of 0.
    When min_header_len equals to 0, packet_snd will call __dev_queue_xmit
    to send packets, and sock->type can be any type.
    
    Reported-by: syzbot+5ea725c25d06fb9114c4@syzkaller.appspotmail.com
    Fixes: fd1894224407 ("bpf: Don't redirect packets with invalid pkt_len")
    Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 591a98b823fb58ecfb80ced10fdc764882e753b1
Author: Liam Howlett <liam.howlett@oracle.com>
Date:   Mon Jun 27 15:18:59 2022 +0000

    android: binder: fix lockdep check on clearing vma
    
    commit b0cab80ecd54ae3b2356bb081af0bffd538c8265 upstream.
    
    When munmapping a vma, the mmap_lock can be degraded to a write before
    calling close() on the file handle.  The binder close() function calls
    binder_alloc_set_vma() to clear the vma address, which now has a lock dep
    check for writing on the mmap_lock.  Change the lockdep check to ensure
    the reading lock is held while clearing and keep the write check while
    writing.
    
    Link: https://lkml.kernel.org/r/20220627151857.2316964-1-Liam.Howlett@oracle.com
    Fixes: 472a68df605b ("android: binder: stop saving a pointer to the VMA")
    Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
    Reported-by: syzbot+da54fa8d793ca89c741f@syzkaller.appspotmail.com
    Acked-by: Todd Kjos <tkjos@google.com>
    Cc: "Arve Hjønnevåg" <arve@android.com>
    Cc: Christian Brauner (Microsoft) <brauner@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Hridya Valsaraju <hridya@google.com>
    Cc: Joel Fernandes <joel@joelfernandes.org>
    Cc: Martijn Coenen <maco@android.com>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92dc4c1a8e58bcc7a183a4c86b055c24cc88d967
Author: Omar Sandoval <osandov@fb.com>
Date:   Tue Aug 23 11:28:13 2022 -0700

    btrfs: fix space cache corruption and potential double allocations
    
    commit ced8ecf026fd8084cf175530ff85c76d6085d715 upstream.
    
    When testing space_cache v2 on a large set of machines, we encountered a
    few symptoms:
    
    1. "unable to add free space :-17" (EEXIST) errors.
    2. Missing free space info items, sometimes caught with a "missing free
       space info for X" error.
    3. Double-accounted space: ranges that were allocated in the extent tree
       and also marked as free in the free space tree, ranges that were
       marked as allocated twice in the extent tree, or ranges that were
       marked as free twice in the free space tree. If the latter made it
       onto disk, the next reboot would hit the BUG_ON() in
       add_new_free_space().
    4. On some hosts with no on-disk corruption or error messages, the
       in-memory space cache (dumped with drgn) disagreed with the free
       space tree.
    
    All of these symptoms have the same underlying cause: a race between
    caching the free space for a block group and returning free space to the
    in-memory space cache for pinned extents causes us to double-add a free
    range to the space cache. This race exists when free space is cached
    from the free space tree (space_cache=v2) or the extent tree
    (nospace_cache, or space_cache=v1 if the cache needs to be regenerated).
    struct btrfs_block_group::last_byte_to_unpin and struct
    btrfs_block_group::progress are supposed to protect against this race,
    but commit d0c2f4fa555e ("btrfs: make concurrent fsyncs wait less when
    waiting for a transaction commit") subtly broke this by allowing
    multiple transactions to be unpinning extents at the same time.
    
    Specifically, the race is as follows:
    
    1. An extent is deleted from an uncached block group in transaction A.
    2. btrfs_commit_transaction() is called for transaction A.
    3. btrfs_run_delayed_refs() -> __btrfs_free_extent() runs the delayed
       ref for the deleted extent.
    4. __btrfs_free_extent() -> do_free_extent_accounting() ->
       add_to_free_space_tree() adds the deleted extent back to the free
       space tree.
    5. do_free_extent_accounting() -> btrfs_update_block_group() ->
       btrfs_cache_block_group() queues up the block group to get cached.
       block_group->progress is set to block_group->start.
    6. btrfs_commit_transaction() for transaction A calls
       switch_commit_roots(). It sets block_group->last_byte_to_unpin to
       block_group->progress, which is block_group->start because the block
       group hasn't been cached yet.
    7. The caching thread gets to our block group. Since the commit roots
       were already switched, load_free_space_tree() sees the deleted extent
       as free and adds it to the space cache. It finishes caching and sets
       block_group->progress to U64_MAX.
    8. btrfs_commit_transaction() advances transaction A to
       TRANS_STATE_SUPER_COMMITTED.
    9. fsync calls btrfs_commit_transaction() for transaction B. Since
       transaction A is already in TRANS_STATE_SUPER_COMMITTED and the
       commit is for fsync, it advances.
    10. btrfs_commit_transaction() for transaction B calls
        switch_commit_roots(). This time, the block group has already been
        cached, so it sets block_group->last_byte_to_unpin to U64_MAX.
    11. btrfs_commit_transaction() for transaction A calls
        btrfs_finish_extent_commit(), which calls unpin_extent_range() for
        the deleted extent. It sees last_byte_to_unpin set to U64_MAX (by
        transaction B!), so it adds the deleted extent to the space cache
        again!
    
    This explains all of our symptoms above:
    
    * If the sequence of events is exactly as described above, when the free
      space is re-added in step 11, it will fail with EEXIST.
    * If another thread reallocates the deleted extent in between steps 7
      and 11, then step 11 will silently re-add that space to the space
      cache as free even though it is actually allocated. Then, if that
      space is allocated *again*, the free space tree will be corrupted
      (namely, the wrong item will be deleted).
    * If we don't catch this free space tree corruption, it will continue
      to get worse as extents are deleted and reallocated.
    
    The v1 space_cache is synchronously loaded when an extent is deleted
    (btrfs_update_block_group() with alloc=0 calls btrfs_cache_block_group()
    with load_cache_only=1), so it is not normally affected by this bug.
    However, as noted above, if we fail to load the space cache, we will
    fall back to caching from the extent tree and may hit this bug.
    
    The easiest fix for this race is to also make caching from the free
    space tree or extent tree synchronous. Josef tested this and found no
    performance regressions.
    
    A few extra changes fall out of this change. Namely, this fix does the
    following, with step 2 being the crucial fix:
    
    1. Factor btrfs_caching_ctl_wait_done() out of
       btrfs_wait_block_group_cache_done() to allow waiting on a caching_ctl
       that we already hold a reference to.
    2. Change the call in btrfs_cache_block_group() of
       btrfs_wait_space_cache_v1_finished() to
       btrfs_caching_ctl_wait_done(), which makes us wait regardless of the
       space_cache option.
    3. Delete the now unused btrfs_wait_space_cache_v1_finished() and
       space_cache_v1_done().
    4. Change btrfs_cache_block_group()'s `int load_cache_only` parameter to
       `bool wait` to more accurately describe its new meaning.
    5. Change a few callers which had a separate call to
       btrfs_wait_block_group_cache_done() to use wait = true instead.
    6. Make btrfs_wait_block_group_cache_done() static now that it's not
       used outside of block-group.c anymore.
    
    Fixes: d0c2f4fa555e ("btrfs: make concurrent fsyncs wait less when waiting for a transaction commit")
    CC: stable@vger.kernel.org # 5.12+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55c7a91527343d2e0b5647cc308c6e04ddd2aa52
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Fri Aug 12 19:05:09 2022 -0700

    kprobes: don't call disarm_kprobe() for disabled kprobes
    
    commit 9c80e79906b4ca440d09e7f116609262bb747909 upstream.
    
    The assumption in __disable_kprobe() is wrong, and it could try to disarm
    an already disarmed kprobe and fire the WARN_ONCE() below. [0]  We can
    easily reproduce this issue.
    
    1. Write 0 to /sys/kernel/debug/kprobes/enabled.
    
      # echo 0 > /sys/kernel/debug/kprobes/enabled
    
    2. Run execsnoop.  At this time, one kprobe is disabled.
    
      # /usr/share/bcc/tools/execsnoop &
      [1] 2460
      PCOMM            PID    PPID   RET ARGS
    
      # cat /sys/kernel/debug/kprobes/list
      ffffffff91345650  r  __x64_sys_execve+0x0    [FTRACE]
      ffffffff91345650  k  __x64_sys_execve+0x0    [DISABLED][FTRACE]
    
    3. Write 1 to /sys/kernel/debug/kprobes/enabled, which changes
       kprobes_all_disarmed to false but does not arm the disabled kprobe.
    
      # echo 1 > /sys/kernel/debug/kprobes/enabled
    
      # cat /sys/kernel/debug/kprobes/list
      ffffffff91345650  r  __x64_sys_execve+0x0    [FTRACE]
      ffffffff91345650  k  __x64_sys_execve+0x0    [DISABLED][FTRACE]
    
    4. Kill execsnoop, when __disable_kprobe() calls disarm_kprobe() for the
       disabled kprobe and hits the WARN_ONCE() in __disarm_kprobe_ftrace().
    
      # fg
      /usr/share/bcc/tools/execsnoop
      ^C
    
    Actually, WARN_ONCE() is fired twice, and __unregister_kprobe_top() misses
    some cleanups and leaves the aggregated kprobe in the hash table.  Then,
    __unregister_trace_kprobe() initialises tk->rp.kp.list and creates an
    infinite loop like this.
    
      aggregated kprobe.list -> kprobe.list -.
                                         ^    |
                                         '.__.'
    
    In this situation, these commands fall into the infinite loop and result
    in RCU stall or soft lockup.
    
      cat /sys/kernel/debug/kprobes/list : show_kprobe_addr() enters into the
                                           infinite loop with RCU.
    
      /usr/share/bcc/tools/execsnoop : warn_kprobe_rereg() holds kprobe_mutex,
                                       and __get_valid_kprobe() is stuck in
                                       the loop.
    
    To avoid the issue, make sure we don't call disarm_kprobe() for disabled
    kprobes.
    
    [0]
    Failed to disarm kprobe-ftrace at __x64_sys_execve+0x0/0x40 (error -2)
    WARNING: CPU: 6 PID: 2460 at kernel/kprobes.c:1130 __disarm_kprobe_ftrace.isra.19 (kernel/kprobes.c:1129)
    Modules linked in: ena
    CPU: 6 PID: 2460 Comm: execsnoop Not tainted 5.19.0+ #28
    Hardware name: Amazon EC2 c5.2xlarge/, BIOS 1.0 10/16/2017
    RIP: 0010:__disarm_kprobe_ftrace.isra.19 (kernel/kprobes.c:1129)
    Code: 24 8b 02 eb c1 80 3d c4 83 f2 01 00 75 d4 48 8b 75 00 89 c2 48 c7 c7 90 fa 0f 92 89 04 24 c6 05 ab 83 01 e8 e4 94 f0 ff <0f> 0b 8b 04 24 eb b1 89 c6 48 c7 c7 60 fa 0f 92 89 04 24 e8 cc 94
    RSP: 0018:ffff9e6ec154bd98 EFLAGS: 00010282
    RAX: 0000000000000000 RBX: ffffffff930f7b00 RCX: 0000000000000001
    RDX: 0000000080000001 RSI: ffffffff921461c5 RDI: 00000000ffffffff
    RBP: ffff89c504286da8 R08: 0000000000000000 R09: c0000000fffeffff
    R10: 0000000000000000 R11: ffff9e6ec154bc28 R12: ffff89c502394e40
    R13: ffff89c502394c00 R14: ffff9e6ec154bc00 R15: 0000000000000000
    FS:  00007fe800398740(0000) GS:ffff89c812d80000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000000c00057f010 CR3: 0000000103b54006 CR4: 00000000007706e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
    <TASK>
     __disable_kprobe (kernel/kprobes.c:1716)
     disable_kprobe (kernel/kprobes.c:2392)
     __disable_trace_kprobe (kernel/trace/trace_kprobe.c:340)
     disable_trace_kprobe (kernel/trace/trace_kprobe.c:429)
     perf_trace_event_unreg.isra.2 (./include/linux/tracepoint.h:93 kernel/trace/trace_event_perf.c:168)
     perf_kprobe_destroy (kernel/trace/trace_event_perf.c:295)
     _free_event (kernel/events/core.c:4971)
     perf_event_release_kernel (kernel/events/core.c:5176)
     perf_release (kernel/events/core.c:5186)
     __fput (fs/file_table.c:321)
     task_work_run (./include/linux/sched.h:2056 (discriminator 1) kernel/task_work.c:179 (discriminator 1))
     exit_to_user_mode_prepare (./include/linux/resume_user_mode.h:49 kernel/entry/common.c:169 kernel/entry/common.c:201)
     syscall_exit_to_user_mode (./arch/x86/include/asm/jump_label.h:55 ./arch/x86/include/asm/nospec-branch.h:384 ./arch/x86/include/asm/entry-common.h:94 kernel/entry/common.c:133 kernel/entry/common.c:296)
     do_syscall_64 (arch/x86/entry/common.c:87)
     entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120)
    RIP: 0033:0x7fe7ff210654
    Code: 15 79 89 20 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb be 0f 1f 00 8b 05 9a cd 20 00 48 63 ff 85 c0 75 11 b8 03 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 3a f3 c3 48 83 ec 18 48 89 7c 24 08 e8 34 fc
    RSP: 002b:00007ffdbd1d3538 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
    RAX: 0000000000000000 RBX: 0000000000000008 RCX: 00007fe7ff210654
    RDX: 0000000000000000 RSI: 0000000000002401 RDI: 0000000000000008
    RBP: 0000000000000000 R08: 94ae31d6fda838a4 R0900007fe8001c9d30
    R10: 00007ffdbd1d34b0 R11: 0000000000000246 R12: 00007ffdbd1d3600
    R13: 0000000000000000 R14: fffffffffffffffc R15: 00007ffdbd1d3560
    </TASK>
    
    Link: https://lkml.kernel.org/r/20220813020509.90805-1-kuniyu@amazon.com
    Fixes: 69d54b916d83 ("kprobes: makes kprobes/enabled works correctly for optimized kprobes.")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Reported-by: Ayushman Dutta <ayudutta@amazon.com>
    Cc: "Naveen N. Rao" <naveen.n.rao@linux.ibm.com>
    Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Cc: Kuniyuki Iwashima <kuniyu@amazon.com>
    Cc: Kuniyuki Iwashima <kuni1840@gmail.com>
    Cc: Ayushman Dutta <ayudutta@amazon.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a27997cf44eab55007e49bceb158a32ef8e7811
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Aug 3 14:28:47 2022 -0400

    btrfs: tree-checker: check for overlapping extent items
    
    [ Upstream commit 899b7f69f244e539ea5df1b4d756046337de44a5 ]
    
    We're seeing a weird problem in production where we have overlapping
    extent items in the extent tree.  It's unclear where these are coming
    from, and in debugging we realized there's no check in the tree checker
    for this sort of problem.  Add a check to the tree-checker to make sure
    that the extents do not overlap each other.
    
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1b2a7ddeaa779478fbaaeb83cacd95270ae71fa3
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Tue Jul 26 16:24:04 2022 -0400

    btrfs: fix lockdep splat with reloc root extent buffers
    
    [ Upstream commit b40130b23ca4a08c5785d5a3559805916bddba3c ]
    
    We have been hitting the following lockdep splat with btrfs/187 recently
    
      WARNING: possible circular locking dependency detected
      5.19.0-rc8+ #775 Not tainted
      ------------------------------------------------------
      btrfs/752500 is trying to acquire lock:
      ffff97e1875a97b8 (btrfs-treloc-02#2){+.+.}-{3:3}, at: __btrfs_tree_lock+0x24/0x110
    
      but task is already holding lock:
      ffff97e1875a9278 (btrfs-tree-01/1){+.+.}-{3:3}, at: __btrfs_tree_lock+0x24/0x110
    
      which lock already depends on the new lock.
    
      the existing dependency chain (in reverse order) is:
    
      -> #2 (btrfs-tree-01/1){+.+.}-{3:3}:
             down_write_nested+0x41/0x80
             __btrfs_tree_lock+0x24/0x110
             btrfs_init_new_buffer+0x7d/0x2c0
             btrfs_alloc_tree_block+0x120/0x3b0
             __btrfs_cow_block+0x136/0x600
             btrfs_cow_block+0x10b/0x230
             btrfs_search_slot+0x53b/0xb70
             btrfs_lookup_inode+0x2a/0xa0
             __btrfs_update_delayed_inode+0x5f/0x280
             btrfs_async_run_delayed_root+0x24c/0x290
             btrfs_work_helper+0xf2/0x3e0
             process_one_work+0x271/0x590
             worker_thread+0x52/0x3b0
             kthread+0xf0/0x120
             ret_from_fork+0x1f/0x30
    
      -> #1 (btrfs-tree-01){++++}-{3:3}:
             down_write_nested+0x41/0x80
             __btrfs_tree_lock+0x24/0x110
             btrfs_search_slot+0x3c3/0xb70
             do_relocation+0x10c/0x6b0
             relocate_tree_blocks+0x317/0x6d0
             relocate_block_group+0x1f1/0x560
             btrfs_relocate_block_group+0x23e/0x400
             btrfs_relocate_chunk+0x4c/0x140
             btrfs_balance+0x755/0xe40
             btrfs_ioctl+0x1ea2/0x2c90
             __x64_sys_ioctl+0x88/0xc0
             do_syscall_64+0x38/0x90
             entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
      -> #0 (btrfs-treloc-02#2){+.+.}-{3:3}:
             __lock_acquire+0x1122/0x1e10
             lock_acquire+0xc2/0x2d0
             down_write_nested+0x41/0x80
             __btrfs_tree_lock+0x24/0x110
             btrfs_lock_root_node+0x31/0x50
             btrfs_search_slot+0x1cb/0xb70
             replace_path+0x541/0x9f0
             merge_reloc_root+0x1d6/0x610
             merge_reloc_roots+0xe2/0x260
             relocate_block_group+0x2c8/0x560
             btrfs_relocate_block_group+0x23e/0x400
             btrfs_relocate_chunk+0x4c/0x140
             btrfs_balance+0x755/0xe40
             btrfs_ioctl+0x1ea2/0x2c90
             __x64_sys_ioctl+0x88/0xc0
             do_syscall_64+0x38/0x90
             entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
      other info that might help us debug this:
    
      Chain exists of:
        btrfs-treloc-02#2 --> btrfs-tree-01 --> btrfs-tree-01/1
    
       Possible unsafe locking scenario:
    
             CPU0                    CPU1
             ----                    ----
        lock(btrfs-tree-01/1);
                                     lock(btrfs-tree-01);
                                     lock(btrfs-tree-01/1);
        lock(btrfs-treloc-02#2);
    
       *** DEADLOCK ***
    
      7 locks held by btrfs/752500:
       #0: ffff97e292fdf460 (sb_writers#12){.+.+}-{0:0}, at: btrfs_ioctl+0x208/0x2c90
       #1: ffff97e284c02050 (&fs_info->reclaim_bgs_lock){+.+.}-{3:3}, at: btrfs_balance+0x55f/0xe40
       #2: ffff97e284c00878 (&fs_info->cleaner_mutex){+.+.}-{3:3}, at: btrfs_relocate_block_group+0x236/0x400
       #3: ffff97e292fdf650 (sb_internal#2){.+.+}-{0:0}, at: merge_reloc_root+0xef/0x610
       #4: ffff97e284c02378 (btrfs_trans_num_writers){++++}-{0:0}, at: join_transaction+0x1a8/0x5a0
       #5: ffff97e284c023a0 (btrfs_trans_num_extwriters){++++}-{0:0}, at: join_transaction+0x1a8/0x5a0
       #6: ffff97e1875a9278 (btrfs-tree-01/1){+.+.}-{3:3}, at: __btrfs_tree_lock+0x24/0x110
    
      stack backtrace:
      CPU: 1 PID: 752500 Comm: btrfs Not tainted 5.19.0-rc8+ #775
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
      Call Trace:
    
       dump_stack_lvl+0x56/0x73
       check_noncircular+0xd6/0x100
       ? lock_is_held_type+0xe2/0x140
       __lock_acquire+0x1122/0x1e10
       lock_acquire+0xc2/0x2d0
       ? __btrfs_tree_lock+0x24/0x110
       down_write_nested+0x41/0x80
       ? __btrfs_tree_lock+0x24/0x110
       __btrfs_tree_lock+0x24/0x110
       btrfs_lock_root_node+0x31/0x50
       btrfs_search_slot+0x1cb/0xb70
       ? lock_release+0x137/0x2d0
       ? _raw_spin_unlock+0x29/0x50
       ? release_extent_buffer+0x128/0x180
       replace_path+0x541/0x9f0
       merge_reloc_root+0x1d6/0x610
       merge_reloc_roots+0xe2/0x260
       relocate_block_group+0x2c8/0x560
       btrfs_relocate_block_group+0x23e/0x400
       btrfs_relocate_chunk+0x4c/0x140
       btrfs_balance+0x755/0xe40
       btrfs_ioctl+0x1ea2/0x2c90
       ? lock_is_held_type+0xe2/0x140
       ? lock_is_held_type+0xe2/0x140
       ? __x64_sys_ioctl+0x88/0xc0
       __x64_sys_ioctl+0x88/0xc0
       do_syscall_64+0x38/0x90
       entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    This isn't necessarily new, it's just tricky to hit in practice.  There
    are two competing things going on here.  With relocation we create a
    snapshot of every fs tree with a reloc tree.  Any extent buffers that
    get initialized here are initialized with the reloc root lockdep key.
    However since it is a snapshot, any blocks that are currently in cache
    that originally belonged to the fs tree will have the normal tree
    lockdep key set.  This creates the lock dependency of
    
      reloc tree -> normal tree
    
    for the extent buffer locking during the first phase of the relocation
    as we walk down the reloc root to relocate blocks.
    
    However this is problematic because the final phase of the relocation is
    merging the reloc root into the original fs root.  This involves
    searching down to any keys that exist in the original fs root and then
    swapping the relocated block and the original fs root block.  We have to
    search down to the fs root first, and then go search the reloc root for
    the block we need to replace.  This creates the dependency of
    
      normal tree -> reloc tree
    
    which is why lockdep complains.
    
    Additionally even if we were to fix this particular mismatch with a
    different nesting for the merge case, we're still slotting in a block
    that has a owner of the reloc root objectid into a normal tree, so that
    block will have its lockdep key set to the tree reloc root, and create a
    lockdep splat later on when we wander into that block from the fs root.
    
    Unfortunately the only solution here is to make sure we do not set the
    lockdep key to the reloc tree lockdep key normally, and then reset any
    blocks we wander into from the reloc root when we're doing the merged.
    
    This solves the problem of having mixed tree reloc keys intermixed with
    normal tree keys, and then allows us to make sure in the merge case we
    maintain the lock order of
    
      normal tree -> reloc tree
    
    We handle this by setting a bit on the reloc root when we do the search
    for the block we want to relocate, and any block we search into or COW
    at that point gets set to the reloc tree key.  This works correctly
    because we only ever COW down to the parent node, so we aren't resetting
    the key for the block we're linking into the fs root.
    
    With this patch we no longer have the lockdep splat in btrfs/187.
    
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 98dfad7fb6882276c08be5e451693410c58fdae1
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Tue Jul 26 16:24:03 2022 -0400

    btrfs: move lockdep class helpers to locking.c
    
    [ Upstream commit 0a27a0474d146eb79e09ec88bf0d4229f4cfc1b8 ]
    
    These definitions exist in disk-io.c, which is not related to the
    locking.  Move this over to locking.h/c where it makes more sense.
    
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a74fc94fb1a9bccef25de11f563e8a77bb1e9a1c
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Aug 16 14:15:21 2022 +0200

    testing: selftests: nft_flowtable.sh: use random netns names
    
    [ Upstream commit b71b7bfeac38c7a21c423ddafb29aa6258949df8 ]
    
    "ns1" is a too generic name, use a random suffix to avoid
    errors when such a netns exists.  Also allows to run multiple
    instances of the script in parallel.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d8b5d251994ba99b49bb98f3b7f11e3aa4818a9
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Mon Aug 15 12:39:20 2022 +0200

    netfilter: conntrack: NF_CONNTRACK_PROCFS should no longer default to y
    
    [ Upstream commit aa5762c34213aba7a72dc58e70601370805fa794 ]
    
    NF_CONNTRACK_PROCFS was marked obsolete in commit 54b07dca68557b09
    ("netfilter: provide config option to disable ancient procfs parts") in
    v3.3.
    
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 85dd24ff77c15f5fc0e16bc3f288f5d1ac93e02b
Author: Charlene Liu <Charlene.Liu@amd.com>
Date:   Fri Aug 5 12:59:47 2022 -0400

    drm/amd/display: avoid doing vm_init multiple time
    
    [ Upstream commit 5544a7b5a07480192eb5fd3536462faed2c21528 ]
    
    [why]
    this is to ensure that driver will not reprogram hvm_prefetch_req again if
    it is done.
    
    Reviewed-by: Martin Leung <Martin.Leung@amd.com>
    Acked-by: Brian Chang <Brian.Chang@amd.com>
    Signed-off-by: Charlene Liu <Charlene.Liu@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 898467ac9bcb56090f0b651088a36331ff779e4c
Author: Dusica Milinkovic <Dusica.Milinkovic@amd.com>
Date:   Wed Aug 10 09:43:15 2022 +0200

    drm/amdgpu: Increase tlb flush timeout for sriov
    
    [ Upstream commit 373008bfc9cdb0f050258947fa5a095f0657e1bc ]
    
    [Why]
    During multi-vf executing benchmark (Luxmark) observed kiq error timeout.
    It happenes because all of VFs do the tlb invalidation at the same time.
    Although each VF has the invalidate register set, from hardware side
    the invalidate requests are queue to execute.
    
    [How]
    In case of 12 VF increase timeout on 12*100ms
    
    Signed-off-by: Dusica Milinkovic <Dusica.Milinkovic@amd.com>
    Acked-by: Shaoyun Liu <shaoyun.liu@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4df54c493e76f3cfa0bc8c54c5c43faa3b6e78d4
Author: Ilya Bakoulin <Ilya.Bakoulin@amd.com>
Date:   Tue Jul 26 16:19:38 2022 -0400

    drm/amd/display: Fix pixel clock programming
    
    [ Upstream commit 04fb918bf421b299feaee1006e82921d7d381f18 ]
    
    [Why]
    Some pixel clock values could cause HDMI TMDS SSCPs to be misaligned
    between different HDMI lanes when using YCbCr420 10-bit pixel format.
    
    BIOS functions for transmitter/encoder control take pixel clock in kHz
    increments, whereas the function for setting the pixel clock is in 100Hz
    increments. Setting pixel clock to a value that is not on a kHz boundary
    will cause the issue.
    
    [How]
    Round pixel clock down to nearest kHz in 10/12-bpc cases.
    
    Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
    Acked-by: Brian Chang <Brian.Chang@amd.com>
    Signed-off-by: Ilya Bakoulin <Ilya.Bakoulin@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a89e753d5a9f3b321f4a3098e2755c5aabcff0af
Author: Evan Quan <evan.quan@amd.com>
Date:   Wed Aug 10 11:08:31 2022 +0800

    drm/amd/pm: add missing ->fini_microcode interface for Sienna Cichlid
    
    [ Upstream commit 0a2d922a5618377cdf8fa476351362733ef55342 ]
    
    To avoid any potential memory leak.
    
    Signed-off-by: Evan Quan <evan.quan@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a2ede313fbf05cb69e6126e3592625c507c2c0c6
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Sun Aug 14 22:40:25 2022 +0900

    ksmbd: don't remove dos attribute xattr on O_TRUNC open
    
    [ Upstream commit 17661ecf6a64eb11ae7f1108fe88686388b2acd5 ]
    
    When smb client open file in ksmbd share with O_TRUNC, dos attribute
    xattr is removed as well as data in file. This cause the FSCTL_SET_SPARSE
    request from the client fails because ksmbd can't update the dos attribute
    after setting ATTR_SPARSE_FILE. And this patch fix xfstests generic/469
    test also.
    
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Reviewed-by: Hyunchul Lee <hyc.lee@gmail.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a7ada939712a7582a0684fa053f5d435e85ed8a7
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Jun 20 11:45:34 2022 +0200

    s390/hypfs: avoid error message under KVM
    
    [ Upstream commit 7b6670b03641ac308aaa6fa2e6f964ac993b5ea3 ]
    
    When booting under KVM the following error messages are issued:
    
    hypfs.7f5705: The hardware system does not support hypfs
    hypfs.7a79f0: Initialization of hypfs failed with rc=-61
    
    Demote the severity of first message from "error" to "info" and issue
    the second message only in other error cases.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Acked-by: Heiko Carstens <hca@linux.ibm.com>
    Acked-by: Christian Borntraeger <borntraeger@linux.ibm.com>
    Link: https://lore.kernel.org/r/20220620094534.18967-1-jgross@suse.com
    [arch/s390/hypfs/hypfs_diag.c changed description]
    Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db6fa03d80ab076238fc806c9925d1f8b9639d1b
Author: Denis V. Lunev <den@openvz.org>
Date:   Thu Aug 11 18:20:11 2022 +0300

    neigh: fix possible DoS due to net iface start/stop loop
    
    [ Upstream commit 66ba215cb51323e4e55e38fd5f250e0fae0cbc94 ]
    
    Normal processing of ARP request (usually this is Ethernet broadcast
    packet) coming to the host is looking like the following:
    * the packet comes to arp_process() call and is passed through routing
      procedure
    * the request is put into the queue using pneigh_enqueue() if
      corresponding ARP record is not local (common case for container
      records on the host)
    * the request is processed by timer (within 80 jiffies by default) and
      ARP reply is sent from the same arp_process() using
      NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED condition (flag is set inside
      pneigh_enqueue())
    
    And here the problem comes. Linux kernel calls pneigh_queue_purge()
    which destroys the whole queue of ARP requests on ANY network interface
    start/stop event through __neigh_ifdown().
    
    This is actually not a problem within the original world as network
    interface start/stop was accessible to the host 'root' only, which
    could do more destructive things. But the world is changed and there
    are Linux containers available. Here container 'root' has an access
    to this API and could be considered as untrusted user in the hosting
    (container's) world.
    
    Thus there is an attack vector to other containers on node when
    container's root will endlessly start/stop interfaces. We have observed
    similar situation on a real production node when docker container was
    doing such activity and thus other containers on the node become not
    accessible.
    
    The patch proposed doing very simple thing. It drops only packets from
    the same namespace in the pneigh_queue_purge() where network interface
    state change is detected. This is enough to prevent the problem for the
    whole node preserving original semantics of the code.
    
    v2:
            - do del_timer_sync() if queue is empty after pneigh_queue_purge()
    v3:
            - rebase to net tree
    
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: David Ahern <dsahern@kernel.org>
    Cc: Yajun Deng <yajun.deng@linux.dev>
    Cc: Roopa Prabhu <roopa@nvidia.com>
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
    Cc: Alexander Mikhalitsyn <alexander.mikhalitsyn@virtuozzo.com>
    Cc: Konstantin Khorenko <khorenko@virtuozzo.com>
    Cc: kernel@openvz.org
    Cc: devel@openvz.org
    Investigated-by: Alexander Mikhalitsyn <alexander.mikhalitsyn@virtuozzo.com>
    Signed-off-by: Denis V. Lunev <den@openvz.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 857048ea1d285404b102c259711c248c2f0f7910
Author: Namjae Jeon <linkinjeon@kernel.org>
Date:   Mon Aug 8 21:56:48 2022 +0900

    ksmbd: return STATUS_BAD_NETWORK_NAME error status if share is not configured
    
    [ Upstream commit fe54833dc8d97ef387e86f7c80537d51c503ca75 ]
    
    If share is not configured in smb.conf, smb2 tree connect should return
    STATUS_BAD_NETWORK_NAME instead of STATUS_BAD_NETWORK_PATH.
    
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Reviewed-by: Hyunchul Lee <hyc.lee@gmail.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5ee30bcfdb32526233d2572f3d9ec371928679f1
Author: Fudong Wang <Fudong.Wang@amd.com>
Date:   Wed Jul 27 12:01:29 2022 +0800

    drm/amd/display: clear optc underflow before turn off odm clock
    
    [ Upstream commit b2a93490201300a749ad261b5c5d05cb50179c44 ]
    
    [Why]
    After ODM clock off, optc underflow bit will be kept there always and clear not work.
    We need to clear that before clock off.
    
    [How]
    Clear that if have when clock off.
    
    Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
    Acked-by: Tom Chung <chiahsuan.chung@amd.com>
    Signed-off-by: Fudong Wang <Fudong.Wang@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e407e04a93d7b1209669220fab5eb69ab7b09baf
Author: Alvin Lee <alvin.lee2@amd.com>
Date:   Thu Jul 28 09:51:05 2022 -0400

    drm/amd/display: For stereo keep "FLIP_ANY_FRAME"
    
    [ Upstream commit 84ef99c728079dfd21d6bc70b4c3e4af20602b3c ]
    
    [Description]
    Observed in stereomode that programming FLIP_LEFT_EYE
    can cause hangs. Keep FLIP_ANY_FRAME in stereo mode so
    the surface flip can take place before left or right eye
    
    Reviewed-by: Martin Leung <Martin.Leung@amd.com>
    Acked-by: Tom Chung <chiahsuan.chung@amd.com>
    Signed-off-by: Alvin Lee <alvin.lee2@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2cddd3d0b049a5e0666f93ea8c0d6ba6cc4bbec4
Author: Leo Ma <hanghong.ma@amd.com>
Date:   Fri Jul 22 13:42:58 2022 -0400

    drm/amd/display: Fix HDMI VSIF V3 incorrect issue
    
    [ Upstream commit 0591183699fceeafb4c4141072d47775de83ecfb ]
    
    [Why]
    Reported from customer the checksum in AMD VSIF V3 is incorrect and
    causing blank screen issue.
    
    [How]
    Fix the packet length issue on AMD HDMI VSIF V3.
    
    Reviewed-by: Anthony Koo <Anthony.Koo@amd.com>
    Acked-by: Tom Chung <chiahsuan.chung@amd.com>
    Signed-off-by: Leo Ma <hanghong.ma@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0c8abeceee0f58ad3fdc66e1de0c0e02b962653b
Author: Josip Pavic <Josip.Pavic@amd.com>
Date:   Thu Jul 21 15:33:00 2022 -0400

    drm/amd/display: Avoid MPC infinite loop
    
    [ Upstream commit 8de297dc046c180651c0500f8611663ae1c3828a ]
    
    [why]
    In some cases MPC tree bottom pipe ends up point to itself.  This causes
    iterating from top to bottom to hang the system in an infinite loop.
    
    [how]
    When looping to next MPC bottom pipe, check that the pointer is not same
    as current to avoid infinite loop.
    
    Reviewed-by: Josip Pavic <Josip.Pavic@amd.com>
    Reviewed-by: Jun Lei <Jun.Lei@amd.com>
    Acked-by: Alex Hung <alex.hung@amd.com>
    Signed-off-by: Aric Cyr <aric.cyr@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 061ffb1e419bd8185e143b69274cc9eba882a154
Author: Biju Das <biju.das.jz@bp.renesas.com>
Date:   Thu Jul 28 10:26:12 2022 +0100

    ASoC: sh: rz-ssi: Improve error handling in rz_ssi_probe() error path
    
    [ Upstream commit c75ed9f54ce8d349fee557f2b471a4d637ed2a6b ]
    
    We usually do cleanup in reverse order of init. Currently in case of
    error rz_ssi_release_dma_channels() done in the reverse order. This
    patch improves error handling in rz_ssi_probe() error path.
    
    While at it, use "goto cleanup" style to reduce code duplication.
    
    Reported-by: Pavel Machek <pavel@denx.de>
    Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://lore.kernel.org/r/20220728092612.38858-1-biju.das.jz@bp.renesas.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d347d66b19729be12000633eac0d2a3d72e5090d
Author: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Date:   Fri May 13 19:54:23 2022 +0300

    fs/ntfs3: Fix work with fragmented xattr
    
    [ Upstream commit 42f86b1226a42bfc79a7125af435432ad4680a32 ]
    
    In some cases xattr is too fragmented,
    so we need to load it before writing.
    
    Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bf216c168f9ec084a5557d5edd6ac3ce1f7f502a
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Aug 1 14:57:52 2022 +0100

    btrfs: fix warning during log replay when bumping inode link count
    
    [ Upstream commit 769030e11847c5412270c0726ff21d3a1f0a3131 ]
    
    During log replay, at add_link(), we may increment the link count of
    another inode that has a reference that conflicts with a new reference
    for the inode currently being processed.
    
    During log replay, at add_link(), we may drop (unlink) a reference from
    some inode in the subvolume tree if that reference conflicts with a new
    reference found in the log for the inode we are currently processing.
    
    After the unlink, If the link count has decreased from 1 to 0, then we
    increment the link count to prevent the inode from being deleted if it's
    evicted by an iput() call, because we may have references to add to that
    inode later on (and we will fixup its link count later during log replay).
    
    However incrementing the link count from 0 to 1 triggers a warning:
    
      $ cat fs/inode.c
      (...)
      void inc_nlink(struct inode *inode)
      {
            if (unlikely(inode->i_nlink == 0)) {
                     WARN_ON(!(inode->i_state & I_LINKABLE));
                     atomic_long_dec(&inode->i_sb->s_remove_count);
            }
      (...)
    
    The I_LINKABLE flag is only set when creating an O_TMPFILE file, so it's
    never set during log replay.
    
    Most of the time, the warning isn't triggered even if we dropped the last
    reference of the conflicting inode, and this is because:
    
    1) The conflicting inode was previously marked for fixup, through a call
       to link_to_fixup_dir(), which increments the inode's link count;
    
    2) And the last iput() on the inode has not triggered eviction of the
       inode, nor was eviction triggered after the iput(). So at add_link(),
       even if we unlink the last reference of the inode, its link count ends
       up being 1 and not 0.
    
    So this means that if eviction is triggered after link_to_fixup_dir() is
    called, at add_link() we will read the inode back from the subvolume tree
    and have it with a correct link count, matching the number of references
    it has on the subvolume tree. So if when we are at add_link() the inode
    has exactly one reference only, its link count is 1, and after the unlink
    its link count becomes 0.
    
    So fix this by using set_nlink() instead of inc_nlink(), as the former
    accepts a transition from 0 to 1 and it's what we use in other similar
    contexts (like at link_to_fixup_dir().
    
    Also make add_inode_ref() use set_nlink() instead of inc_nlink() to
    bump the link count from 0 to 1.
    
    The warning is actually harmless, but it may scare users. Josef also ran
    into it recently.
    
    CC: stable@vger.kernel.org # 5.1+
    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 985bbad1840829a8a8a7287cbc5a9667ea5e35e1
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Feb 28 16:29:29 2022 +0000

    btrfs: add and use helper for unlinking inode during log replay
    
    [ Upstream commit 313ab75399d0c7d0ebc718c545572c1b4d8d22ef ]
    
    During log replay there is this pattern of running delayed items after
    every inode unlink. To avoid repeating this several times, move the
    logic into an helper function and use it instead of calling
    btrfs_unlink_inode() followed by btrfs_run_delayed_items().
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 96881521121269d444791474dab3ec54c07a05fa
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Oct 25 17:31:54 2021 +0100

    btrfs: remove no longer needed logic for replaying directory deletes
    
    [ Upstream commit ccae4a19c9140a34a0c5f0658812496dd8bbdeaf ]
    
    Now that we log only dir index keys when logging a directory, we no longer
    need to deal with dir item keys in the log replay code for replaying
    directory deletes. This is also true for the case when we replay a log
    tree created by a kernel that still logs dir items.
    
    So remove the remaining code of the replay of directory deletes algorithm
    that deals with dir item keys.
    
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7697ca60db067845d83d4b7d31e04678592649e5
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Oct 25 17:31:50 2021 +0100

    btrfs: remove root argument from btrfs_unlink_inode()
    
    [ Upstream commit 4467af8809299c12529b5c21481c1d44a3b209f9 ]
    
    The root argument passed to btrfs_unlink_inode() and its callee,
    __btrfs_unlink_inode(), always matches the root of the given directory and
    the given inode. So remove the argument and make __btrfs_unlink_inode()
    use the root of the directory.
    
    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 71beead997f56b1ecd43461d25b2c94c8bb27c50
Author: Liming Sun <limings@nvidia.com>
Date:   Tue Aug 9 13:37:42 2022 -0400

    mmc: sdhci-of-dwcmshc: Re-enable support for the BlueField-3 SoC
    
    [ Upstream commit a0753ef66c34c1739580219dca664eda648164b7 ]
    
    The commit 08f3dff799d4 (mmc: sdhci-of-dwcmshc: add rockchip platform
    support") introduces the use of_device_get_match_data() to check for some
    chips. Unfortunately, it also breaks the BlueField-3 FW, which uses ACPI.
    
    To fix the problem, let's add the ACPI match data and the corresponding
    quirks to re-enable the support for the BlueField-3 SoC.
    
    Reviewed-by: David Woods <davwoods@nvidia.com>
    Signed-off-by: Liming Sun <limings@nvidia.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Fixes: 08f3dff799d4 ("mmc: sdhci-of-dwcmshc: add rockchip platform support")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220809173742.178440-1-limings@nvidia.com
    [Ulf: Clarified the commit message a bit]
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 68b6cbaa318e58a458cce8fc76dec7e58d5cc7db
Author: Sebastian Reichel <sebastian.reichel@collabora.com>
Date:   Wed May 4 23:32:40 2022 +0200

    mmc: sdhci-of-dwcmshc: rename rk3568 to rk35xx
    
    [ Upstream commit 86e1a8e1f9b555af342c53ae06284eeeab9a4263 ]
    
    Prepare driver for rk3588 support by renaming the internal data
    structures.
    
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Link: https://lore.kernel.org/r/20220504213251.264819-11-sebastian.reichel@collabora.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c038e4094ba2237788e4001c4dd992638774e86e
Author: Yifeng Zhao <yifeng.zhao@rock-chips.com>
Date:   Wed May 4 23:32:39 2022 +0200

    mmc: sdhci-of-dwcmshc: add reset call back for rockchip Socs
    
    [ Upstream commit 70f832206fe72e9998b46363e8e59e89b0b757bc ]
    
    The reset function build in the SDHCI will not reset the logic
    circuit related to the tuning function, which may cause data
    reading errors. Resetting the complete SDHCI controller through
    the reset controller fixes the issue.
    
    Signed-off-by: Yifeng Zhao <yifeng.zhao@rock-chips.com>
    [rebase, use optional variant of reset getter]
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Link: https://lore.kernel.org/r/20220504213251.264819-10-sebastian.reichel@collabora.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6a74ee2a7b2a361b966bcdaa693e2b71d87899a
Author: Wenbin Mei <wenbin.mei@mediatek.com>
Date:   Thu Jul 28 16:00:48 2022 +0800

    mmc: mtk-sd: Clear interrupts when cqe off/disable
    
    [ Upstream commit cc5d1692600613e72f32af60e27330fe0c79f4fe ]
    
    Currently we don't clear MSDC interrupts when cqe off/disable, which led
    to the data complete interrupt will be reserved for the next command.
    If the next command with data transfer after cqe off/disable, we process
    the CMD ready interrupt and trigger DMA start for data, but the data
    complete interrupt is already exists, then SW assume that the data transfer
    is complete, SW will trigger DMA stop, but the data may not be transmitted
    yet or is transmitting, so we may encounter the following error:
    mtk-msdc 11230000.mmc: CMD bus busy detected.
    
    Signed-off-by: Wenbin Mei <wenbin.mei@mediatek.com>
    Fixes: 88bd652b3c74 ("mmc: mediatek: command queue support")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220728080048.21336-1-wenbin.mei@mediatek.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4676773ea117624ced48fdf9806d5e0dc051bd7f
Author: Chris Wilson <chris.p.wilson@intel.com>
Date:   Wed Jul 27 14:29:54 2022 +0200

    drm/i915/gt: Skip TLB invalidations once wedged
    
    [ Upstream commit e5a95c83ed1492c0f442b448b20c90c8faaf702b ]
    
    Skip all further TLB invalidations once the device is wedged and
    had been reset, as, on such cases, it can no longer process instructions
    on the GPU and the user no longer has access to the TLB's in each engine.
    
    So, an attempt to do a TLB cache invalidation will produce a timeout.
    
    That helps to reduce the performance regression introduced by TLB
    invalidate logic.
    
    Cc: stable@vger.kernel.org
    Fixes: 7938d61591d3 ("drm/i915: Flush TLBs before releasing backing store")
    Signed-off-by: Chris Wilson <chris.p.wilson@intel.com>
    Cc: Fei Yang <fei.yang@intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
    Acked-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/5aa86564b9ec5fe7fe605c1dd7de76855401ed73.1658924372.git.mchehab@kernel.org
    (cherry picked from commit be0366f168033374a93e4c43fdaa1a90ab905184)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0582f5ac1ea0aa0b147f664731009ac28b8ccfa
Author: Michael Hübner <michaelh.95@t-online.de>
Date:   Fri Aug 5 10:05:23 2022 +0200

    HID: thrustmaster: Add sparco wheel and fix array length
    
    commit d9a17651f3749e69890db57ca66e677dfee70829 upstream.
    
    Add device id for the Sparco R383 Mod wheel.
    
    Fix wheel info array length to match actual wheel count present in the array.
    
    Signed-off-by: Michael Hübner <michaelh.95@t-online.de>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77f8e40a3cbbd9d85f732a1b2aa0eccf2eaee755
Author: Josh Kilmer <srjek2@gmail.com>
Date:   Thu Jul 28 12:51:11 2022 -0500

    HID: asus: ROG NKey: Ignore portion of 0x5a report
    
    commit 1c0cc9d11c665020cbeb80e660fb8929164407f4 upstream.
    
    On an Asus G513QY, of the 5 bytes in a 0x5a report, only the first byte
    is a meaningful keycode. The other bytes are zeroed out or hold garbage
    from the last packet sent to the keyboard.
    
    This patch fixes up the report descriptor for this event so that the
    general hid code will only process 1 byte for keycodes, avoiding
    spurious key events and unmapped Asus vendor usagepage code warnings.
    
    Signed-off-by: Josh Kilmer <srjek2@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d74ce3ece4028a85aacf0d26a5ce13c872fcb949
Author: Akihiko Odaki <akihiko.odaki@gmail.com>
Date:   Tue Aug 16 19:21:20 2022 +0900

    HID: AMD_SFH: Add a DMI quirk entry for Chromebooks
    
    commit adada3f4930ac084740ea340bd8e94028eba4f22 upstream.
    
    Google Chromebooks use Chrome OS Embedded Controller Sensor Hub instead
    of Sensor Hub Fusion and leaves MP2 uninitialized, which disables all
    functionalities, even including the registers necessary for feature
    detections.
    
    The behavior was observed with Lenovo ThinkPad C13 Yoga.
    
    Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
    Suggested-by: Mario Limonciello <mario.limonciello@amd.com>
    Acked-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a569d41c5aba7ebbd52ca6f495ea0134178d489d
Author: Steev Klimaszewski <steev@kali.org>
Date:   Thu Aug 18 21:39:24 2022 -0500

    HID: add Lenovo Yoga C630 battery quirk
    
    commit 3a47fa7b14c7d9613909a844aba27f99d3c58634 upstream.
    
    Similar to the Surface Go devices, the Elantech touchscreen/digitizer in
    the Lenovo Yoga C630 mistakenly reports the battery of the stylus, and
    always reports an empty battery.
    
    Apply the HID_BATTERY_QUIRK_IGNORE quirk to ignore this battery and
    prevent the erroneous low battery warnings.
    
    Signed-off-by: Steev Klimaszewski <steev@kali.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b08469874a1628bd2772dee915fbf7645d0dae08
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sun Aug 28 09:41:43 2022 +0200

    ALSA: usb-audio: Add quirk for LH Labs Geek Out HD Audio 1V5
    
    commit 5f3d9e8161bb8cb23ab3b4678cd13f6e90a06186 upstream.
    
    The USB DAC from LH Labs (2522:0007) seems requiring the same quirk as
    Sony Walkman to set up the interface like UAC1; otherwise it gets the
    constant errors "usb_set_interface failed (-71)".  This patch adds a
    quirk entry for addressing the buggy behavior.
    
    Reported-by: Lennert Van Alboom <lennert@vanalboom.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/T3VPXtCc4uFws9Gfh2RjX6OdwM1RqfC6VqQr--_LMDyB2x5N3p9_q6AtPna17IXhHwBtcJVdXuS80ZZSCMjh_BafIbnzJPhbrkmhmWS6DlI=@vanalboom.org
    Link: https://lore.kernel.org/r/20220828074143.14736-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c18a209b56e37b2a60414f714bd70b084ef25835
Author: Jann Horn <jannh@google.com>
Date:   Wed Aug 31 19:06:00 2022 +0200

    mm/rmap: Fix anon_vma->degree ambiguity leading to double-reuse
    
    commit 2555283eb40df89945557273121e9393ef9b542b upstream.
    
    anon_vma->degree tracks the combined number of child anon_vmas and VMAs
    that use the anon_vma as their ->anon_vma.
    
    anon_vma_clone() then assumes that for any anon_vma attached to
    src->anon_vma_chain other than src->anon_vma, it is impossible for it to
    be a leaf node of the VMA tree, meaning that for such VMAs ->degree is
    elevated by 1 because of a child anon_vma, meaning that if ->degree
    equals 1 there are no VMAs that use the anon_vma as their ->anon_vma.
    
    This assumption is wrong because the ->degree optimization leads to leaf
    nodes being abandoned on anon_vma_clone() - an existing anon_vma is
    reused and no new parent-child relationship is created.  So it is
    possible to reuse an anon_vma for one VMA while it is still tied to
    another VMA.
    
    This is an issue because is_mergeable_anon_vma() and its callers assume
    that if two VMAs have the same ->anon_vma, the list of anon_vmas
    attached to the VMAs is guaranteed to be the same.  When this assumption
    is violated, vma_merge() can merge pages into a VMA that is not attached
    to the corresponding anon_vma, leading to dangling page->mapping
    pointers that will be dereferenced during rmap walks.
    
    Fix it by separately tracking the number of child anon_vmas and the
    number of VMAs using the anon_vma as their ->anon_vma.
    
    Fixes: 7a3ef208e662 ("mm: prevent endless growth of anon_vma hierarchy")
    Cc: stable@kernel.org
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a75987714bd2d8e59840667a28e15c1fa5c47554
Author: Zhengchao Shao <shaozhengchao@huawei.com>
Date:   Fri Jul 15 19:55:59 2022 +0800

    bpf: Don't redirect packets with invalid pkt_len
    
    commit fd1894224407c484f652ad456e1ce423e89bb3eb upstream.
    
    Syzbot found an issue [1]: fq_codel_drop() try to drop a flow whitout any
    skbs, that is, the flow->head is null.
    The root cause, as the [2] says, is because that bpf_prog_test_run_skb()
    run a bpf prog which redirects empty skbs.
    So we should determine whether the length of the packet modified by bpf
    prog or others like bpf_prog_test is valid before forwarding it directly.
    
    LINK: [1] https://syzkaller.appspot.com/bug?id=0b84da80c2917757915afa89f7738a9d16ec96c5
    LINK: [2] https://www.spinics.net/lists/netdev/msg777503.html
    
    Reported-by: syzbot+7a12909485b94426aceb@syzkaller.appspotmail.com
    Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
    Reviewed-by: Stanislav Fomichev <sdf@google.com>
    Link: https://lore.kernel.org/r/20220715115559.139691-1-shaozhengchao@huawei.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4ae97295984ff1b9b340ed18ae1b066f36b7835
Author: Yang Jihong <yangjihong1@huawei.com>
Date:   Thu Aug 18 11:26:59 2022 +0800

    ftrace: Fix NULL pointer dereference in is_ftrace_trampoline when ftrace is dead
    
    commit c3b0f72e805f0801f05fa2aa52011c4bfc694c44 upstream.
    
    ftrace_startup does not remove ops from ftrace_ops_list when
    ftrace_startup_enable fails:
    
    register_ftrace_function
      ftrace_startup
        __register_ftrace_function
          ...
          add_ftrace_ops(&ftrace_ops_list, ops)
          ...
        ...
        ftrace_startup_enable // if ftrace failed to modify, ftrace_disabled is set to 1
        ...
      return 0 // ops is in the ftrace_ops_list.
    
    When ftrace_disabled = 1, unregister_ftrace_function simply returns without doing anything:
    unregister_ftrace_function
      ftrace_shutdown
        if (unlikely(ftrace_disabled))
                return -ENODEV;  // return here, __unregister_ftrace_function is not executed,
                                 // as a result, ops is still in the ftrace_ops_list
        __unregister_ftrace_function
        ...
    
    If ops is dynamically allocated, it will be free later, in this case,
    is_ftrace_trampoline accesses NULL pointer:
    
    is_ftrace_trampoline
      ftrace_ops_trampoline
        do_for_each_ftrace_op(op, ftrace_ops_list) // OOPS! op may be NULL!
    
    Syzkaller reports as follows:
    [ 1203.506103] BUG: kernel NULL pointer dereference, address: 000000000000010b
    [ 1203.508039] #PF: supervisor read access in kernel mode
    [ 1203.508798] #PF: error_code(0x0000) - not-present page
    [ 1203.509558] PGD 800000011660b067 P4D 800000011660b067 PUD 130fb8067 PMD 0
    [ 1203.510560] Oops: 0000 [#1] SMP KASAN PTI
    [ 1203.511189] CPU: 6 PID: 29532 Comm: syz-executor.2 Tainted: G    B   W         5.10.0 #8
    [ 1203.512324] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
    [ 1203.513895] RIP: 0010:is_ftrace_trampoline+0x26/0xb0
    [ 1203.514644] Code: ff eb d3 90 41 55 41 54 49 89 fc 55 53 e8 f2 00 fd ff 48 8b 1d 3b 35 5d 03 e8 e6 00 fd ff 48 8d bb 90 00 00 00 e8 2a 81 26 00 <48> 8b ab 90 00 00 00 48 85 ed 74 1d e8 c9 00 fd ff 48 8d bb 98 00
    [ 1203.518838] RSP: 0018:ffffc900012cf960 EFLAGS: 00010246
    [ 1203.520092] RAX: 0000000000000000 RBX: 000000000000007b RCX: ffffffff8a331866
    [ 1203.521469] RDX: 0000000000000000 RSI: 0000000000000008 RDI: 000000000000010b
    [ 1203.522583] RBP: 0000000000000000 R08: 0000000000000000 R09: ffffffff8df18b07
    [ 1203.523550] R10: fffffbfff1be3160 R11: 0000000000000001 R12: 0000000000478399
    [ 1203.524596] R13: 0000000000000000 R14: ffff888145088000 R15: 0000000000000008
    [ 1203.525634] FS:  00007f429f5f4700(0000) GS:ffff8881daf00000(0000) knlGS:0000000000000000
    [ 1203.526801] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1203.527626] CR2: 000000000000010b CR3: 0000000170e1e001 CR4: 00000000003706e0
    [ 1203.528611] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 1203.529605] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    
    Therefore, when ftrace_startup_enable fails, we need to rollback registration
    process and remove ops from ftrace_ops_list.
    
    Link: https://lkml.kernel.org/r/20220818032659.56209-1-yangjihong1@huawei.com
    
    Suggested-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Yang Jihong <yangjihong1@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34c3dea1189525cd533071ed5c176fc4ea8d982b
Author: Letu Ren <fantasquex@gmail.com>
Date:   Thu Aug 18 18:44:24 2022 +0800

    fbdev: fb_pm2fb: Avoid potential divide by zero error
    
    commit 19f953e7435644b81332dd632ba1b2d80b1e37af upstream.
    
    In `do_fb_ioctl()` of fbmem.c, if cmd is FBIOPUT_VSCREENINFO, var will be
    copied from user, then go through `fb_set_var()` and
    `info->fbops->fb_check_var()` which could may be `pm2fb_check_var()`.
    Along the path, `var->pixclock` won't be modified. This function checks
    whether reciprocal of `var->pixclock` is too high. If `var->pixclock` is
    zero, there will be a divide by zero error. So, it is necessary to check
    whether denominator is zero to avoid crash. As this bug is found by
    Syzkaller, logs are listed below.
    
    divide error in pm2fb_check_var
    Call Trace:
     <TASK>
     fb_set_var+0x367/0xeb0 drivers/video/fbdev/core/fbmem.c:1015
     do_fb_ioctl+0x234/0x670 drivers/video/fbdev/core/fbmem.c:1110
     fb_ioctl+0xdd/0x130 drivers/video/fbdev/core/fbmem.c:1189
    
    Reported-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: Letu Ren <fantasquex@gmail.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5d1cb908131e939bd8b63b8e5e23365bbc2edaf
Author: Hawkins Jiawei <yin31149@gmail.com>
Date:   Fri Aug 5 15:48:34 2022 +0800

    net: fix refcount bug in sk_psock_get (2)
    
    commit 2a0133723f9ebeb751cfce19f74ec07e108bef1f upstream.
    
    Syzkaller reports refcount bug as follows:
    ------------[ cut here ]------------
    refcount_t: saturated; leaking memory.
    WARNING: CPU: 1 PID: 3605 at lib/refcount.c:19 refcount_warn_saturate+0xf4/0x1e0 lib/refcount.c:19
    Modules linked in:
    CPU: 1 PID: 3605 Comm: syz-executor208 Not tainted 5.18.0-syzkaller-03023-g7e062cda7d90 #0
     <TASK>
     __refcount_add_not_zero include/linux/refcount.h:163 [inline]
     __refcount_inc_not_zero include/linux/refcount.h:227 [inline]
     refcount_inc_not_zero include/linux/refcount.h:245 [inline]
     sk_psock_get+0x3bc/0x410 include/linux/skmsg.h:439
     tls_data_ready+0x6d/0x1b0 net/tls/tls_sw.c:2091
     tcp_data_ready+0x106/0x520 net/ipv4/tcp_input.c:4983
     tcp_data_queue+0x25f2/0x4c90 net/ipv4/tcp_input.c:5057
     tcp_rcv_state_process+0x1774/0x4e80 net/ipv4/tcp_input.c:6659
     tcp_v4_do_rcv+0x339/0x980 net/ipv4/tcp_ipv4.c:1682
     sk_backlog_rcv include/net/sock.h:1061 [inline]
     __release_sock+0x134/0x3b0 net/core/sock.c:2849
     release_sock+0x54/0x1b0 net/core/sock.c:3404
     inet_shutdown+0x1e0/0x430 net/ipv4/af_inet.c:909
     __sys_shutdown_sock net/socket.c:2331 [inline]
     __sys_shutdown_sock net/socket.c:2325 [inline]
     __sys_shutdown+0xf1/0x1b0 net/socket.c:2343
     __do_sys_shutdown net/socket.c:2351 [inline]
     __se_sys_shutdown net/socket.c:2349 [inline]
     __x64_sys_shutdown+0x50/0x70 net/socket.c:2349
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x46/0xb0
     </TASK>
    
    During SMC fallback process in connect syscall, kernel will
    replaces TCP with SMC. In order to forward wakeup
    smc socket waitqueue after fallback, kernel will sets
    clcsk->sk_user_data to origin smc socket in
    smc_fback_replace_callbacks().
    
    Later, in shutdown syscall, kernel will calls
    sk_psock_get(), which treats the clcsk->sk_user_data
    as psock type, triggering the refcnt warning.
    
    So, the root cause is that smc and psock, both will use
    sk_user_data field. So they will mismatch this field
    easily.
    
    This patch solves it by using another bit(defined as
    SK_USER_DATA_PSOCK) in PTRMASK, to mark whether
    sk_user_data points to a psock object or not.
    This patch depends on a PTRMASK introduced in commit f1ff5ce2cd5e
    ("net, sk_msg: Clear sk_user_data pointer on clone if tagged").
    
    For there will possibly be more flags in the sk_user_data field,
    this patch also refactor sk_user_data flags code to be more generic
    to improve its maintainability.
    
    Reported-and-tested-by: syzbot+5f26f85569bd179c18ce@syzkaller.appspotmail.com
    Suggested-by: Jakub Kicinski <kuba@kernel.org>
    Acked-by: Wen Gu <guwen@linux.alibaba.com>
    Signed-off-by: Hawkins Jiawei <yin31149@gmail.com>
    Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dfd27a737283313a3e626e97b9d9b2d8d6a94188
Author: Karthik Alapati <mail@karthek.com>
Date:   Thu Jul 28 21:13:17 2022 +0530

    HID: hidraw: fix memory leak in hidraw_release()
    
    commit a5623a203cffe2d2b84d2f6c989d9017db1856af upstream.
    
    Free the buffered reports before deleting the list entry.
    
    BUG: memory leak
    unreferenced object 0xffff88810e72f180 (size 32):
      comm "softirq", pid 0, jiffies 4294945143 (age 16.080s)
      hex dump (first 32 bytes):
        64 f3 c6 6a d1 88 07 04 00 00 00 00 00 00 00 00  d..j............
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff814ac6c3>] kmemdup+0x23/0x50 mm/util.c:128
        [<ffffffff8357c1d2>] kmemdup include/linux/fortify-string.h:440 [inline]
        [<ffffffff8357c1d2>] hidraw_report_event+0xa2/0x150 drivers/hid/hidraw.c:521
        [<ffffffff8356ddad>] hid_report_raw_event+0x27d/0x740 drivers/hid/hid-core.c:1992
        [<ffffffff8356e41e>] hid_input_report+0x1ae/0x270 drivers/hid/hid-core.c:2065
        [<ffffffff835f0d3f>] hid_irq_in+0x1ff/0x250 drivers/hid/usbhid/hid-core.c:284
        [<ffffffff82d3c7f9>] __usb_hcd_giveback_urb+0xf9/0x230 drivers/usb/core/hcd.c:1670
        [<ffffffff82d3cc26>] usb_hcd_giveback_urb+0x1b6/0x1d0 drivers/usb/core/hcd.c:1747
        [<ffffffff82ef1e14>] dummy_timer+0x8e4/0x14c0 drivers/usb/gadget/udc/dummy_hcd.c:1988
        [<ffffffff812f50a8>] call_timer_fn+0x38/0x200 kernel/time/timer.c:1474
        [<ffffffff812f5586>] expire_timers kernel/time/timer.c:1519 [inline]
        [<ffffffff812f5586>] __run_timers.part.0+0x316/0x430 kernel/time/timer.c:1790
        [<ffffffff812f56e4>] __run_timers kernel/time/timer.c:1768 [inline]
        [<ffffffff812f56e4>] run_timer_softirq+0x44/0x90 kernel/time/timer.c:1803
        [<ffffffff848000e6>] __do_softirq+0xe6/0x2ea kernel/softirq.c:571
        [<ffffffff81246db0>] invoke_softirq kernel/softirq.c:445 [inline]
        [<ffffffff81246db0>] __irq_exit_rcu kernel/softirq.c:650 [inline]
        [<ffffffff81246db0>] irq_exit_rcu+0xc0/0x110 kernel/softirq.c:662
        [<ffffffff84574f02>] sysvec_apic_timer_interrupt+0xa2/0xd0 arch/x86/kernel/apic/apic.c:1106
        [<ffffffff84600c8b>] asm_sysvec_apic_timer_interrupt+0x1b/0x20 arch/x86/include/asm/idtentry.h:649
        [<ffffffff8458a070>] native_safe_halt arch/x86/include/asm/irqflags.h:51 [inline]
        [<ffffffff8458a070>] arch_safe_halt arch/x86/include/asm/irqflags.h:89 [inline]
        [<ffffffff8458a070>] acpi_safe_halt drivers/acpi/processor_idle.c:111 [inline]
        [<ffffffff8458a070>] acpi_idle_do_entry+0xc0/0xd0 drivers/acpi/processor_idle.c:554
    
    Link: https://syzkaller.appspot.com/bug?id=19a04b43c75ed1092021010419b5e560a8172c4f
    Reported-by: syzbot+f59100a0428e6ded9443@syzkaller.appspotmail.com
    Signed-off-by: Karthik Alapati <mail@karthek.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2f6e67522916f53ad8ccd4dbe68dcf76e9776e5
Author: Dongliang Mu <mudongliangabcd@gmail.com>
Date:   Thu Jun 9 08:35:28 2022 +0100

    media: pvrusb2: fix memory leak in pvr_probe
    
    commit 945a9a8e448b65bec055d37eba58f711b39f66f0 upstream.
    
    The error handling code in pvr2_hdw_create forgets to unregister the
    v4l2 device. When pvr2_hdw_create returns back to pvr2_context_create,
    it calls pvr2_context_destroy to destroy context, but mp->hdw is NULL,
    which leads to that pvr2_hdw_destroy directly returns.
    
    Fix this by adding v4l2_device_unregister to decrease the refcount of
    usb interface.
    
    Reported-by: syzbot+77b432d57c4791183ed4@syzkaller.appspotmail.com
    Signed-off-by: Dongliang Mu <mudongliangabcd@gmail.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e658538c610c6047b3c9f552e73801894d9284b1
Author: Vivek Kasireddy <vivek.kasireddy@intel.com>
Date:   Fri May 20 13:52:35 2022 -0700

    udmabuf: Set the DMA mask for the udmabuf device (v2)
    
    commit 9e9fa6a9198b767b00f48160800128e83a038f9f upstream.
    
    If the DMA mask is not set explicitly, the following warning occurs
    when the userspace tries to access the dma-buf via the CPU as
    reported by syzbot here:
    
    WARNING: CPU: 1 PID: 3595 at kernel/dma/mapping.c:188
    __dma_map_sg_attrs+0x181/0x1f0 kernel/dma/mapping.c:188
    Modules linked in:
    CPU: 0 PID: 3595 Comm: syz-executor249 Not tainted
    5.17.0-rc2-syzkaller-00316-g0457e5153e0e #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    RIP: 0010:__dma_map_sg_attrs+0x181/0x1f0 kernel/dma/mapping.c:188
    Code: 00 00 00 00 00 fc ff df 48 c1 e8 03 80 3c 10 00 75 71 4c 8b 3d c0
    83 b5 0d e9 db fe ff ff e8 b6 0f 13 00 0f 0b e8 af 0f 13 00 <0f> 0b 45
       31 e4 e9 54 ff ff ff e8 a0 0f 13 00 49 8d 7f 50 48 b8 00
    RSP: 0018:ffffc90002a07d68 EFLAGS: 00010293
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
    RDX: ffff88807e25e2c0 RSI: ffffffff81649e91 RDI: ffff88801b848408
    RBP: ffff88801b848000 R08: 0000000000000002 R09: ffff88801d86c74f
    R10: ffffffff81649d72 R11: 0000000000000001 R12: 0000000000000002
    R13: ffff88801d86c680 R14: 0000000000000001 R15: 0000000000000000
    FS:  0000555556e30300(0000) GS:ffff8880b9d00000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00000000200000cc CR3: 000000001d74a000 CR4: 00000000003506e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     dma_map_sgtable+0x70/0xf0 kernel/dma/mapping.c:264
     get_sg_table.isra.0+0xe0/0x160 drivers/dma-buf/udmabuf.c:72
     begin_cpu_udmabuf+0x130/0x1d0 drivers/dma-buf/udmabuf.c:126
     dma_buf_begin_cpu_access+0xfd/0x1d0 drivers/dma-buf/dma-buf.c:1164
     dma_buf_ioctl+0x259/0x2b0 drivers/dma-buf/dma-buf.c:363
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:874 [inline]
     __se_sys_ioctl fs/ioctl.c:860 [inline]
     __x64_sys_ioctl+0x193/0x200 fs/ioctl.c:860
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    RIP: 0033:0x7f62fcf530f9
    Code: 28 c3 e8 2a 14 00 00 66 2e 0f 1f 84 00 00 00 00 00 48 89 f8 48 89
    f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01
    f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007ffe3edab9b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f62fcf530f9
    RDX: 0000000020000200 RSI: 0000000040086200 RDI: 0000000000000006
    RBP: 00007f62fcf170e0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f62fcf17170
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
     </TASK>
    
    v2: Dont't forget to deregister if DMA mask setup fails.
    
    Reported-by: syzbot+10e27961f4da37c443b2@syzkaller.appspotmail.com
    Cc: Gerd Hoffmann <kraxel@redhat.com>
    Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20220520205235.3687336-1-vivek.kasireddy@intel.com
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 989560b6d9e00d99e07bc33067fa1c770994bf4d
Author: Lee Jones <lee.jones@linaro.org>
Date:   Fri Jul 8 08:40:09 2022 +0100

    HID: steam: Prevent NULL pointer dereference in steam_{recv,send}_report
    
    commit cd11d1a6114bd4bc6450ae59f6e110ec47362126 upstream.
    
    It is possible for a malicious device to forgo submitting a Feature
    Report.  The HID Steam driver presently makes no prevision for this
    and de-references the 'struct hid_report' pointer obtained from the
    HID devices without first checking its validity.  Let's change that.
    
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: linux-input@vger.kernel.org
    Fixes: c164d6abf3841 ("HID: add driver for Valve Steam Controller")
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67216f47922d9bab707bdb50e2b76e81c05ff261
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Sep 1 13:01:03 2022 +0200

    Revert "PCI/portdrv: Don't disable AER reporting in get_port_device_capability()"
    
    This reverts commit c968af565ca6c18b2f2af60fc1493c8db15abb3c which is
    commit 8795e182b02dc87e343c79e73af6b8b7f9c5e635 upstream.
    
    It is reported to cause problems, so drop it from the stable trees for
    now until it gets sorted out.
    
    Link: https://lore.kernel.org/r/47b775c5-57fa-5edf-b59e-8a9041ffbee7@candelatech.com
    Reported-by: Ben Greear <greearb@candelatech.com>
    Cc: Stefan Roese <sr@denx.de>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Pali Rohár <pali@kernel.org>
    Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
    Cc: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
    Cc: Michal Simek <michal.simek@xilinx.com>
    Cc: Yao Hongbo <yaohongbo@linux.alibaba.com>
    Cc: Naveen Naidu <naveennaidu479@gmail.com>
    Cc: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e38a363dc63c5747f54029f11683886280dfef5
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Fri Aug 12 15:33:57 2022 -0700

    Bluetooth: L2CAP: Fix build errors in some archs
    
    commit b840304fb46cdf7012722f456bce06f151b3e81b upstream.
    
    This attempts to fix the follow errors:
    
    In function 'memcmp',
        inlined from 'bacmp' at ./include/net/bluetooth/bluetooth.h:347:9,
        inlined from 'l2cap_global_chan_by_psm' at
        net/bluetooth/l2cap_core.c:2003:15:
    ./include/linux/fortify-string.h:44:33: error: '__builtin_memcmp'
    specified bound 6 exceeds source size 0 [-Werror=stringop-overread]
       44 | #define __underlying_memcmp     __builtin_memcmp
          |                                 ^
    ./include/linux/fortify-string.h:420:16: note: in expansion of macro
    '__underlying_memcmp'
      420 |         return __underlying_memcmp(p, q, size);
          |                ^~~~~~~~~~~~~~~~~~~
    In function 'memcmp',
        inlined from 'bacmp' at ./include/net/bluetooth/bluetooth.h:347:9,
        inlined from 'l2cap_global_chan_by_psm' at
        net/bluetooth/l2cap_core.c:2004:15:
    ./include/linux/fortify-string.h:44:33: error: '__builtin_memcmp'
    specified bound 6 exceeds source size 0 [-Werror=stringop-overread]
       44 | #define __underlying_memcmp     __builtin_memcmp
          |                                 ^
    ./include/linux/fortify-string.h:420:16: note: in expansion of macro
    '__underlying_memcmp'
      420 |         return __underlying_memcmp(p, q, size);
          |                ^~~~~~~~~~~~~~~~~~~
    
    Fixes: 332f1795ca20 ("Bluetooth: L2CAP: Fix l2cap_global_chan_by_psm regression")
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e0ffef173081f0e914a7e39caafae16120db111
Author: Jing Leng <jleng@ambarella.com>
Date:   Tue May 17 18:51:28 2022 +0800

    kbuild: Fix include path in scripts/Makefile.modpost
    
    commit 23a0cb8e3225122496bfa79172005c587c2d64bf upstream.
    
    When building an external module, if users don't need to separate the
    compilation output and source code, they run the following command:
    "make -C $(LINUX_SRC_DIR) M=$(PWD)". At this point, "$(KBUILD_EXTMOD)"
    and "$(src)" are the same.
    
    If they need to separate them, they run "make -C $(KERNEL_SRC_DIR)
    O=$(KERNEL_OUT_DIR) M=$(OUT_DIR) src=$(PWD)". Before running the
    command, they need to copy "Kbuild" or "Makefile" to "$(OUT_DIR)" to
    prevent compilation failure.
    
    So the kernel should change the included path to avoid the copy operation.
    
    Signed-off-by: Jing Leng <jleng@ambarella.com>
    [masahiro: I do not think "M=$(OUT_DIR) src=$(PWD)" is the official way,
    but this patch is a nice clean up anyway.]
    Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Nicolas Schier <n.schier@avm.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9d7ca0c4640cbebe6840ee3bac66a25a9bacaf5
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Aug 29 14:30:24 2022 +0100

    io_uring: fix UAF due to missing POLLFREE handling
    
    [ upstream commmit 791f3465c4afde02d7f16cf7424ca87070b69396 ]
    
    Fixes a problem described in 50252e4b5e989
    ("aio: fix use-after-free due to missing POLLFREE handling")
    and copies the approach used there.
    
    In short, we have to forcibly eject a poll entry when we meet POLLFREE.
    We can't rely on io_poll_get_ownership() as can't wait for potentially
    running tw handlers, so we use the fact that wqs are RCU freed. See
    Eric's patch and comments for more details.
    
    Reported-by: Eric Biggers <ebiggers@google.com>
    Link: https://lore.kernel.org/r/20211209010455.42744-6-ebiggers@kernel.org
    Reported-and-tested-by: syzbot+5426c7ed6868c705ca14@syzkaller.appspotmail.com
    Fixes: 221c5eb233823 ("io_uring: add support for IORING_OP_POLL")
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/4ed56b6f548f7ea337603a82315750449412748a.1642161259.git.asml.silence@gmail.com
    [axboe: drop non-functional change from patch]
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 182dc3aa5ae2f6e2ec6a95667845a819179a78e8
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Aug 29 14:30:23 2022 +0100

    io_uring: fix wrong arm_poll error handling
    
    [ upstream commmit 9d2ad2947a53abf5e5e6527a9eeed50a3a4cbc72 ]
    
    Leaving ip.error set when a request was punted to task_work execution is
    problematic, don't forget to clear it.
    
    Fixes: aa43477b04025 ("io_uring: poll rework")
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/a6c84ef4182c6962380aebe11b35bdcb25b0ccfb.1655852245.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c7259c83773f22f05159db51ca64d05057259f3
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Aug 29 14:30:22 2022 +0100

    io_uring: fail links when poll fails
    
    [ upstream commmit c487a5ad48831afa6784b368ec40d0ee50f2fe1b ]
    
    Don't forget to cancel all linked requests of poll request when
    __io_arm_poll_handler() failed.
    
    Fixes: aa43477b04025 ("io_uring: poll rework")
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/a78aad962460f9fdfe4aa4c0b62425c88f9415bc.1655852245.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c41e79a0c46457dc87d56db59c4dc93be2e38568
Author: Jens Axboe <axboe@kernel.dk>
Date:   Mon Aug 29 14:30:21 2022 +0100

    io_uring: bump poll refs to full 31-bits
    
    [ upstream commmit e2c0cb7c0cc72939b61a7efee376206725796625 ]
    
    The previous commit:
    
    1bc84c40088 ("io_uring: remove poll entry from list when canceling all")
    
    removed a potential overflow condition for the poll references. They
    are currently limited to 20-bits, even if we have 31-bits available. The
    upper bit is used to mark for cancelation.
    
    Bump the poll ref space to 31-bits, making that kind of situation much
    harder to trigger in general. We'll separately add overflow checking
    and handling.
    
    Fixes: aa43477b0402 ("io_uring: poll rework")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7524ec52caa893a3aeae85488f19dc2f71c8e7b9
Author: Jens Axboe <axboe@kernel.dk>
Date:   Mon Aug 29 14:30:20 2022 +0100

    io_uring: remove poll entry from list when canceling all
    
    [ upstream commmit 61bc84c4008812d784c398cfb54118c1ba396dfc ]
    
    When the ring is exiting, as part of the shutdown, poll requests are
    removed. But io_poll_remove_all() does not remove entries when finding
    them, and since completions are done out-of-band, we can find and remove
    the same entry multiple times.
    
    We do guard the poll execution by poll ownership, but that does not
    exclude us from reissuing a new one once the previous removal ownership
    goes away.
    
    This can race with poll execution as well, where we then end up seeing
    req->apoll be NULL because a previous task_work requeue finished the
    request.
    
    Remove the poll entry when we find it and get ownership of it. This
    prevents multiple invocations from finding it.
    
    Fixes: aa43477b0402 ("io_uring: poll rework")
    Reported-by: Dylan Yudaken <dylany@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95a004a223f82ca80a98a6b1d77df7636a976c45
Author: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
Date:   Mon Aug 29 14:30:19 2022 +0100

    io_uring: Remove unused function req_ref_put
    
    [ upstream commmit c84b8a3fef663933007e885535591b9d30bdc860 ]
    
    Fix the following clang warnings:
    
    fs/io_uring.c:1195:20: warning: unused function 'req_ref_put'
    [-Wunused-function].
    
    Fixes: aa43477b0402 ("io_uring: poll rework")
    Reported-by: Abaci Robot <abaci@linux.alibaba.com>
    Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20220113162005.3011-1-jiapeng.chong@linux.alibaba.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f770fba096a6d49dfb27b5880132bb0cc316ae2a
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Aug 29 14:30:18 2022 +0100

    io_uring: poll rework
    
    [ upstream commmit aa43477b040251f451db0d844073ac00a8ab66ee ]
    
    It's not possible to go forward with the current state of io_uring
    polling, we need a more straightforward and easier synchronisation.
    There are a lot of problems with how it is at the moment, including
    missing events on rewait.
    
    The main idea here is to introduce a notion of request ownership while
    polling, no one but the owner can modify any part but ->poll_refs of
    struct io_kiocb, that grants us protection against all sorts of races.
    
    Main users of such exclusivity are poll task_work handler, so before
    queueing a tw one should have/acquire ownership, which will be handed
    off to the tw handler.
    The other user is __io_arm_poll_handler() do initial poll arming. It
    starts taking the ownership, so tw handlers won't be run until it's
    released later in the function after vfs_poll. note: also prevents
    races in __io_queue_proc().
    Poll wake/etc. may not be able to get ownership, then they need to
    increase the poll refcount and the task_work should notice it and retry
    if necessary, see io_poll_check_events().
    There is also IO_POLL_CANCEL_FLAG flag to notify that we want to kill
    request.
    
    It makes cancellations more reliable, enables double multishot polling,
    fixes double poll rewait, fixes missing poll events and fixes another
    bunch of races.
    
    Even though it adds some overhead for new refcounting, and there are a
    couple of nice performance wins:
    - no req->refs refcounting for poll requests anymore
    - if the data is already there (once measured for some test to be 1-2%
      of all apoll requests), it removes it doesn't add atomics and removes
      spin_lock/unlock pair.
    - works well with multishots, we don't do remove from queue / add to
      queue for each new poll event.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/6b652927c77ed9580ea4330ac5612f0e0848c946.1639605189.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dc669632f0dae4738b8556ccf1ee9c274285c17
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Aug 29 14:30:17 2022 +0100

    io_uring: inline io_poll_complete
    
    [ upstream commmit eb6e6f0690c846f7de46181bab3954c12c96e11e ]
    
    Inline io_poll_complete(), it's simple and doesn't have any particular
    purpose.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/933d7ee3e4450749a2d892235462c8f18d030293.1633373302.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20bbcc316314faa8efb8453ceaa95ae128694448
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Aug 29 14:30:16 2022 +0100

    io_uring: kill poll linking optimisation
    
    [ upstream commmit ab1dab960b8352cee082db0f8a54dc92a948bfd7 ]
    
    With IORING_FEAT_FAST_POLL in place, io_put_req_find_next() for poll
    requests doesn't make much sense, and in any case re-adding it
    shouldn't be a problem considering batching in tctx_task_work(). We can
    remove it.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/15699682bf81610ec901d4e79d6da64baa9f70be.1639605189.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a85d7ac14f2215a0ea90d836115ca63dce13203a
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Aug 29 14:30:15 2022 +0100

    io_uring: move common poll bits
    
    [ upstream commmit 5641897a5e8fb8abeb07e89c71a788d3db3ec75e ]
    
    Move some poll helpers/etc up, we'll need them there shortly
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/6c5c3dba24c86aad5cd389a54a8c7412e6a0621d.1639605189.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 040e58f51c0b0a7564b55d27702d6fdc16e476e4
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Aug 29 14:30:14 2022 +0100

    io_uring: refactor poll update
    
    [ upstream commmit 2bbb146d96f4b45e17d6aeede300796bc1a96d68 ]
    
    Clean up io_poll_update() and unify cancellation paths for remove and
    update.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/5937138b6265a1285220e2fab1b28132c1d73ce3.1639605189.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b850d6ddc78878996039d79833f3d7fd755f0916
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Aug 29 14:30:13 2022 +0100

    io_uring: clean cqe filling functions
    
    [ upstream commmit 913a571affedd17239c4d4ea90c8874b32fc2191 ]
    
    Split io_cqring_fill_event() into a couple of more targeted functions.
    The first on is io_fill_cqe_aux() for completions that are not
    associated with request completions and doing the ->cq_extra accounting.
    Examples are additional CQEs from multishot poll and rsrc notifications.
    
    The second is io_fill_cqe_req(), should be called when it's a normal
    request completion. Nothing more to it at the moment, will be used in
    later patches.
    
    The last one is inlined __io_fill_cqe() for a finer grained control,
    should be used with caution and in hottest places.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/59a9117a4a44fc9efcf04b3afa51e0d080f5943c.1636559119.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c0ea4c8e54b1a2ac901ba90ba1e7946c66e92b8
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Aug 29 14:30:12 2022 +0100

    io_uring: correct fill events helpers types
    
    [ upstream commit 54daa9b2d80ab35824464b35a99f716e1cdf2ccb ]
    
    CQE result is a 32-bit integer, so the functions generating CQEs are
    better to accept not long but ints. Convert io_cqring_fill_event() and
    other helpers.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/7ca6f15255e9117eae28adcac272744cae29b113.1633373302.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    [pavel: backport]
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 285e77dbb36ff216244367acb8f2d436b941e78a
Author: James Morse <james.morse@arm.com>
Date:   Mon Jul 4 16:57:32 2022 +0100

    arm64: errata: Add Cortex-A510 to the repeat tlbi list
    
    commit 39fdb65f52e9a53d32a6ba719f96669fd300ae78 upstream.
    
    Cortex-A510 is affected by an erratum where in rare circumstances the
    CPUs may not handle a race between a break-before-make sequence on one
    CPU, and another CPU accessing the same page. This could allow a store
    to a page that has been unmapped.
    
    Work around this by adding the affected CPUs to the list that needs
    TLB sequences to be done twice.
    
    Signed-off-by: James Morse <james.morse@arm.com>
    Link: https://lore.kernel.org/r/20220704155732.21216-1-james.morse@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Lucas Wei <lucaswei@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da60ddd80d09f8371fbba1a238a4b318d13ba698
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Tue Jul 12 21:05:42 2022 +0800

    mm/hugetlb: avoid corrupting page->mapping in hugetlb_mcopy_atomic_pte
    
    commit ab74ef708dc51df7cf2b8a890b9c6990fac5c0c6 upstream.
    
    In MCOPY_ATOMIC_CONTINUE case with a non-shared VMA, pages in the page
    cache are installed in the ptes.  But hugepage_add_new_anon_rmap is called
    for them mistakenly because they're not vm_shared.  This will corrupt the
    page->mapping used by page cache code.
    
    Link: https://lkml.kernel.org/r/20220712130542.18836-1-linmiaohe@huawei.com
    Fixes: f619147104c8 ("userfaultfd: add UFFDIO_CONTINUE ioctl")
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Axel Rasmussen <axelrasmussen@google.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Axel Rasmussen <axelrasmussen@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7a792dcd6a7e51d4406bacd46a6c7cfcc78f2f2
Author: Boqun Feng <boqun.feng@gmail.com>
Date:   Fri Mar 25 10:32:11 2022 +0800

    Drivers: hv: balloon: Support status report for larger page sizes
    
    commit b3d6dd09ff00fdcf4f7c0cb54700ffd5dd343502 upstream.
    
    DM_STATUS_REPORT expects the numbers of pages in the unit of 4k pages
    (HV_HYP_PAGE) instead of guest pages, so to make it work when guest page
    sizes are larger than 4k, convert the numbers of guest pages into the
    numbers of HV_HYP_PAGEs.
    
    Note that the numbers of guest pages are still used for tracing because
    tracing is internal to the guest kernel.
    
    Reported-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Link: https://lore.kernel.org/r/20220325023212.1570049-2-boqun.feng@gmail.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2edbdfc89d9f4077d5255defe843248170013b3b
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Aug 25 22:04:56 2022 -0700

    crypto: lib - remove unneeded selection of XOR_BLOCKS
    
    commit 874b301985ef2f89b8b592ad255e03fb6fbfe605 upstream.
    
    CRYPTO_LIB_CHACHA_GENERIC doesn't need to select XOR_BLOCKS.  It perhaps
    was thought that it's needed for __crypto_xor, but that's not the case.
    
    Enabling XOR_BLOCKS is problematic because the XOR_BLOCKS code runs a
    benchmark when it is initialized.  That causes a boot time regression on
    systems that didn't have it enabled before.
    
    Therefore, remove this unnecessary and problematic selection.
    
    Fixes: e56e18985596 ("lib/crypto: add prompts back to crypto libraries")
    Cc: stable@vger.kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6db913f5e449fcc0d1577d22f6c1955216aef2d2
Author: Timo Alho <talho@nvidia.com>
Date:   Wed Jun 22 16:22:59 2022 +0300

    firmware: tegra: bpmp: Do only aligned access to IPC memory area
    
    commit a4740b148a04dc60e14fe6a1dfe216d3bae214fd upstream.
    
    Use memcpy_toio and memcpy_fromio variants of memcpy to guarantee no
    unaligned access to IPC memory area. This is to allow the IPC memory to
    be mapped as Device memory to further suppress speculative reads from
    happening within the 64 kB memory area above the IPC memory when 64 kB
    memory pages are used.
    
    Signed-off-by: Timo Alho <talho@nvidia.com>
    Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Cc: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80d46e73e8d3c935b6ac976caba9f5c5c6362b92
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Wed Jun 29 14:34:36 2022 +0200

    drm/vc4: hdmi: Depends on CONFIG_PM
    
    commit 72e2329e7c9bbe15e7a813670497ec9c6f919af3 upstream.
    
    We already depend on runtime PM to get the power domains and clocks for
    most of the devices supported by the vc4 driver, so let's just select it
    to make sure it's there.
    
    Link: https://lore.kernel.org/r/20220629123510.1915022-38-maxime@cerno.tech
    Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    (cherry picked from commit f1bc386b319e93e56453ae27e9e83817bb1f6f95)
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Cc: "Sudip Mukherjee (Codethink)" <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d2d12fb78150ba9a3ce7544456ec0da5638a7f9
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Wed Jun 29 14:34:37 2022 +0200

    drm/vc4: hdmi: Rework power up
    
    commit 258e483a4d5e97a6a8caa74381ddc1f395ac1c71 upstream.
    
    The current code tries to handle the case where CONFIG_PM isn't selected
    by first calling our runtime_resume implementation and then properly
    report the power state to the runtime_pm core.
    
    This allows to have a functionning device even if pm_runtime_get_*
    functions are nops.
    
    However, the device power state if CONFIG_PM is enabled is
    RPM_SUSPENDED, and thus our vc4_hdmi_write() and vc4_hdmi_read() calls
    in the runtime_pm hooks will now report a warning since the device might
    not be properly powered.
    
    Even more so, we need CONFIG_PM enabled since the previous RaspberryPi
    have a power domain that needs to be powered up for the HDMI controller
    to be usable.
    
    The previous patch has created a dependency on CONFIG_PM, now we can
    just assume it's there and only call pm_runtime_resume_and_get() to make
    sure our device is powered in bind.
    
    Link: https://lore.kernel.org/r/20220629123510.1915022-39-maxime@cerno.tech
    Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    (cherry picked from commit 53565c28e6af2cef6bbf438c34250135e3564459)
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Cc: "Sudip Mukherjee (Codethink)" <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8468ccbf4c445dfdfc7e5365dcaf1c18419a6680
Author: Adam Borowski <kilobyte@angband.pl>
Date:   Mon Nov 15 18:32:08 2021 +0100

    ACPI: thermal: drop an always true check
    
    commit e5b5d25444e9ee3ae439720e62769517d331fa39 upstream.
    
    Address of a field inside a struct can't possibly be null; gcc-12 warns
    about this.
    
    Signed-off-by: Adam Borowski <kilobyte@angband.pl>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8b07c05b69969c41efafda7022d6cb184d61bf9
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Tue Sep 28 20:13:33 2021 +0200

    drm/bridge: Add stubs for devm_drm_of_get_bridge when OF is disabled
    
    commit 59050d783848d9b62e9d8fb6ce0cd00771c2bf87 upstream.
    
    If CONFIG_OF is disabled, devm_drm_of_get_bridge won't be compiled in
    and drivers using that function will fail to build.
    
    Add an inline stub so that we can still build-test those cases.
    
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Acked-by: Randy Dunlap <rdunlap@infradead.org> # build-tested
    Link: https://patchwork.freedesktop.org/patch/msgid/20210928181333.1176840-1-maxime@cerno.tech
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ffb97fce282df03723995f5eed6a559d008078e
Author: Jann Horn <jannh@google.com>
Date:   Wed Aug 31 21:13:48 2022 +0200

    mm: Force TLB flush for PFNMAP mappings before unlink_file_vma()
    
    commit b67fbebd4cf980aecbcc750e1462128bffe8ae15 upstream.
    
    Some drivers rely on having all VMAs through which a PFN might be
    accessible listed in the rmap for correctness.
    However, on X86, it was possible for a VMA with stale TLB entries
    to not be listed in the rmap.
    
    This was fixed in mainline with
    commit b67fbebd4cf9 ("mmu_gather: Force tlb-flush VM_PFNMAP vmas"),
    but that commit relies on preceding refactoring in
    commit 18ba064e42df3 ("mmu_gather: Let there be one tlb_{start,end}_vma()
    implementation") and commit 1e9fdf21a4339 ("mmu_gather: Remove per arch
    tlb_{start,end}_vma()").
    
    This patch provides equivalent protection without needing that
    refactoring, by forcing a TLB flush between removing PTEs in
    unmap_vmas() and the call to unlink_file_vma() in free_pgtables().
    
    [This is a stable-specific rewrite of the upstream commit!]
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>