commit 45451e8015a91de5d1a512c3e3d7373bbcb58fb0
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Apr 27 14:39:02 2022 +0200

    Linux 5.15.36
    
    Link: https://lore.kernel.org/r/20220426081747.286685339@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Slade Watkins <slade@sladewatkins.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 bb906d15a99eb50da78d2e51c782648f3076e29e
Author: Alex Elder <elder@linaro.org>
Date:   Tue Feb 1 08:07:23 2022 -0600

    arm64: dts: qcom: add IPA qcom,qmp property
    
    commit 73419e4d2fd1b838fcb1df6a978d67b3ae1c5c01 upstream.
    
    At least three platforms require the "qcom,qmp" property to be
    specified, so the IPA driver can request register retention across
    power collapse.  Update DTS files accordingly.
    
    Signed-off-by: Alex Elder <elder@linaro.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20220201140723.467431-1-elder@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ea01e64632f524edf54cec6ddacb97a92aeb2a0
Author: Khazhismel Kumykov <khazhy@google.com>
Date:   Thu Apr 14 15:40:56 2022 -0700

    block/compat_ioctl: fix range check in BLKGETSIZE
    
    commit ccf16413e520164eb718cf8b22a30438da80ff23 upstream.
    
    kernel ulong and compat_ulong_t may not be same width. Use type directly
    to eliminate mismatches.
    
    This would result in truncation rather than EFBIG for 32bit mode for
    large disks.
    
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Khazhismel Kumykov <khazhy@google.com>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Link: https://lore.kernel.org/r/20220414224056.2875681-1-khazhy@google.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a3c609feb11d2d5be986d578623cf7a2328e9f1
Author: Tudor Ambarus <tudor.ambarus@microchip.com>
Date:   Wed Apr 6 16:36:03 2022 +0300

    spi: atmel-quadspi: Fix the buswidth adjustment between spi-mem and controller
    
    commit 8c235cc25087495c4288d94f547e9d3061004991 upstream.
    
    Use the spi_mem_default_supports_op() core helper in order to take into
    account the buswidth specified by the user in device tree.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 0e6aae08e9ae ("spi: Add QuadSPI driver for Atmel SAMA5D2")
    Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Link: https://lore.kernel.org/r/20220406133604.455356-1-tudor.ambarus@microchip.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1b8f39c2475a1df597e6d1970e25bd64c89d774
Author: Ye Bin <yebin10@huawei.com>
Date:   Thu Mar 17 22:21:37 2022 +0800

    jbd2: fix a potential race while discarding reserved buffers after an abort
    
    commit 23e3d7f7061f8682c751c46512718f47580ad8f0 upstream.
    
    we got issue as follows:
    [   72.796117] EXT4-fs error (device sda): ext4_journal_check_start:83: comm fallocate: Detected aborted journal
    [   72.826847] EXT4-fs (sda): Remounting filesystem read-only
    fallocate: fallocate failed: Read-only file system
    [   74.791830] jbd2_journal_commit_transaction: jh=0xffff9cfefe725d90 bh=0x0000000000000000 end delay
    [   74.793597] ------------[ cut here ]------------
    [   74.794203] kernel BUG at fs/jbd2/transaction.c:2063!
    [   74.794886] invalid opcode: 0000 [#1] PREEMPT SMP PTI
    [   74.795533] CPU: 4 PID: 2260 Comm: jbd2/sda-8 Not tainted 5.17.0-rc8-next-20220315-dirty #150
    [   74.798327] RIP: 0010:__jbd2_journal_unfile_buffer+0x3e/0x60
    [   74.801971] RSP: 0018:ffffa828c24a3cb8 EFLAGS: 00010202
    [   74.802694] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
    [   74.803601] RDX: 0000000000000001 RSI: ffff9cfefe725d90 RDI: ffff9cfefe725d90
    [   74.804554] RBP: ffff9cfefe725d90 R08: 0000000000000000 R09: ffffa828c24a3b20
    [   74.805471] R10: 0000000000000001 R11: 0000000000000001 R12: ffff9cfefe725d90
    [   74.806385] R13: ffff9cfefe725d98 R14: 0000000000000000 R15: ffff9cfe833a4d00
    [   74.807301] FS:  0000000000000000(0000) GS:ffff9d01afb00000(0000) knlGS:0000000000000000
    [   74.808338] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   74.809084] CR2: 00007f2b81bf4000 CR3: 0000000100056000 CR4: 00000000000006e0
    [   74.810047] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   74.810981] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   74.811897] Call Trace:
    [   74.812241]  <TASK>
    [   74.812566]  __jbd2_journal_refile_buffer+0x12f/0x180
    [   74.813246]  jbd2_journal_refile_buffer+0x4c/0xa0
    [   74.813869]  jbd2_journal_commit_transaction.cold+0xa1/0x148
    [   74.817550]  kjournald2+0xf8/0x3e0
    [   74.819056]  kthread+0x153/0x1c0
    [   74.819963]  ret_from_fork+0x22/0x30
    
    Above issue may happen as follows:
            write                   truncate                   kjournald2
    generic_perform_write
     ext4_write_begin
      ext4_walk_page_buffers
       do_journal_get_write_access ->add BJ_Reserved list
     ext4_journalled_write_end
      ext4_walk_page_buffers
       write_end_fn
        ext4_handle_dirty_metadata
                    ***************JBD2 ABORT**************
         jbd2_journal_dirty_metadata
     -> return -EROFS, jh in reserved_list
                                                       jbd2_journal_commit_transaction
                                                        while (commit_transaction->t_reserved_list)
                                                          jh = commit_transaction->t_reserved_list;
                            truncate_pagecache_range
                             do_invalidatepage
                              ext4_journalled_invalidatepage
                               jbd2_journal_invalidatepage
                                journal_unmap_buffer
                                 __dispose_buffer
                                  __jbd2_journal_unfile_buffer
                                   jbd2_journal_put_journal_head ->put last ref_count
                                    __journal_remove_journal_head
                                     bh->b_private = NULL;
                                     jh->b_bh = NULL;
                                                          jbd2_journal_refile_buffer(journal, jh);
                                                            bh = jh2bh(jh);
                                                            ->bh is NULL, later will trigger null-ptr-deref
                                     journal_free_journal_head(jh);
    
    After commit 96f1e0974575, we no longer hold the j_state_lock while
    iterating over the list of reserved handles in
    jbd2_journal_commit_transaction().  This potentially allows the
    journal_head to be freed by journal_unmap_buffer while the commit
    codepath is also trying to free the BJ_Reserved buffers.  Keeping
    j_state_lock held while trying extends hold time of the lock
    minimally, and solves this issue.
    
    Fixes: 96f1e0974575("jbd2: avoid long hold times of j_state_lock while committing a transaction")
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20220317142137.1821590-1-yebin10@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e25c46c6eef4acb9156c1e2fb00e8330273288c
Author: Florian Westphal <fw@strlen.de>
Date:   Sun Jan 23 15:24:00 2022 +0100

    netfilter: nft_ct: fix use after free when attaching zone template
    
    commit 34243b9ec856309339172b1507379074156947e8 upstream.
    
    The conversion erroneously removed the refcount increment.
    In case we can use the percpu template, we need to increment
    the refcount, else it will be released when the skb gets freed.
    
    In case the slowpath is taken, the new template already has a
    refcount of 1.
    
    Fixes: 719774377622 ("netfilter: conntrack: convert to refcount_t api")
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b273d1fd18ebebdc5e99139f0c89b142d40ea9c
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Apr 14 21:57:49 2022 -0400

    ext4: force overhead calculation if the s_overhead_cluster makes no sense
    
    commit 85d825dbf4899a69407338bae462a59aa9a37326 upstream.
    
    If the file system does not use bigalloc, calculating the overhead is
    cheap, so force the recalculation of the overhead so we don't have to
    trust the precalculated overhead in the superblock.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52ca84a3edd1914e575450bcd1ce6cbc6e15e2cb
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Apr 14 21:31:27 2022 -0400

    ext4: fix overhead calculation to account for the reserved gdt blocks
    
    commit 10b01ee92df52c8d7200afead4d5e5f55a5c58b1 upstream.
    
    The kernel calculation was underestimating the overhead by not taking
    into account the reserved gdt blocks.  With this change, the overhead
    calculated by the kernel matches the overhead calculation in mke2fs.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b952563934c37f29788122081acb9ff9f2ab17a
Author: wangjianjian (C) <wangjianjian3@huawei.com>
Date:   Fri Apr 1 20:07:35 2022 +0800

    ext4, doc: fix incorrect h_reserved size
    
    commit 7102ffe4c166ca0f5e35137e9f9de83768c2d27d upstream.
    
    According to document and code, ext4_xattr_header's size is 32 bytes, so
    h_reserved size should be 3.
    
    Signed-off-by: Wang Jianjian <wangjianjian3@huawei.com>
    Link: https://lore.kernel.org/r/92fcc3a6-7d77-8c09-4126-377fcb4c46a5@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b90003771e5112e73d362ba4f4df03c7064ddc9
Author: Tadeusz Struk <tadeusz.struk@linaro.org>
Date:   Thu Mar 31 13:05:15 2022 -0700

    ext4: limit length to bitmap_maxbytes - blocksize in punch_hole
    
    commit 2da376228a2427501feb9d15815a45dbdbdd753e upstream.
    
    Syzbot found an issue [1] in ext4_fallocate().
    The C reproducer [2] calls fallocate(), passing size 0xffeffeff000ul,
    and offset 0x1000000ul, which, when added together exceed the
    bitmap_maxbytes for the inode. This triggers a BUG in
    ext4_ind_remove_space(). According to the comments in this function
    the 'end' parameter needs to be one block after the last block to be
    removed. In the case when the BUG is triggered it points to the last
    block. Modify the ext4_punch_hole() function and add constraint that
    caps the length to satisfy the one before laster block requirement.
    
    LINK: [1] https://syzkaller.appspot.com/bug?id=b80bd9cf348aac724a4f4dff251800106d721331
    LINK: [2] https://syzkaller.appspot.com/text?tag=ReproC&x=14ba0238700000
    
    Fixes: a4bb6b64e39a ("ext4: enable "punch hole" functionality")
    Reported-by: syzbot+7a806094edd5d07ba029@syzkaller.appspotmail.com
    Signed-off-by: Tadeusz Struk <tadeusz.struk@linaro.org>
    Link: https://lore.kernel.org/r/20220331200515.153214-1-tadeusz.struk@linaro.org
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3912775b4766a81cc80279ccb3740d514926ad0
Author: Ye Bin <yebin10@huawei.com>
Date:   Thu Mar 24 14:48:16 2022 +0800

    ext4: fix use-after-free in ext4_search_dir
    
    commit c186f0887fe7061a35cebef024550ec33ef8fbd8 upstream.
    
    We got issue as follows:
    EXT4-fs (loop0): mounted filesystem without journal. Opts: ,errors=continue
    ==================================================================
    BUG: KASAN: use-after-free in ext4_search_dir fs/ext4/namei.c:1394 [inline]
    BUG: KASAN: use-after-free in search_dirblock fs/ext4/namei.c:1199 [inline]
    BUG: KASAN: use-after-free in __ext4_find_entry+0xdca/0x1210 fs/ext4/namei.c:1553
    Read of size 1 at addr ffff8881317c3005 by task syz-executor117/2331
    
    CPU: 1 PID: 2331 Comm: syz-executor117 Not tainted 5.10.0+ #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
    Call Trace:
     __dump_stack lib/dump_stack.c:83 [inline]
     dump_stack+0x144/0x187 lib/dump_stack.c:124
     print_address_description+0x7d/0x630 mm/kasan/report.c:387
     __kasan_report+0x132/0x190 mm/kasan/report.c:547
     kasan_report+0x47/0x60 mm/kasan/report.c:564
     ext4_search_dir fs/ext4/namei.c:1394 [inline]
     search_dirblock fs/ext4/namei.c:1199 [inline]
     __ext4_find_entry+0xdca/0x1210 fs/ext4/namei.c:1553
     ext4_lookup_entry fs/ext4/namei.c:1622 [inline]
     ext4_lookup+0xb8/0x3a0 fs/ext4/namei.c:1690
     __lookup_hash+0xc5/0x190 fs/namei.c:1451
     do_rmdir+0x19e/0x310 fs/namei.c:3760
     do_syscall_64+0x33/0x40 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x445e59
    Code: 4d c7 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 1b c7 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fff2277fac8 EFLAGS: 00000246 ORIG_RAX: 0000000000000054
    RAX: ffffffffffffffda RBX: 0000000000400280 RCX: 0000000000445e59
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00000000200000c0
    RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000002
    R10: 00007fff2277f990 R11: 0000000000000246 R12: 0000000000000000
    R13: 431bde82d7b634db R14: 0000000000000000 R15: 0000000000000000
    
    The buggy address belongs to the page:
    page:0000000048cd3304 refcount:0 mapcount:0 mapping:0000000000000000 index:0x1 pfn:0x1317c3
    flags: 0x200000000000000()
    raw: 0200000000000000 ffffea0004526588 ffffea0004528088 0000000000000000
    raw: 0000000000000001 0000000000000000 00000000ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8881317c2f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff8881317c2f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    >ffff8881317c3000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
                       ^
     ffff8881317c3080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
     ffff8881317c3100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    ==================================================================
    
    ext4_search_dir:
      ...
      de = (struct ext4_dir_entry_2 *)search_buf;
      dlimit = search_buf + buf_size;
      while ((char *) de < dlimit) {
      ...
        if ((char *) de + de->name_len <= dlimit &&
             ext4_match(dir, fname, de)) {
                ...
        }
      ...
        de_len = ext4_rec_len_from_disk(de->rec_len, dir->i_sb->s_blocksize);
        if (de_len <= 0)
          return -1;
        offset += de_len;
        de = (struct ext4_dir_entry_2 *) ((char *) de + de_len);
      }
    
    Assume:
    de=0xffff8881317c2fff
    dlimit=0x0xffff8881317c3000
    
    If read 'de->name_len' which address is 0xffff8881317c3005, obviously is
    out of range, then will trigger use-after-free.
    To solve this issue, 'dlimit' must reserve 8 bytes, as we will read
    'de->name_len' to judge if '(char *) de + de->name_len' out of range.
    
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20220324064816.1209985-1-yebin10@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bb5676b49d3a44c4aed121dd3378f4d95da8e55
Author: Ye Bin <yebin10@huawei.com>
Date:   Mon Mar 21 22:44:38 2022 +0800

    ext4: fix symlink file size not match to file content
    
    commit a2b0b205d125f27cddfb4f7280e39affdaf46686 upstream.
    
    We got issue as follows:
    [home]# fsck.ext4  -fn  ram0yb
    e2fsck 1.45.6 (20-Mar-2020)
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Symlink /p3/d14/d1a/l3d (inode #3494) is invalid.
    Clear? no
    Entry 'l3d' in /p3/d14/d1a (3383) has an incorrect filetype (was 7, should be 0).
    Fix? no
    
    As the symlink file size does not match the file content. If the writeback
    of the symlink data block failed, ext4_finish_bio() handles the end of IO.
    However this function fails to mark the buffer with BH_write_io_error and
    so when unmount does journal checkpoint it cannot detect the writeback
    error and will cleanup the journal. Thus we've lost the correct data in the
    journal area. To solve this issue, mark the buffer as BH_write_io_error in
    ext4_finish_bio().
    
    Cc: stable@kernel.org
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20220321144438.201685-1-yebin10@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba50ea456f49f401ddea107ca9bae5d4d2ec0234
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Tue Mar 8 10:50:43 2022 -0800

    ext4: fix fallocate to use file_modified to update permissions consistently
    
    commit ad5cd4f4ee4d5fcdb1bfb7a0c073072961e70783 upstream.
    
    Since the initial introduction of (posix) fallocate back at the turn of
    the century, it has been possible to use this syscall to change the
    user-visible contents of files.  This can happen by extending the file
    size during a preallocation, or through any of the newer modes (punch,
    zero, collapse, insert range).  Because the call can be used to change
    file contents, we should treat it like we do any other modification to a
    file -- update the mtime, and drop set[ug]id privileges/capabilities.
    
    The VFS function file_modified() does all this for us if pass it a
    locked inode, so let's make fallocate drop permissions correctly.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Link: https://lore.kernel.org/r/20220308185043.GA117678@magnolia
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67e4860eeed86a1eec0a86467723f95cbd785076
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Jan 7 05:03:25 2022 +0100

    netfilter: conntrack: avoid useless indirection during conntrack destruction
    
    commit 6ae7989c9af0d98ab64196f4f4c6f6499454bd23 upstream.
    
    nf_ct_put() results in a usesless indirection:
    
    nf_ct_put -> nf_conntrack_put -> nf_conntrack_destroy -> rcu readlock +
    indirect call of ct_hooks->destroy().
    
    There are two _put helpers:
    nf_ct_put and nf_conntrack_put.  The latter is what should be used in
    code that MUST NOT cause a linker dependency on the conntrack module
    (e.g. calls from core network stack).
    
    Everyone else should call nf_ct_put() instead.
    
    A followup patch will convert a few nf_conntrack_put() calls to
    nf_ct_put(), in particular from modules that already have a conntrack
    dependency such as act_ct or even nf_conntrack itself.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcba40bd36d705aba9c5fd4622e35118c2a46ed2
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Jan 7 05:03:22 2022 +0100

    netfilter: conntrack: convert to refcount_t api
    
    commit 719774377622bc4025d2a74f551b5dc2158c6c30 upstream.
    
    Convert nf_conn reference counting from atomic_t to refcount_t based api.
    refcount_t api provides more runtime sanity checks and will warn on
    certain constructs, e.g. refcount_inc() on a zero reference count, which
    usually indicates use-after-free.
    
    For this reason template allocation is changed to init the refcount to
    1, the subsequenct add operations are removed.
    
    Likewise, init_conntrack() is changed to set the initial refcount to 1
    instead refcount_inc().
    
    This is safe because the new entry is not (yet) visible to other cpus.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bbd693d9f0ac81e3b3ea97ab2201424061df96c
Author: Mingwei Zhang <mizhang@google.com>
Date:   Thu Apr 21 03:14:06 2022 +0000

    KVM: SVM: Flush when freeing encrypted pages even on SME_COHERENT CPUs
    
    commit d45829b351ee6ec5f54dd55e6aca1f44fe239fe6 upstream.
    
    Use clflush_cache_range() to flush the confidential memory when
    SME_COHERENT is supported in AMD CPU. Cache flush is still needed since
    SME_COHERENT only support cache invalidation at CPU side. All confidential
    cache lines are still incoherent with DMA devices.
    
    Cc: stable@vger.kerel.org
    
    Fixes: add5e2f04541 ("KVM: SVM: Add support for the SEV-ES VMSA")
    Reviewed-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Mingwei Zhang <mizhang@google.com>
    Message-Id: <20220421031407.2516575-3-mizhang@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b2da96904895cb9f82c64e8ee428ddb15d040da
Author: Sean Christopherson <seanjc@google.com>
Date:   Wed Apr 20 01:37:30 2022 +0000

    KVM: nVMX: Defer APICv updates while L2 is active until L1 is active
    
    commit 7c69661e225cc484fbf44a0b99b56714a5241ae3 upstream.
    
    Defer APICv updates that occur while L2 is active until nested VM-Exit,
    i.e. until L1 regains control.  vmx_refresh_apicv_exec_ctrl() assumes L1
    is active and (a) stomps all over vmcs02 and (b) neglects to ever updated
    vmcs01.  E.g. if vmcs12 doesn't enable the TPR shadow for L2 (and thus no
    APICv controls), L1 performs nested VM-Enter APICv inhibited, and APICv
    becomes unhibited while L2 is active, KVM will set various APICv controls
    in vmcs02 and trigger a failed VM-Entry.  The kicker is that, unless
    running with nested_early_check=1, KVM blames L1 and chaos ensues.
    
    In all cases, ignoring vmcs02 and always deferring the inhibition change
    to vmcs01 is correct (or at least acceptable).  The ABSENT and DISABLE
    inhibitions cannot truly change while L2 is active (see below).
    
    IRQ_BLOCKING can change, but it is firmly a best effort debug feature.
    Furthermore, only L2's APIC is accelerated/virtualized to the full extent
    possible, e.g. even if L1 passes through its APIC to L2, normal MMIO/MSR
    interception will apply to the virtual APIC managed by KVM.
    The exception is the SELF_IPI register when x2APIC is enabled, but that's
    an acceptable hole.
    
    Lastly, Hyper-V's Auto EOI can technically be toggled if L1 exposes the
    MSRs to L2, but for that to work in any sane capacity, L1 would need to
    pass through IRQs to L2 as well, and IRQs must be intercepted to enable
    virtual interrupt delivery.  I.e. exposing Auto EOI to L2 and enabling
    VID for L2 are, for all intents and purposes, mutually exclusive.
    
    Lack of dynamic toggling is also why this scenario is all but impossible
    to encounter in KVM's current form.  But a future patch will pend an
    APICv update request _during_ vCPU creation to plug a race where a vCPU
    that's being created doesn't get included in the "all vCPUs request"
    because it's not yet visible to other vCPUs.  If userspaces restores L2
    after VM creation (hello, KVM selftests), the first KVM_RUN will occur
    while L2 is active and thus service the APICv update request made during
    VM creation.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20220420013732.3308816-3-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a41b3243a6de82a6d22cc4c30d0167bfea36f7e0
Author: Sean Christopherson <seanjc@google.com>
Date:   Wed Apr 20 01:37:31 2022 +0000

    KVM: x86: Pend KVM_REQ_APICV_UPDATE during vCPU creation to fix a race
    
    commit 423ecfea77dda83823c71b0fad1c2ddb2af1e5fc upstream.
    
    Make a KVM_REQ_APICV_UPDATE request when creating a vCPU with an
    in-kernel local APIC and APICv enabled at the module level.  Consuming
    kvm_apicv_activated() and stuffing vcpu->arch.apicv_active directly can
    race with __kvm_set_or_clear_apicv_inhibit(), as vCPU creation happens
    before the vCPU is fully onlined, i.e. it won't get the request made to
    "all" vCPUs.  If APICv is globally inhibited between setting apicv_active
    and onlining the vCPU, the vCPU will end up running with APICv enabled
    and trigger KVM's sanity check.
    
    Mark APICv as active during vCPU creation if APICv is enabled at the
    module level, both to be optimistic about it's final state, e.g. to avoid
    additional VMWRITEs on VMX, and because there are likely bugs lurking
    since KVM checks apicv_active in multiple vCPU creation paths.  While
    keeping the current behavior of consuming kvm_apicv_activated() is
    arguably safer from a regression perspective, force apicv_active so that
    vCPU creation runs with deterministic state and so that if there are bugs,
    they are found sooner than later, i.e. not when some crazy race condition
    is hit.
    
      WARNING: CPU: 0 PID: 484 at arch/x86/kvm/x86.c:9877 vcpu_enter_guest+0x2ae3/0x3ee0 arch/x86/kvm/x86.c:9877
      Modules linked in:
      CPU: 0 PID: 484 Comm: syz-executor361 Not tainted 5.16.13 #2
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1~cloud0 04/01/2014
      RIP: 0010:vcpu_enter_guest+0x2ae3/0x3ee0 arch/x86/kvm/x86.c:9877
      Call Trace:
       <TASK>
       vcpu_run arch/x86/kvm/x86.c:10039 [inline]
       kvm_arch_vcpu_ioctl_run+0x337/0x15e0 arch/x86/kvm/x86.c:10234
       kvm_vcpu_ioctl+0x4d2/0xc80 arch/x86/kvm/../../../virt/kvm/kvm_main.c:3727
       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+0x16d/0x1d0 fs/ioctl.c:860
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x38/0x90 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    The bug was hit by a syzkaller spamming VM creation with 2 vCPUs and a
    call to KVM_SET_GUEST_DEBUG.
    
      r0 = openat$kvm(0xffffffffffffff9c, &(0x7f0000000000), 0x0, 0x0)
      r1 = ioctl$KVM_CREATE_VM(r0, 0xae01, 0x0)
      ioctl$KVM_CAP_SPLIT_IRQCHIP(r1, 0x4068aea3, &(0x7f0000000000)) (async)
      r2 = ioctl$KVM_CREATE_VCPU(r1, 0xae41, 0x0) (async)
      r3 = ioctl$KVM_CREATE_VCPU(r1, 0xae41, 0x400000000000002)
      ioctl$KVM_SET_GUEST_DEBUG(r3, 0x4048ae9b, &(0x7f00000000c0)={0x5dda9c14aa95f5c5})
      ioctl$KVM_RUN(r2, 0xae80, 0x0)
    
    Reported-by: Gaoning Pan <pgn@zju.edu.cn>
    Reported-by: Yongkang Jia <kangel@zju.edu.cn>
    Fixes: 8df14af42f00 ("kvm: x86: Add support for dynamic APICv activation")
    Cc: stable@vger.kernel.org
    Cc: Maxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Message-Id: <20220420013732.3308816-4-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b4417acd3c6ea3ed58d44ef4fed15b239a45f75
Author: Like Xu <likexu@tencent.com>
Date:   Sat Apr 9 09:52:26 2022 +0800

    KVM: x86/pmu: Update AMD PMC sample period to fix guest NMI-watchdog
    
    commit 75189d1de1b377e580ebd2d2c55914631eac9c64 upstream.
    
    NMI-watchdog is one of the favorite features of kernel developers,
    but it does not work in AMD guest even with vPMU enabled and worse,
    the system misrepresents this capability via /proc.
    
    This is a PMC emulation error. KVM does not pass the latest valid
    value to perf_event in time when guest NMI-watchdog is running, thus
    the perf_event corresponding to the watchdog counter will enter the
    old state at some point after the first guest NMI injection, forcing
    the hardware register PMC0 to be constantly written to 0x800000000001.
    
    Meanwhile, the running counter should accurately reflect its new value
    based on the latest coordinated pmc->counter (from vPMC's point of view)
    rather than the value written directly by the guest.
    
    Fixes: 168d918f2643 ("KVM: x86: Adjust counter sample period after a wrmsr")
    Reported-by: Dongli Cao <caodongli@kingsoft.com>
    Signed-off-by: Like Xu <likexu@tencent.com>
    Reviewed-by: Yanan Wang <wangyanan55@huawei.com>
    Tested-by: Yanan Wang <wangyanan55@huawei.com>
    Reviewed-by: Jim Mattson <jmattson@google.com>
    Message-Id: <20220409015226.38619-1-likexu@tencent.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87d95ff0ca27d39a1595964aa8317e9a962e3588
Author: Rob Herring <robh@kernel.org>
Date:   Fri Apr 8 15:33:30 2022 -0500

    arm_pmu: Validate single/group leader events
    
    commit e5c23779f93d45e39a52758ca593bd7e62e9b4be upstream.
    
    In the case where there is only a cycle counter available (i.e.
    PMCR_EL0.N is 0) and an event other than CPU cycles is opened, the open
    should fail as the event can never possibly be scheduled. However, the
    event validation when an event is opened is skipped when the group
    leader is opened. Fix this by always validating the group leader events.
    
    Reported-by: Al Grant <al.grant@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Link: https://lore.kernel.org/r/20220408203330.4014015-1-robh@kernel.org
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d98fbb266833ad3496b6021c010bc5050ad30cd
Author: Sergey Matyukevich <sergey.matyukevich@synopsys.com>
Date:   Thu Apr 14 11:17:22 2022 +0300

    ARC: entry: fix syscall_trace_exit argument
    
    commit b1c6ecfdd06907554518ec384ce8e99889d15193 upstream.
    
    Function syscall_trace_exit expects pointer to pt_regs. However
    r0 is also used to keep syscall return value. Restore pointer
    to pt_regs before calling syscall_trace_exit.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Sergey Matyukevich <sergey.matyukevich@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b69c07beb23d072c34f5c8d8c8fa19042334093
Author: Sasha Neftin <sasha.neftin@intel.com>
Date:   Tue Apr 5 18:56:01 2022 +0300

    e1000e: Fix possible overflow in LTR decoding
    
    commit 04ebaa1cfddae5f240cc7404f009133bb0389a47 upstream.
    
    When we decode the latency and the max_latency, u16 value may not fit
    the required size and could lead to the wrong LTR representation.
    
    Scaling is represented as:
    scale 0 - 1         (2^(5*0)) = 2^0
    scale 1 - 32        (2^(5 *1))= 2^5
    scale 2 - 1024      (2^(5 *2)) =2^10
    scale 3 - 32768     (2^(5 *3)) =2^15
    scale 4 - 1048576   (2^(5 *4)) = 2^20
    scale 5 - 33554432  (2^(5 *4)) = 2^25
    scale 4 and scale 5 required 20 and 25 bits respectively.
    scale 6 reserved.
    
    Replace the u16 type with the u32 type and allow corrected LTR
    representation.
    
    Cc: stable@vger.kernel.org
    Fixes: 44a13a5d99c7 ("e1000e: Fix the max snoop/no-snoop latency for 10M")
    Reported-by: James Hutchinson <jahutchinson99@googlemail.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=215689
    Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
    Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Tested-by: James Hutchinson <jahutchinson99@googlemail.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73a0b4c5c0bd0bd71721b514cab1619018af8893
Author: Xiaomeng Tong <xiam0nd.tong@gmail.com>
Date:   Tue Mar 29 09:21:34 2022 +0800

    ASoC: soc-dapm: fix two incorrect uses of list iterator
    
    commit f730a46b931d894816af34a0ff8e4ad51565b39f upstream.
    
    These two bug are here:
            list_for_each_entry_safe_continue(w, n, list,
                                            power_list);
            list_for_each_entry_safe_continue(w, n, list,
                                            power_list);
    
    After the list_for_each_entry_safe_continue() exits, the list iterator
    will always be a bogus pointer which point to an invalid struct objdect
    containing HEAD member. The funciton poniter 'w->event' will be a
    invalid value which can lead to a control-flow hijack if the 'w' can be
    controlled.
    
    The original intention was to continue the outer list_for_each_entry_safe()
    loop with the same entry if w->event is NULL, but misunderstanding the
    meaning of list_for_each_entry_safe_continue().
    
    So just add a 'continue;' to fix the bug.
    
    Cc: stable@vger.kernel.org
    Fixes: 163cac061c973 ("ASoC: Factor out DAPM sequence execution")
    Signed-off-by: Xiaomeng Tong <xiam0nd.tong@gmail.com>
    Link: https://lore.kernel.org/r/20220329012134.9375-1-xiam0nd.tong@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 571a67b0d8a4d548d550853918746d835eb470f3
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Fri Apr 22 08:14:52 2022 -0500

    gpio: Request interrupts after IRQ is initialized
    
    commit 06fb4ecfeac7e00d6704fa5ed19299f2fefb3cc9 upstream.
    
    Commit 5467801f1fcb ("gpio: Restrict usage of GPIO chip irq members
    before initialization") attempted to fix a race condition that lead to a
    NULL pointer, but in the process caused a regression for _AEI/_EVT
    declared GPIOs.
    
    This manifests in messages showing deferred probing while trying to
    allocate IRQs like so:
    
      amd_gpio AMDI0030:00: Failed to translate GPIO pin 0x0000 to IRQ, err -517
      amd_gpio AMDI0030:00: Failed to translate GPIO pin 0x002C to IRQ, err -517
      amd_gpio AMDI0030:00: Failed to translate GPIO pin 0x003D to IRQ, err -517
      [ .. more of the same .. ]
    
    The code for walking _AEI doesn't handle deferred probing and so this
    leads to non-functional GPIO interrupts.
    
    Fix this issue by moving the call to `acpi_gpiochip_request_interrupts`
    to occur after gc->irc.initialized is set.
    
    Fixes: 5467801f1fcb ("gpio: Restrict usage of GPIO chip irq members before initialization")
    Link: https://lore.kernel.org/linux-gpio/BL1PR12MB51577A77F000A008AA694675E2EF9@BL1PR12MB5157.namprd12.prod.outlook.com/
    Link: https://bugzilla.suse.com/show_bug.cgi?id=1198697
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=215850
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1979
    Link: https://gitlab.freedesktop.org/drm/amd/-/issues/1976
    Reported-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Shreeya Patel <shreeya.patel@collabora.com>
    Tested-By: Samuel ÄŒavoj <samuel@cavoj.net>
    Tested-By: lukeluk498@gmail.com Link:
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Acked-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-and-tested-by: Takashi Iwai <tiwai@suse.de>
    Cc: Shreeya Patel <shreeya.patel@collabora.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e411af98013dba5bce8118ee2b84bd1ad4c36b86
Author: Paolo Valerio <pvalerio@redhat.com>
Date:   Fri Apr 15 10:08:41 2022 +0200

    openvswitch: fix OOB access in reserve_sfa_size()
    
    commit cefa91b2332d7009bc0be5d951d6cbbf349f90f8 upstream.
    
    Given a sufficiently large number of actions, while copying and
    reserving memory for a new action of a new flow, if next_offset is
    greater than MAX_ACTIONS_BUFSIZE, the function reserve_sfa_size() does
    not return -EMSGSIZE as expected, but it allocates MAX_ACTIONS_BUFSIZE
    bytes increasing actions_len by req_size. This can then lead to an OOB
    write access, especially when further actions need to be copied.
    
    Fix it by rearranging the flow action size check.
    
    KASAN splat below:
    
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in reserve_sfa_size+0x1ba/0x380 [openvswitch]
    Write of size 65360 at addr ffff888147e4001c by task handler15/836
    
    CPU: 1 PID: 836 Comm: handler15 Not tainted 5.18.0-rc1+ #27
    ...
    Call Trace:
     <TASK>
     dump_stack_lvl+0x45/0x5a
     print_report.cold+0x5e/0x5db
     ? __lock_text_start+0x8/0x8
     ? reserve_sfa_size+0x1ba/0x380 [openvswitch]
     kasan_report+0xb5/0x130
     ? reserve_sfa_size+0x1ba/0x380 [openvswitch]
     kasan_check_range+0xf5/0x1d0
     memcpy+0x39/0x60
     reserve_sfa_size+0x1ba/0x380 [openvswitch]
     __add_action+0x24/0x120 [openvswitch]
     ovs_nla_add_action+0xe/0x20 [openvswitch]
     ovs_ct_copy_action+0x29d/0x1130 [openvswitch]
     ? __kernel_text_address+0xe/0x30
     ? unwind_get_return_address+0x56/0xa0
     ? create_prof_cpu_mask+0x20/0x20
     ? ovs_ct_verify+0xf0/0xf0 [openvswitch]
     ? prep_compound_page+0x198/0x2a0
     ? __kasan_check_byte+0x10/0x40
     ? kasan_unpoison+0x40/0x70
     ? ksize+0x44/0x60
     ? reserve_sfa_size+0x75/0x380 [openvswitch]
     __ovs_nla_copy_actions+0xc26/0x2070 [openvswitch]
     ? __zone_watermark_ok+0x420/0x420
     ? validate_set.constprop.0+0xc90/0xc90 [openvswitch]
     ? __alloc_pages+0x1a9/0x3e0
     ? __alloc_pages_slowpath.constprop.0+0x1da0/0x1da0
     ? unwind_next_frame+0x991/0x1e40
     ? __mod_node_page_state+0x99/0x120
     ? __mod_lruvec_page_state+0x2e3/0x470
     ? __kasan_kmalloc_large+0x90/0xe0
     ovs_nla_copy_actions+0x1b4/0x2c0 [openvswitch]
     ovs_flow_cmd_new+0x3cd/0xb10 [openvswitch]
     ...
    
    Cc: stable@vger.kernel.org
    Fixes: f28cd2af22a0 ("openvswitch: fix flow actions reallocation")
    Signed-off-by: Paolo Valerio <pvalerio@redhat.com>
    Acked-by: Eelco Chaudron <echaudro@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bac4cadeb71891d30df8d9a3bf884934a756edce
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Wed Apr 13 22:44:36 2022 -0700

    xtensa: fix a7 clobbering in coprocessor context load/store
    
    commit 839769c35477d4acc2369e45000ca7b0b6af39a7 upstream.
    
    Fast coprocessor exception handler saves a3..a6, but coprocessor context
    load/store code uses a4..a7 as temporaries, potentially clobbering a7.
    'Potentially' because coprocessor state load/store macros may not use
    all four temporary registers (and neither FPU nor HiFi macros do).
    Use a3..a6 as intended.
    
    Cc: stable@vger.kernel.org
    Fixes: c658eac628aa ("[XTENSA] Add support for configurable registers and coprocessors")
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91335ca9ebe79f2c85e183d9e632044f71836d02
Author: Guo Ren <guoren@kernel.org>
Date:   Thu Apr 7 15:33:22 2022 +0800

    xtensa: patch_text: Fixup last cpu should be master
    
    commit ee69d4be8fd064cd08270b4808d2dfece3614ee0 upstream.
    
    These patch_text implementations are using stop_machine_cpuslocked
    infrastructure with atomic cpu_count. The original idea: When the
    master CPU patch_text, the others should wait for it. But current
    implementation is using the first CPU as master, which couldn't
    guarantee the remaining CPUs are waiting. This patch changes the
    last CPU as the master to solve the potential risk.
    
    Fixes: 64711f9a47d4 ("xtensa: implement jump_label support")
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Guo Ren <guoren@kernel.org>
    Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
    Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: <stable@vger.kernel.org>
    Message-Id: <20220407073323.743224-4-guoren@kernel.org>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49952e31e50d9d04a59cd08b958a08b0b81c4401
Author: Leo Yan <leo.yan@linaro.org>
Date:   Thu Apr 14 20:32:01 2022 +0800

    perf report: Set PERF_SAMPLE_DATA_SRC bit for Arm SPE event
    
    [ Upstream commit ccb17caecfbd542f49a2a79ae088136ba8bfb794 ]
    
    Since commit bb30acae4c4dacfa ("perf report: Bail out --mem-mode if mem
    info is not available") "perf mem report" and "perf report --mem-mode"
    don't report result if the PERF_SAMPLE_DATA_SRC bit is missed in sample
    type.
    
    The commit ffab487052054162 ("perf: arm-spe: Fix perf report
    --mem-mode") partially fixes the issue.  It adds PERF_SAMPLE_DATA_SRC
    bit for Arm SPE event, this allows the perf data file generated by
    kernel v5.18-rc1 or later version can be reported properly.
    
    On the other hand, perf tool still fails to be backward compatibility
    for a data file recorded by an older version's perf which contains Arm
    SPE trace data.  This patch is a workaround in reporting phase, when
    detects ARM SPE PMU event and without PERF_SAMPLE_DATA_SRC bit, it will
    force to set the bit in the sample type and give a warning info.
    
    Fixes: bb30acae4c4dacfa ("perf report: Bail out --mem-mode if mem info is not available")
    Reviewed-by: James Clark <james.clark@arm.com>
    Signed-off-by: Leo Yan <leo.yan@linaro.org>
    Tested-by: German Gomez <german.gomez@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Link: https://lore.kernel.org/r/20220414123201.842754-1-leo.yan@linaro.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04ecea282b42241dee9793e2364b192f28e5bab4
Author: Leo Yan <leo.yan@linaro.org>
Date:   Sun Apr 17 19:48:37 2022 +0800

    perf script: Always allow field 'data_src' for auxtrace
    
    [ Upstream commit c6d8df01064333dcf140eda996abdb60a60e24b3 ]
    
    If use command 'perf script -F,+data_src' to dump memory samples with
    Arm SPE trace data, it reports error:
    
      # perf script -F,+data_src
      Samples for 'dummy:u' event do not have DATA_SRC attribute set. Cannot print 'data_src' field.
    
    This is because the 'dummy:u' event is absent DATA_SRC bit in its sample
    type, so if a file contains AUX area tracing data then always allow
    field 'data_src' to be selected as an option for perf script.
    
    Fixes: e55ed3423c1bb29f ("perf arm-spe: Synthesize memory event")
    Signed-off-by: Leo Yan <leo.yan@linaro.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: German Gomez <german.gomez@arm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20220417114837.839896-1-leo.yan@linaro.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a92335b4b18905eea8956a02d9b7e3e3cdf8a3ca
Author: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Date:   Tue Apr 19 17:18:28 2022 +0530

    powerpc/perf: Fix power10 event alternatives
    
    [ Upstream commit c6cc9a852f123301d5271f1484df8e961b2b64f1 ]
    
    When scheduling a group of events, there are constraint checks done to
    make sure all events can go in a group. Example, one of the criteria is
    that events in a group cannot use the same PMC. But platform specific
    PMU supports alternative event for some of the event codes. During
    perf_event_open(), if any event group doesn't match constraint check
    criteria, further lookup is done to find alternative event.
    
    By current design, the array of alternatives events in PMU code is
    expected to be sorted by column 0. This is because in
    find_alternative() the return criteria is based on event code
    comparison. ie. "event < ev_alt[i][0])". This optimisation is there
    since find_alternative() can be called multiple times. In power10 PMU
    code, the alternative event array is not sorted properly and hence there
    is breakage in finding alternative event.
    
    To work with existing logic, fix the alternative event array to be
    sorted by column 0 for power10-pmu.c
    
    Results:
    
    In case where an alternative event is not chosen when we could, events
    will be multiplexed. ie, time sliced where it could actually run
    concurrently.
    
    Example, in power10 PM_INST_CMPL_ALT(0x00002) has alternative event,
    PM_INST_CMPL(0x500fa). Without the fix, if a group of events with PMC1
    to PMC4 is used along with PM_INST_CMPL_ALT, it will be time sliced
    since all programmable PMC's are consumed already. But with the fix,
    when it picks alternative event on PMC5, all events will run
    concurrently.
    
    Before:
    
     # perf stat -e r00002,r100fc,r200fa,r300fc,r400fc
    
     Performance counter stats for 'system wide':
    
             328668935      r00002               (79.94%)
              56501024      r100fc               (79.95%)
              49564238      r200fa               (79.95%)
                   376      r300fc               (80.19%)
                   660      r400fc               (79.97%)
    
           4.039150522 seconds time elapsed
    
    With the fix, since alternative event is chosen to run on PMC6, events
    will be run concurrently.
    
    After:
    
     # perf stat -e r00002,r100fc,r200fa,r300fc,r400fc
    
     Performance counter stats for 'system wide':
    
              23596607      r00002
               4907738      r100fc
               2283608      r200fa
                   135      r300fc
                   248      r400fc
    
           1.664671390 seconds time elapsed
    
    Fixes: a64e697cef23 ("powerpc/perf: power10 Performance Monitoring support")
    Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Reviewed-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220419114828.89843-2-atrajeev@linux.vnet.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7a56867c5ef35aa97e0a09ee626f1571680174d7
Author: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Date:   Tue Apr 19 17:18:27 2022 +0530

    powerpc/perf: Fix power9 event alternatives
    
    [ Upstream commit 0dcad700bb2776e3886fe0a645a4bf13b1e747cd ]
    
    When scheduling a group of events, there are constraint checks done to
    make sure all events can go in a group. Example, one of the criteria is
    that events in a group cannot use the same PMC. But platform specific
    PMU supports alternative event for some of the event codes. During
    perf_event_open(), if any event group doesn't match constraint check
    criteria, further lookup is done to find alternative event.
    
    By current design, the array of alternatives events in PMU code is
    expected to be sorted by column 0. This is because in
    find_alternative() the return criteria is based on event code
    comparison. ie. "event < ev_alt[i][0])". This optimisation is there
    since find_alternative() can be called multiple times. In power9 PMU
    code, the alternative event array is not sorted properly and hence there
    is breakage in finding alternative events.
    
    To work with existing logic, fix the alternative event array to be
    sorted by column 0 for power9-pmu.c
    
    Results:
    
    With alternative events, multiplexing can be avoided. That is, for
    example, in power9 PM_LD_MISS_L1 (0x3e054) has alternative event,
    PM_LD_MISS_L1_ALT (0x400f0). This is an identical event which can be
    programmed in a different PMC.
    
    Before:
    
     # perf stat -e r3e054,r300fc
    
     Performance counter stats for 'system wide':
    
               1057860      r3e054              (50.21%)
                   379      r300fc              (49.79%)
    
           0.944329741 seconds time elapsed
    
    Since both the events are using PMC3 in this case, they are
    multiplexed here.
    
    After:
    
     # perf stat -e r3e054,r300fc
    
     Performance counter stats for 'system wide':
    
               1006948      r3e054
                   182      r300fc
    
    Fixes: 91e0bd1e6251 ("powerpc/perf: Add PM_LD_MISS_L1 and PM_BR_2PATH to power9 event list")
    Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Reviewed-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220419114828.89843-1-atrajeev@linux.vnet.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 53c4a9ff225b81dcd005bf48b6467f0f55d6ce02
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Wed Apr 20 21:50:07 2022 +0800

    drm/vc4: Use pm_runtime_resume_and_get to fix pm_runtime_get_sync() usage
    
    [ Upstream commit 3d0b93d92a2790337aa9d18cb332d02356a24126 ]
    
    If the device is already in a runtime PM enabled state
    pm_runtime_get_sync() will return 1.
    
    Also, we need to call pm_runtime_put_noidle() when pm_runtime_get_sync()
    fails, so use pm_runtime_resume_and_get() instead. this function
    will handle this.
    
    Fixes: 4078f5757144 ("drm/vc4: Add DSI driver")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220420135008.2757-1-linmq006@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9dc46d2e3723c68302018c4061aef4d4f453f404
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Wed Apr 20 15:08:40 2022 +1000

    KVM: PPC: Fix TCE handling for VFIO
    
    [ Upstream commit 26a62b750a4e6364b0393562f66759b1494c3a01 ]
    
    The LoPAPR spec defines a guest visible IOMMU with a variable page size.
    Currently QEMU advertises 4K, 64K, 2M, 16MB pages, a Linux VM picks
    the biggest (16MB). In the case of a passed though PCI device, there is
    a hardware IOMMU which does not support all pages sizes from the above -
    P8 cannot do 2MB and P9 cannot do 16MB. So for each emulated
    16M IOMMU page we may create several smaller mappings ("TCEs") in
    the hardware IOMMU.
    
    The code wrongly uses the emulated TCE index instead of hardware TCE
    index in error handling. The problem is easier to see on POWER8 with
    multi-level TCE tables (when only the first level is preallocated)
    as hash mode uses real mode TCE hypercalls handlers.
    The kernel starts using indirect tables when VMs get bigger than 128GB
    (depends on the max page order).
    The very first real mode hcall is going to fail with H_TOO_HARD as
    in the real mode we cannot allocate memory for TCEs (we can in the virtual
    mode) but on the way out the code attempts to clear hardware TCEs using
    emulated TCE indexes which corrupts random kernel memory because
    it_offset==1<<59 is subtracted from those indexes and the resulting index
    is out of the TCE table bounds.
    
    This fixes kvmppc_clear_tce() to use the correct TCE indexes.
    
    While at it, this fixes TCE cache invalidation which uses emulated TCE
    indexes instead of the hardware ones. This went unnoticed as 64bit DMA
    is used these days and VMs map all RAM in one go and only then do DMA
    and this is when the TCE cache gets populated.
    
    Potentially this could slow down mapping, however normally 16MB
    emulated pages are backed by 64K hardware pages so it is one write to
    the "TCE Kill" per 256 updates which is not that bad considering the size
    of the cache (1024 TCEs or so).
    
    Fixes: ca1fc489cfa0 ("KVM: PPC: Book3S: Allow backing bigger guest IOMMU pages with smaller physical pages")
    
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Tested-by: David Gibson <david@gibson.dropbear.id.au>
    Reviewed-by: Frederic Barrat <fbarrat@linux.ibm.com>
    Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220420050840.328223-1-aik@ozlabs.ru
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 76614b111867617970c8d398a48513fa6fb52cb2
Author: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date:   Fri Apr 15 18:25:13 2022 +0200

    drm/panel/raspberrypi-touchscreen: Initialise the bridge in prepare
    
    [ Upstream commit 5f18c0782b99e26121efa93d20b76c19e17aa1dd ]
    
    The panel has a prepare call which is before video starts, and an
    enable call which is after.
    The Toshiba bridge should be configured before video, so move
    the relevant power and initialisation calls to prepare.
    
    Fixes: 2f733d6194bd ("drm/panel: Add support for the Raspberry Pi 7" Touchscreen.")
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220415162513.42190-3-stefan.wahren@i2se.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7981351a916e393cd3f350aaded3d9262a728655
Author: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date:   Fri Apr 15 18:25:12 2022 +0200

    drm/panel/raspberrypi-touchscreen: Avoid NULL deref if not initialised
    
    [ Upstream commit f92055ae0acb035891e988ce345d6b81a0316423 ]
    
    If a call to rpi_touchscreen_i2c_write from rpi_touchscreen_probe
    fails before mipi_dsi_device_register_full is called, then
    in trying to log the error message if uses ts->dsi->dev when
    it is still NULL.
    
    Use ts->i2c->dev instead, which is initialised earlier in probe.
    
    Fixes: 2f733d6194bd ("drm/panel: Add support for the Raspberry Pi 7" Touchscreen.")
    Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220415162513.42190-2-stefan.wahren@i2se.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56637084e8a551e7896d846f1e96415681973cbd
Author: Zhipeng Xie <xiezhipeng1@huawei.com>
Date:   Wed Feb 9 09:54:17 2022 -0500

    perf/core: Fix perf_mmap fail when CONFIG_PERF_USE_VMALLOC enabled
    
    [ Upstream commit 60490e7966659b26d74bf1fa4aa8693d9a94ca88 ]
    
    This problem can be reproduced with CONFIG_PERF_USE_VMALLOC enabled on
    both x86_64 and aarch64 arch when using sysdig -B(using ebpf)[1].
    sysdig -B works fine after rebuilding the kernel with
    CONFIG_PERF_USE_VMALLOC disabled.
    
    I tracked it down to the if condition event->rb->nr_pages != nr_pages
    in perf_mmap is true when CONFIG_PERF_USE_VMALLOC is enabled where
    event->rb->nr_pages = 1 and nr_pages = 2048 resulting perf_mmap to
    return -EINVAL. This is because when CONFIG_PERF_USE_VMALLOC is
    enabled, rb->nr_pages is always equal to 1.
    
    Arch with CONFIG_PERF_USE_VMALLOC enabled by default:
            arc/arm/csky/mips/sh/sparc/xtensa
    
    Arch with CONFIG_PERF_USE_VMALLOC disabled by default:
            x86_64/aarch64/...
    
    Fix this problem by using data_page_nr()
    
    [1] https://github.com/draios/sysdig
    
    Fixes: 906010b2134e ("perf_event: Provide vmalloc() based mmap() backing")
    Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20220209145417.6495-1-xiezhipeng1@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b1b929468229d286b6cd7b09673ef2556d5332bb
Author: kuyo chang <kuyo.chang@mediatek.com>
Date:   Thu Apr 14 17:02:20 2022 +0800

    sched/pelt: Fix attach_entity_load_avg() corner case
    
    [ Upstream commit 40f5aa4c5eaebfeaca4566217cb9c468e28ed682 ]
    
    The warning in cfs_rq_is_decayed() triggered:
    
        SCHED_WARN_ON(cfs_rq->avg.load_avg ||
                      cfs_rq->avg.util_avg ||
                      cfs_rq->avg.runnable_avg)
    
    There exists a corner case in attach_entity_load_avg() which will
    cause load_sum to be zero while load_avg will not be.
    
    Consider se_weight is 88761 as per the sched_prio_to_weight[] table.
    Further assume the get_pelt_divider() is 47742, this gives:
    se->avg.load_avg is 1.
    
    However, calculating load_sum:
    
      se->avg.load_sum = div_u64(se->avg.load_avg * se->avg.load_sum, se_weight(se));
      se->avg.load_sum = 1*47742/88761 = 0.
    
    Then enqueue_load_avg() adds this to the cfs_rq totals:
    
      cfs_rq->avg.load_avg += se->avg.load_avg;
      cfs_rq->avg.load_sum += se_weight(se) * se->avg.load_sum;
    
    Resulting in load_avg being 1 with load_sum is 0, which will trigger
    the WARN.
    
    Fixes: f207934fb79d ("sched/fair: Align PELT windows between cfs_rq and its se")
    Signed-off-by: kuyo chang <kuyo.chang@mediatek.com>
    [peterz: massage changelog]
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>
    Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
    Link: https://lkml.kernel.org/r/20220414090229.342-1-kuyo.chang@mediatek.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 914473a0708874c69895f5f809b686f1797169a9
Author: Tom Rix <trix@redhat.com>
Date:   Mon Apr 11 13:47:56 2022 -0400

    scsi: sr: Do not leak information in ioctl
    
    [ Upstream commit faad6cebded8e0fd902b672f220449b93db479eb ]
    
    sr_ioctl.c uses this pattern:
    
      result = sr_do_ioctl(cd, &cgc);
      to-user = buffer[];
      kfree(buffer);
      return result;
    
    Use of a buffer without checking leaks information. Check result and jump
    over the use of buffer if there is an error.
    
      result = sr_do_ioctl(cd, &cgc);
      if (result)
        goto err;
      to-user = buffer[];
    err:
      kfree(buffer);
      return result;
    
    Additionally, initialize the buffer to zero.
    
    This problem can be seen in the 2.4.0 kernel.
    
    Link: https://lore.kernel.org/r/20220411174756.2418435-1-trix@redhat.com
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Tom Rix <trix@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0cfae3e0d3a95118b883d4ff577043d211f4f47
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Sun Apr 17 13:03:31 2022 -0700

    Input: omap4-keypad - fix pm_runtime_get_sync() error checking
    
    [ Upstream commit 81022a170462d38ea10612cb67e8e2c529d58abe ]
    
    If the device is already in a runtime PM enabled state
    pm_runtime_get_sync() will return 1, so a test for negative
    value should be used to check for errors.
    
    Fixes: f77621cc640a ("Input: omap-keypad - dynamically handle register offsets")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220412070131.19848-1-linmq006@gmail.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 232541989a1abbcf8946f3be2200a854db5bd62b
Author: Manuel Ullmann <labre@posteo.de>
Date:   Mon Apr 18 00:20:01 2022 +0200

    net: atlantic: invert deep par in pm functions, preventing null derefs
    
    commit cbe6c3a8f8f4315b96e46e1a1c70393c06d95a4c upstream.
    
    This will reset deeply on freeze and thaw instead of suspend and
    resume and prevent null pointer dereferences of the uninitialized ring
    0 buffer while thawing.
    
    The impact is an indefinitely hanging kernel. You can't switch
    consoles after this and the only possible user interaction is SysRq.
    
    BUG: kernel NULL pointer dereference
    RIP: 0010:aq_ring_rx_fill+0xcf/0x210 [atlantic]
    aq_vec_init+0x85/0xe0 [atlantic]
    aq_nic_init+0xf7/0x1d0 [atlantic]
    atl_resume_common+0x4f/0x100 [atlantic]
    pci_pm_thaw+0x42/0xa0
    
    resolves in aq_ring.o to
    
    ```
    0000000000000ae0 <aq_ring_rx_fill>:
    {
    /* ... */
     baf:   48 8b 43 08             mov    0x8(%rbx),%rax
                    buff->flags = 0U; /* buff is NULL */
    ```
    
    The bug has been present since the introduction of the new pm code in
    8aaa112a57c1 ("net: atlantic: refactoring pm logic") and was hidden
    until 8ce84271697a ("net: atlantic: changes for multi-TC support"),
    which refactored the aq_vec_{free,alloc} functions into
    aq_vec_{,ring}_{free,alloc}, but is technically not wrong. The
    original functions just always reinitialized the buffers on S3/S4. If
    the interface is down before freezing, the bug does not occur. It does
    not matter, whether the initrd contains and loads the module before
    thawing.
    
    So the fix is to invert the boolean parameter deep in all pm function
    calls, which was clearly intended to be set like that.
    
    First report was on Github [1], which you have to guess from the
    resume logs in the posted dmesg snippet. Recently I posted one on
    Bugzilla [2], since I did not have an AQC device so far.
    
    #regzbot introduced: 8ce84271697a
    #regzbot from: koo5 <kolman.jindrich@gmail.com>
    #regzbot monitor: https://github.com/Aquantia/AQtion/issues/32
    
    Fixes: 8aaa112a57c1 ("net: atlantic: refactoring pm logic")
    Link: https://github.com/Aquantia/AQtion/issues/32 [1]
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=215798 [2]
    Cc: stable@vger.kernel.org
    Reported-by: koo5 <kolman.jindrich@gmail.com>
    Signed-off-by: Manuel Ullmann <labre@posteo.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b8af9f967499ed92676296615424601401d82a6
Author: Kevin Groeneveld <kgroeneveld@lenbrook.com>
Date:   Sun Apr 10 18:31:18 2022 -0400

    dmaengine: imx-sdma: fix init of uart scripts
    
    commit a3ae97f4c87d9570e7e9a3e3324c443757f6e29a upstream.
    
    Commit b98ce2f4e32b ("dmaengine: imx-sdma: add uart rom script") broke
    uart rx on imx5 when using sdma firmware from older Freescale 2.6.35
    kernel. In this case reading addr->uartXX_2_mcu_addr was going out of
    bounds of the firmware memory and corrupting the uart script addresses.
    
    Simply adding a bounds check before accessing addr->uartXX_2_mcu_addr
    does not work as the uartXX_2_mcu_addr members are now beyond the size
    of the older firmware and the uart addresses would never be populated
    in that case. There are other ways to fix this but overall the logic
    seems clearer to me to revert the uartXX_2_mcu_ram_addr structure
    entries back to uartXX_2_mcu_addr, change the newer entries to
    uartXX_2_mcu_rom_addr and update the logic accordingly.
    
    I have tested this patch on:
    1. An i.MX53 system with sdma firmware from Freescale 2.6.35 kernel.
       Without this patch uart rx is broken in this scenario, with the
       patch uart rx is restored.
    2. An i.MX6D system with no external sdma firmware. uart is okay with
       or without this patch.
    3. An i.MX8MM system using current sdma-imx7d.bin firmware from
       linux-firmware. uart is okay with or without this patch and I
       confirmed the rom version of the uart script is being used which was
       the intention and reason for commit b98ce2f4e32b ("dmaengine:
       imx-sdma: add uart rom script") in the first place.
    
    Fixes: b98ce2f4e32b ("dmaengine: imx-sdma: add uart rom script")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kevin Groeneveld <kgroeneveld@lenbrook.com>
    Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Acked-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/20220410223118.15086-1-kgroeneveld@lenbrook.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a8d1665cff19bfffa025314bb6420339ac2ce37
Author: Xiaomeng Tong <xiam0nd.tong@gmail.com>
Date:   Sun Mar 27 14:11:54 2022 +0800

    dma: at_xdmac: fix a missing check on list iterator
    
    commit 206680c4e46b62fd8909385e0874a36952595b85 upstream.
    
    The bug is here:
            __func__, desc, &desc->tx_dma_desc.phys, ret, cookie, residue);
    
    The list iterator 'desc' will point to a bogus position containing
    HEAD if the list is empty or no element is found. To avoid dev_dbg()
    prints a invalid address, use a new variable 'iter' as the list
    iterator, while use the origin variable 'desc' as a dedicated
    pointer to point to the found element.
    
    Cc: stable@vger.kernel.org
    Fixes: 82e2424635f4c ("dmaengine: xdmac: fix print warning on dma_addr_t variable")
    Signed-off-by: Xiaomeng Tong <xiam0nd.tong@gmail.com>
    Link: https://lore.kernel.org/r/20220327061154.4867-1-xiam0nd.tong@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d10a711d4db68cca0b2ec2f612c119fa99871399
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Thu Apr 21 09:39:20 2022 +0800

    ata: pata_marvell: Check the 'bmdma_addr' beforing reading
    
    commit aafa9f958342db36c17ac2a7f1b841032c96feb4 upstream.
    
    Before detecting the cable type on the dma bar, the driver should check
    whether the 'bmdma_addr' is zero, which means the adapter does not
    support DMA, otherwise we will get the following error:
    
    [    5.146634] Bad IO access at port 0x1 (return inb(port))
    [    5.147206] WARNING: CPU: 2 PID: 303 at lib/iomap.c:44 ioread8+0x4a/0x60
    [    5.150856] RIP: 0010:ioread8+0x4a/0x60
    [    5.160238] Call Trace:
    [    5.160470]  <TASK>
    [    5.160674]  marvell_cable_detect+0x6e/0xc0 [pata_marvell]
    [    5.161728]  ata_eh_recover+0x3520/0x6cc0
    [    5.168075]  ata_do_eh+0x49/0x3c0
    
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48b2ab1a960a173a913e6e2e1c2ced41d1401649
Author: Alistair Popple <apopple@nvidia.com>
Date:   Thu Apr 21 16:36:10 2022 -0700

    mm/mmu_notifier.c: fix race in mmu_interval_notifier_remove()
    
    commit 319561669a59d8e9206ab311ae5433ef92fd79d1 upstream.
    
    In some cases it is possible for mmu_interval_notifier_remove() to race
    with mn_tree_inv_end() allowing it to return while the notifier data
    structure is still in use.  Consider the following sequence:
    
      CPU0 - mn_tree_inv_end()            CPU1 - mmu_interval_notifier_remove()
      ----------------------------------- ------------------------------------
                                          spin_lock(subscriptions->lock);
                                          seq = subscriptions->invalidate_seq;
      spin_lock(subscriptions->lock);     spin_unlock(subscriptions->lock);
      subscriptions->invalidate_seq++;
                                          wait_event(invalidate_seq != seq);
                                          return;
      interval_tree_remove(interval_sub); kfree(interval_sub);
      spin_unlock(subscriptions->lock);
      wake_up_all();
    
    As the wait_event() condition is true it will return immediately.  This
    can lead to use-after-free type errors if the caller frees the data
    structure containing the interval notifier subscription while it is
    still on a deferred list.  Fix this by taking the appropriate lock when
    reading invalidate_seq to ensure proper synchronisation.
    
    I observed this whilst running stress testing during some development.
    You do have to be pretty unlucky, but it leads to the usual problems of
    use-after-free (memory corruption, kernel crash, difficult to diagnose
    WARN_ON, etc).
    
    Link: https://lkml.kernel.org/r/20220420043734.476348-1-apopple@nvidia.com
    Fixes: 99cb252f5e68 ("mm/mmu_notifier: add an interval tree notifier")
    Signed-off-by: Alistair Popple <apopple@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41ba681c63731872beab7bd86d8246e2ea121381
Author: Nico Pache <npache@redhat.com>
Date:   Thu Apr 21 16:36:01 2022 -0700

    oom_kill.c: futex: delay the OOM reaper to allow time for proper futex cleanup
    
    commit e4a38402c36e42df28eb1a5394be87e6571fb48a upstream.
    
    The pthread struct is allocated on PRIVATE|ANONYMOUS memory [1] which
    can be targeted by the oom reaper.  This mapping is used to store the
    futex robust list head; the kernel does not keep a copy of the robust
    list and instead references a userspace address to maintain the
    robustness during a process death.
    
    A race can occur between exit_mm and the oom reaper that allows the oom
    reaper to free the memory of the futex robust list before the exit path
    has handled the futex death:
    
        CPU1                               CPU2
        --------------------------------------------------------------------
        page_fault
        do_exit "signal"
        wake_oom_reaper
                                            oom_reaper
                                            oom_reap_task_mm (invalidates mm)
        exit_mm
        exit_mm_release
        futex_exit_release
        futex_cleanup
        exit_robust_list
        get_user (EFAULT- can't access memory)
    
    If the get_user EFAULT's, the kernel will be unable to recover the
    waiters on the robust_list, leaving userspace mutexes hung indefinitely.
    
    Delay the OOM reaper, allowing more time for the exit path to perform
    the futex cleanup.
    
    Reproducer: https://gitlab.com/jsavitz/oom_futex_reproducer
    
    Based on a patch by Michal Hocko.
    
    Link: https://elixir.bootlin.com/glibc/glibc-2.35/source/nptl/allocatestack.c#L370 [1]
    Link: https://lkml.kernel.org/r/20220414144042.677008-1-npache@redhat.com
    Fixes: 212925802454 ("mm: oom: let oom_reap_task and exit_mmap run concurrently")
    Signed-off-by: Joel Savitz <jsavitz@redhat.com>
    Signed-off-by: Nico Pache <npache@redhat.com>
    Co-developed-by: Joel Savitz <jsavitz@redhat.com>
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Rafael Aquini <aquini@redhat.com>
    Cc: Waiman Long <longman@redhat.com>
    Cc: Herton R. Krzesinski <herton@redhat.com>
    Cc: Juri Lelli <juri.lelli@redhat.com>
    Cc: Vincent Guittot <vincent.guittot@linaro.org>
    Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Ben Segall <bsegall@google.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Daniel Bristot de Oliveira <bristot@redhat.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Joel Savitz <jsavitz@redhat.com>
    Cc: Darren Hart <dvhart@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9dcb65cdf3128113ce9a48b05a72b6f8ef2bc257
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Thu Apr 21 16:35:46 2022 -0700

    mm, hugetlb: allow for "high" userspace addresses
    
    commit 5f24d5a579d1eace79d505b148808a850b417d4c upstream.
    
    This is a fix for commit f6795053dac8 ("mm: mmap: Allow for "high"
    userspace addresses") for hugetlb.
    
    This patch adds support for "high" userspace addresses that are
    optionally supported on the system and have to be requested via a hint
    mechanism ("high" addr parameter to mmap).
    
    Architectures such as powerpc and x86 achieve this by making changes to
    their architectural versions of hugetlb_get_unmapped_area() function.
    However, arm64 uses the generic version of that function.
    
    So take into account arch_get_mmap_base() and arch_get_mmap_end() in
    hugetlb_get_unmapped_area().  To allow that, move those two macros out
    of mm/mmap.c into include/linux/sched/mm.h
    
    If these macros are not defined in architectural code then they default
    to (TASK_SIZE) and (base) so should not introduce any behavioural
    changes to architectures that do not define them.
    
    For the time being, only ARM64 is affected by this change.
    
    Catalin (ARM64) said
     "We should have fixed hugetlb_get_unmapped_area() as well when we added
      support for 52-bit VA. The reason for commit f6795053dac8 was to
      prevent normal mmap() from returning addresses above 48-bit by default
      as some user-space had hard assumptions about this.
    
      It's a slight ABI change if you do this for hugetlb_get_unmapped_area()
      but I doubt anyone would notice. It's more likely that the current
      behaviour would cause issues, so I'd rather have them consistent.
    
      Basically when arm64 gained support for 52-bit addresses we did not
      want user-space calling mmap() to suddenly get such high addresses,
      otherwise we could have inadvertently broken some programs (similar
      behaviour to x86 here). Hence we added commit f6795053dac8. But we
      missed hugetlbfs which could still get such high mmap() addresses. So
      in theory that's a potential regression that should have bee addressed
      at the same time as commit f6795053dac8 (and before arm64 enabled
      52-bit addresses)"
    
    Link: https://lkml.kernel.org/r/ab847b6edb197bffdfe189e70fb4ac76bfe79e0d.1650033747.git.christophe.leroy@csgroup.eu
    Fixes: f6795053dac8 ("mm: mmap: Allow for "high" userspace addresses")
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Steve Capper <steve.capper@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: <stable@vger.kernel.org>    [5.0.x]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07bdd207774c7d4ed0a5e8486a2ee6157271cad1
Author: Shakeel Butt <shakeelb@google.com>
Date:   Thu Apr 21 16:35:40 2022 -0700

    memcg: sync flush only if periodic flush is delayed
    
    commit 9b3016154c913b2e7ec5ae5c9a42eb9e732d86aa upstream.
    
    Daniel Dao has reported [1] a regression on workloads that may trigger a
    lot of refaults (anon and file).  The underlying issue is that flushing
    rstat is expensive.  Although rstat flush are batched with (nr_cpus *
    MEMCG_BATCH) stat updates, it seems like there are workloads which
    genuinely do stat updates larger than batch value within short amount of
    time.  Since the rstat flush can happen in the performance critical
    codepaths like page faults, such workload can suffer greatly.
    
    This patch fixes this regression by making the rstat flushing
    conditional in the performance critical codepaths.  More specifically,
    the kernel relies on the async periodic rstat flusher to flush the stats
    and only if the periodic flusher is delayed by more than twice the
    amount of its normal time window then the kernel allows rstat flushing
    from the performance critical codepaths.
    
    Now the question: what are the side-effects of this change? The worst
    that can happen is the refault codepath will see 4sec old lruvec stats
    and may cause false (or missed) activations of the refaulted page which
    may under-or-overestimate the workingset size.  Though that is not very
    concerning as the kernel can already miss or do false activations.
    
    There are two more codepaths whose flushing behavior is not changed by
    this patch and we may need to come to them in future.  One is the
    writeback stats used by dirty throttling and second is the deactivation
    heuristic in the reclaim.  For now keeping an eye on them and if there
    is report of regression due to these codepaths, we will reevaluate then.
    
    Link: https://lore.kernel.org/all/CA+wXwBSyO87ZX5PVwdHm-=dBjZYECGmfnydUicUyrQqndgX2MQ@mail.gmail.com [1]
    Link: https://lkml.kernel.org/r/20220304184040.1304781-1-shakeelb@google.com
    Fixes: 1f828223b799 ("memcg: flush lruvec stats in the refault")
    Signed-off-by: Shakeel Butt <shakeelb@google.com>
    Reported-by: Daniel Dao <dqminh@cloudflare.com>
    Tested-by: Ivan Babrou <ivan@cloudflare.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Koutný <mkoutny@suse.com>
    Cc: Frank Hofmann <fhofmann@cloudflare.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c71b29d55d43503b19fe7f5125f58c7b9e423b3
Author: Xu Yu <xuyu@linux.alibaba.com>
Date:   Thu Apr 21 16:35:37 2022 -0700

    mm/memory-failure.c: skip huge_zero_page in memory_failure()
    
    commit d173d5417fb67411e623d394aab986d847e47dad upstream.
    
    Kernel panic when injecting memory_failure for the global
    huge_zero_page, when CONFIG_DEBUG_VM is enabled, as follows.
    
      Injecting memory failure for pfn 0x109ff9 at process virtual address 0x20ff9000
      page:00000000fb053fc3 refcount:2 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x109e00
      head:00000000fb053fc3 order:9 compound_mapcount:0 compound_pincount:0
      flags: 0x17fffc000010001(locked|head|node=0|zone=2|lastcpupid=0x1ffff)
      raw: 017fffc000010001 0000000000000000 dead000000000122 0000000000000000
      raw: 0000000000000000 0000000000000000 00000002ffffffff 0000000000000000
      page dumped because: VM_BUG_ON_PAGE(is_huge_zero_page(head))
      ------------[ cut here ]------------
      kernel BUG at mm/huge_memory.c:2499!
      invalid opcode: 0000 [#1] PREEMPT SMP PTI
      CPU: 6 PID: 553 Comm: split_bug Not tainted 5.18.0-rc1+ #11
      Hardware name: Alibaba Cloud Alibaba Cloud ECS, BIOS 3288b3c 04/01/2014
      RIP: 0010:split_huge_page_to_list+0x66a/0x880
      Code: 84 9b fb ff ff 48 8b 7c 24 08 31 f6 e8 9f 5d 2a 00 b8 b8 02 00 00 e9 e8 fb ff ff 48 c7 c6 e8 47 3c 82 4c b
      RSP: 0018:ffffc90000dcbdf8 EFLAGS: 00010246
      RAX: 000000000000003c RBX: 0000000000000001 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: ffffffff823e4c4f RDI: 00000000ffffffff
      RBP: ffff88843fffdb40 R08: 0000000000000000 R09: 00000000fffeffff
      R10: ffffc90000dcbc48 R11: ffffffff82d68448 R12: ffffea0004278000
      R13: ffffffff823c6203 R14: 0000000000109ff9 R15: ffffea000427fe40
      FS:  00007fc375a26740(0000) GS:ffff88842fd80000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007fc3757c9290 CR3: 0000000102174006 CR4: 00000000003706e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       try_to_split_thp_page+0x3a/0x130
       memory_failure+0x128/0x800
       madvise_inject_error.cold+0x8b/0xa1
       __x64_sys_madvise+0x54/0x60
       do_syscall_64+0x35/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xae
      RIP: 0033:0x7fc3754f8bf9
      Code: 01 00 48 81 c4 80 00 00 00 e9 f1 fe ff ff 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 8
      RSP: 002b:00007ffeda93a1d8 EFLAGS: 00000217 ORIG_RAX: 000000000000001c
      RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fc3754f8bf9
      RDX: 0000000000000064 RSI: 0000000000003000 RDI: 0000000020ff9000
      RBP: 00007ffeda93a200 R08: 0000000000000000 R09: 0000000000000000
      R10: 00000000ffffffff R11: 0000000000000217 R12: 0000000000400490
      R13: 00007ffeda93a2e0 R14: 0000000000000000 R15: 0000000000000000
    
    This makes huge_zero_page bail out explicitly before split in
    memory_failure(), thus the panic above won't happen again.
    
    Link: https://lkml.kernel.org/r/497d3835612610e370c74e697ea3c721d1d55b9c.1649775850.git.xuyu@linux.alibaba.com
    Fixes: 6a46079cf57a ("HWPOISON: The high level memory error handler in the VM v7")
    Signed-off-by: Xu Yu <xuyu@linux.alibaba.com>
    Reported-by: Abaci <abaci@linux.alibaba.com>
    Suggested-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
    Acked-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
    Reviewed-by: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b81291922f8b145d51bf46e518cd25e015e6f109
Author: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Date:   Thu Apr 14 15:58:13 2022 +0530

    EDAC/synopsys: Read the error count from the correct register
    
    commit e2932d1f6f055b2af2114c7e64a26dc1b5593d0c upstream.
    
    Currently, the error count is read wrongly from the status register. Read
    the count from the proper error count register (ERRCNT).
    
      [ bp: Massage. ]
    
    Fixes: b500b4a029d5 ("EDAC, synopsys: Add ECC support for ZynqMP DDR controller")
    Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Michal Simek <michal.simek@xilinx.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220414102813.4468-1-shubhrajyoti.datta@xilinx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87dd813bd2c3cc846658fc10de8ca9350c805684
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Apr 12 07:07:56 2022 +0200

    nvme-pci: disable namespace identifiers for Qemu controllers
    
    [ Upstream commit 66dd346b84d79fde20832ed691a54f4881eac20d ]
    
    Qemu unconditionally reports a UUID, which depending on the qemu version
    is either all-null (which is incorrect but harmless) or contains a single
    bit set for all controllers.  In addition it can also optionally report
    a eui64 which needs to be manually set.  Disable namespace identifiers
    for Qemu controlles entirely even if in some cases they could be set
    correctly through manual intervention.
    
    Reported-by: Luis Chamberlain <mcgrof@kernel.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dab2f477e15a9cb967c59e06071ec122e9c75d90
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Apr 11 08:05:27 2022 +0200

    nvme-pci: disable namespace identifiers for the MAXIO MAP1002/1202
    
    [ Upstream commit a98a945b80f8684121d477ae68ebc01da953da1f ]
    
    The MAXIO MAP1002/1202 controllers reports completely bogus Namespace
    identifiers that even change after suspend cycles.  Disable using
    the Identifiers entirely.
    
    Reported-by: 金韬 <me@kingtous.cn>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Tested-by: 金韬 <me@kingtous.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 25f37ed22a9e8b01af9429de8c876186fdfb8324
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Apr 11 08:05:27 2022 +0200

    nvme: add a quirk to disable namespace identifiers
    
    [ Upstream commit 00ff400e6deee00f7b15e200205b2708b63b8cf6 ]
    
    Add a quirk to disable using and exporting namespace identifiers for
    controllers where they are broken beyond repair.
    
    The most directly visible problem with non-unique namespace identifiers
    is that they break the /dev/disk/by-id/ links, with the link for a
    supposedly unique identifier now pointing to one of multiple possible
    namespaces that share the same ID, and a somewhat random selection of
    which one actually shows up.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a9f9f1791f331ca53ac89f3d5e6e2c9b482d66c
Author: NeilBrown <neilb@suse.de>
Date:   Thu Apr 14 13:57:35 2022 +1000

    VFS: filename_create(): fix incorrect intent.
    
    [ Upstream commit b3d4650d82c71b9c9a8184de9e8bb656012b289e ]
    
    When asked to create a path ending '/', but which is not to be a
    directory (LOOKUP_DIRECTORY not set), filename_create() will never try
    to create the file.  If it doesn't exist, -ENOENT is reported.
    
    However, it still passes LOOKUP_CREATE|LOOKUP_EXCL to the filesystems
    ->lookup() function, even though there is no intent to create.  This is
    misleading and can cause incorrect behaviour.
    
    If you try
    
       ln -s foo /path/dir/
    
    where 'dir' is a directory on an NFS filesystem which is not currently
    known in the dcache, this will fail with ENOENT.
    
    But as the name is not in the dcache, nfs_lookup gets called with
    LOOKUP_CREATE|LOOKUP_EXCL and so it returns NULL without performing any
    lookup, with the expectation that a subsequent call to create the target
    will be made, and the lookup can be combined with the creation.  In the
    case with a trailing '/' and no LOOKUP_DIRECTORY, that call is never
    made.  Instead filename_create() sees that the dentry is not (yet)
    positive and returns -ENOENT - even though the directory actually
    exists.
    
    So only set LOOKUP_CREATE|LOOKUP_EXCL if there really is an intent to
    create, and use the absence of these flags to decide if -ENOENT should
    be returned.
    
    Note that filename_parentat() is only interested in LOOKUP_REVAL, so we
    split that out and store it in 'reval_flag'.  __lookup_hash() then gets
    reval_flag combined with whatever create flags were determined to be
    needed.
    
    Reviewed-by: David Disseldorp <ddiss@suse.de>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: NeilBrown <neilb@suse.de>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 773ca67ffc964785fae7e950e164ed845c9b365d
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Apr 12 05:41:00 2022 -0400

    stat: fix inconsistency between struct stat and struct compat_stat
    
    [ Upstream commit 932aba1e169090357a77af18850a10c256b50819 ]
    
    struct stat (defined in arch/x86/include/uapi/asm/stat.h) has 32-bit
    st_dev and st_rdev; struct compat_stat (defined in
    arch/x86/include/asm/compat.h) has 16-bit st_dev and st_rdev followed by
    a 16-bit padding.
    
    This patch fixes struct compat_stat to match struct stat.
    
    [ Historical note: the old x86 'struct stat' did have that 16-bit field
      that the compat layer had kept around, but it was changes back in 2003
      by "struct stat - support larger dev_t":
    
        https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/commit/?id=e95b2065677fe32512a597a79db94b77b90c968d
    
      and back in those days, the x86_64 port was still new, and separate
      from the i386 code, and had already picked up the old version with a
      16-bit st_dev field ]
    
    Note that we can't change compat_dev_t because it is used by
    compat_loop_info.
    
    Also, if the st_dev and st_rdev values are 32-bit, we don't have to use
    old_valid_dev to test if the value fits into them.  This fixes
    -EOVERFLOW on filesystems that are on NVMe because NVMe uses the major
    number 259.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: Andreas Schwab <schwab@linux-m68k.org>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 80c713a894c353f875924c81c20b8018b3fe6892
Author: Mike Christie <michael.christie@oracle.com>
Date:   Thu Apr 7 19:13:13 2022 -0500

    scsi: qedi: Fix failed disconnect handling
    
    [ Upstream commit 857b06527f707f5df634b854898a191b5c1d0272 ]
    
    We set the qedi_ep state to EP_STATE_OFLDCONN_START when the ep is
    created. Then in qedi_set_path we kick off the offload work. If userspace
    times out the connection and calls ep_disconnect, qedi will only flush the
    offload work if the qedi_ep state has transitioned away from
    EP_STATE_OFLDCONN_START. If we can't connect we will not have transitioned
    state and will leave the offload work running, and we will free the qedi_ep
    from under it.
    
    This patch just has us init the work when we create the ep, then always
    flush it.
    
    Link: https://lore.kernel.org/r/20220408001314.5014-10-michael.christie@oracle.com
    Tested-by: Manish Rangankar <mrangankar@marvell.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Reviewed-by: Chris Leech <cleech@redhat.com>
    Acked-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7f4f3016fea68faba6c8846cc6b35717b253e7a
Author: Mike Christie <michael.christie@oracle.com>
Date:   Thu Apr 7 19:13:12 2022 -0500

    scsi: iscsi: Fix NOP handling during conn recovery
    
    [ Upstream commit 44ac97109e42f87b1a34954704b81b6c8eca80c4 ]
    
    If a offload driver doesn't use the xmit workqueue, then when we are doing
    ep_disconnect libiscsi can still inject PDUs to the driver. This adds a
    check for if the connection is bound before trying to inject PDUs.
    
    Link: https://lore.kernel.org/r/20220408001314.5014-9-michael.christie@oracle.com
    Tested-by: Manish Rangankar <mrangankar@marvell.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Reviewed-by: Chris Leech <cleech@redhat.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e4efe868aa14c8557841ecf30b13667f96a12111
Author: Mike Christie <michael.christie@oracle.com>
Date:   Thu Apr 7 19:13:11 2022 -0500

    scsi: iscsi: Merge suspend fields
    
    [ Upstream commit 5bd856256f8c03e329f8ff36d8c8efcb111fe6df ]
    
    Move the tx and rx suspend fields into one flags field.
    
    Link: https://lore.kernel.org/r/20220408001314.5014-8-michael.christie@oracle.com
    Tested-by: Manish Rangankar <mrangankar@marvell.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Reviewed-by: Chris Leech <cleech@redhat.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 740411ee2f94632127338decbdd4e9994778573b
Author: Mike Christie <michael.christie@oracle.com>
Date:   Thu Apr 7 19:13:07 2022 -0500

    scsi: iscsi: Release endpoint ID when its freed
    
    [ Upstream commit 3c6ae371b8a1ffba1fc415989fd581ebf841ed0a ]
    
    We can't release the endpoint ID until all references to the endpoint have
    been dropped or it could be allocated while in use. This has us use an idr
    instead of looping over all conns to find a free ID and then free the ID
    when all references have been dropped instead of when the device is only
    deleted.
    
    Link: https://lore.kernel.org/r/20220408001314.5014-4-michael.christie@oracle.com
    Tested-by: Manish Rangankar <mrangankar@marvell.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Reviewed-by: Chris Leech <cleech@redhat.com>
    Reviewed-by: Wu Bo <wubo40@huawei.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 123a52eb610d6cbf8ec49b1df831efc685334601
Author: Tomas Melin <tomas.melin@vaisala.com>
Date:   Thu Apr 7 19:16:59 2022 +0300

    net: macb: Restart tx only if queue pointer is lagging
    
    [ Upstream commit 5ad7f18cd82cee8e773d40cc7a1465a526f2615c ]
    
    commit 4298388574da ("net: macb: restart tx after tx used bit read")
    added support for restarting transmission. Restarting tx does not work
    in case controller asserts TXUBR interrupt and TQBP is already at the end
    of the tx queue. In that situation, restarting tx will immediately cause
    assertion of another TXUBR interrupt. The driver will end up in an infinite
    interrupt loop which it cannot break out of.
    
    For cases where TQBP is at the end of the tx queue, instead
    only clear TX_USED interrupt. As more data gets pushed to the queue,
    transmission will resume.
    
    This issue was observed on a Xilinx Zynq-7000 based board.
    During stress test of the network interface,
    driver would get stuck on interrupt loop within seconds or minutes
    causing CPU to stall.
    
    Signed-off-by: Tomas Melin <tomas.melin@vaisala.com>
    Tested-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Reviewed-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lore.kernel.org/r/20220407161659.14532-1-tomas.melin@vaisala.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc663ff8cae3c3bc52ea10aef8d38d3e16ff1274
Author: Xiaoke Wang <xkernel.wang@foxmail.com>
Date:   Thu Apr 7 10:31:51 2022 +0800

    drm/msm/mdp5: check the return of kzalloc()
    
    [ Upstream commit 047ae665577776b7feb11bd4f81f46627cff95e7 ]
    
    kzalloc() is a memory allocation function which can return NULL when
    some internal memory errors happen. So it is better to check it to
    prevent potential wrong memory access.
    
    Besides, since mdp5_plane_reset() is void type, so we should better
    set `plane-state` to NULL after releasing it.
    
    Signed-off-by: Xiaoke Wang <xkernel.wang@foxmail.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Patchwork: https://patchwork.freedesktop.org/patch/481055/
    Link: https://lore.kernel.org/r/tencent_8E2A1C78140EE1784AB2FF4B2088CC0AB908@qq.com
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5fe864539caf84cacee58911b4d58cb071319322
Author: Lv Ruyi <lv.ruyi@zte.com.cn>
Date:   Fri Apr 8 09:49:41 2022 +0000

    dpaa_eth: Fix missing of_node_put in dpaa_get_ts_info()
    
    [ Upstream commit 1a7eb80d170c28be2928433702256fe2a0bd1e0f ]
    
    Both of of_get_parent() and of_parse_phandle() return node pointer with
    refcount incremented, use of_node_put() on it to decrease refcount
    when done.
    
    Reported-by: Zeal Robot <zealci@zte.com.cn>
    Signed-off-by: Lv Ruyi <lv.ruyi@zte.com.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 48e1db2c3d4200be0a5c215a273ec4031d21f8fe
Author: Borislav Petkov <bp@alien8.de>
Date:   Tue Apr 5 18:55:37 2022 +0200

    brcmfmac: sdio: Fix undefined behavior due to shift overflowing the constant
    
    [ Upstream commit 6fb3a5868b2117611f41e421e10e6a8c2a13039a ]
    
    Fix:
    
      drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c: In function ‘brcmf_sdio_drivestrengthinit’:
      drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:3798:2: error: case label does not reduce to an integer constant
        case SDIOD_DRVSTR_KEY(BRCM_CC_43143_CHIP_ID, 17):
        ^~~~
      drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:3809:2: error: case label does not reduce to an integer constant
        case SDIOD_DRVSTR_KEY(BRCM_CC_43362_CHIP_ID, 13):
        ^~~~
    
    See https://lore.kernel.org/r/YkwQ6%2BtIH8GQpuct@zn.tnic for the gory
    details as to why it triggers with older gccs only.
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Arend van Spriel <aspriel@gmail.com>
    Cc: Franky Lin <franky.lin@broadcom.com>
    Cc: Hante Meuleman <hante.meuleman@broadcom.com>
    Cc: Kalle Valo <kvalo@kernel.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: brcm80211-dev-list.pdl@broadcom.com
    Cc: netdev@vger.kernel.org
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/Ykx0iRlvtBnKqtbG@zn.tnic
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e25b350e252155efd2de9dbdd8939e360866f34a
Author: Borislav Petkov <bp@suse.de>
Date:   Tue Apr 5 17:15:14 2022 +0200

    mt76: Fix undefined behavior due to shift overflowing the constant
    
    [ Upstream commit dbc2b1764734857d68425468ffa8486e97ab89df ]
    
    Fix:
    
      drivers/net/wireless/mediatek/mt76/mt76x2/pci.c: In function ‘mt76x2e_probe’:
      ././include/linux/compiler_types.h:352:38: error: call to ‘__compiletime_assert_946’ \
            declared with attribute error: FIELD_PREP: mask is not constant
        _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
    
    See https://lore.kernel.org/r/YkwQ6%2BtIH8GQpuct@zn.tnic for the gory
    details as to why it triggers with older gccs only.
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Felix Fietkau <nbd@nbd.name>
    Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
    Cc: Ryder Lee <ryder.lee@mediatek.com>
    Cc: Shayne Chen <shayne.chen@mediatek.com>
    Cc: Sean Wang <sean.wang@mediatek.com>
    Cc: Kalle Valo <kvalo@kernel.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: linux-wireless@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20220405151517.29753-9-bp@alien8.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a7a651d5a5259bfeec89959b05a04d7c8cecd135
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Apr 8 10:22:04 2022 +0800

    net: atlantic: Avoid out-of-bounds indexing
    
    [ Upstream commit 8d3a6c37d50d5a0504c126c932cc749e6dd9c78f ]
    
    UBSAN warnings are observed on atlantic driver:
    [ 294.432996] UBSAN: array-index-out-of-bounds in /build/linux-Qow4fL/linux-5.15.0/drivers/net/ethernet/aquantia/atlantic/aq_nic.c:484:48
    [ 294.433695] index 8 is out of range for type 'aq_vec_s *[8]'
    
    The ring is dereferenced right before breaking out the loop, to prevent
    that from happening, only use the index in the loop to fix the issue.
    
    BugLink: https://bugs.launchpad.net/bugs/1958770
    Tested-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Reviewed-by: Igor Russkikh <irusskikh@marvell.com>
    Link: https://lore.kernel.org/r/20220408022204.16815-1-kai.heng.feng@canonical.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 213330bafd021eaa378d4aa91d40ba2736abd4de
Author: David Howells <dhowells@redhat.com>
Date:   Thu Apr 7 00:03:14 2022 +0100

    cifs: Check the IOCB_DIRECT flag, not O_DIRECT
    
    [ Upstream commit 994fd530a512597ffcd713b0f6d5bc916c5698f0 ]
    
    Use the IOCB_DIRECT indicator flag on the I/O context rather than checking to
    see if the file was opened O_DIRECT.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Steve French <sfrench@samba.org>
    cc: Shyam Prasad N <nspmangalore@gmail.com>
    cc: Rohith Surabattula <rohiths.msft@gmail.com>
    cc: linux-cifs@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6085e24fd972f36d004c05fffe226ffc61809c3a
Author: Hongbin Wang <wh_bin@126.com>
Date:   Wed Apr 6 22:46:22 2022 -0400

    vxlan: fix error return code in vxlan_fdb_append
    
    [ Upstream commit 7cea5560bf656b84f9ed01c0cc829d4eecd0640b ]
    
    When kmalloc and dst_cache_init failed,
    should return ENOMEM rather than ENOBUFS.
    
    Signed-off-by: Hongbin Wang <wh_bin@126.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 32fe43df71c543a942a3514b4324928436fce183
Author: Rob Herring <robh@kernel.org>
Date:   Wed Apr 6 14:14:41 2022 -0500

    arm64: dts: imx: Fix imx8*-var-som touchscreen property sizes
    
    [ Upstream commit 1bc12d301594eafde0a8529d28d459af81053b3a ]
    
    The common touchscreen properties are all 32-bit, not 16-bit. These
    properties must not be too important as they are all ignored in case of an
    error reading them.
    
    Signed-off-by: Rob Herring <robh@kernel.org>
    Link: https://lore.kernel.org/r/Yk3moe6Hz8ELM0iS@robh.at.kernel.org'
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0ba965e47830057c5550b869a5127e8e50136cf
Author: Xiaoke Wang <xkernel.wang@foxmail.com>
Date:   Thu Mar 24 17:15:08 2022 +0800

    drm/msm/disp: check the return value of kzalloc()
    
    [ Upstream commit f75e582b0c3ee8f0bddc2248cc8b9175f29c5937 ]
    
    kzalloc() is a memory allocation function which can return NULL when
    some internal memory errors happen. So it is better to check it to
    prevent potential wrong memory access.
    
    Signed-off-by: Xiaoke Wang <xkernel.wang@foxmail.com>
    Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
    Link: https://lore.kernel.org/r/tencent_B3E19486FF39415098B572B7397C2936C309@qq.com
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b78d403395682bb69976ade363613803e69fcdff
Author: Borislav Petkov <bp@suse.de>
Date:   Tue Apr 5 17:15:08 2022 +0200

    ALSA: usb-audio: Fix undefined behavior due to shift overflowing the constant
    
    [ Upstream commit 1ef8715975de8bd481abbd0839ed4f49d9e5b0ff ]
    
    Fix:
    
      sound/usb/midi.c: In function ‘snd_usbmidi_out_endpoint_create’:
      sound/usb/midi.c:1389:2: error: case label does not reduce to an integer constant
        case USB_ID(0xfc08, 0x0101): /* Unknown vendor Cable */
        ^~~~
    
    See https://lore.kernel.org/r/YkwQ6%2BtIH8GQpuct@zn.tnic for the gory
    details as to why it triggers with older gccs only.
    
    [ A slight correction with parentheses around the argument by tiwai ]
    
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/r/20220405151517.29753-3-bp@alien8.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d441c2e2ad17e2decde6bc8eaa70ddcd9a7541c
Author: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
Date:   Tue Mar 22 14:18:30 2022 +0800

    platform/x86: samsung-laptop: Fix an unsigned comparison which can never be negative
    
    [ Upstream commit 0284d4d1be753f648f28b77bdfbe6a959212af5c ]
    
    Eliminate the follow smatch warnings:
    
    drivers/platform/x86/samsung-laptop.c:1124 kbd_led_set() warn: unsigned
    'value' is never less than zero.
    
    Reported-by: Abaci Robot <abaci@linux.alibaba.com>
    Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
    Link: https://lore.kernel.org/r/20220322061830.105579-1-jiapeng.chong@linux.alibaba.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4426116b2e0222a6d68778108889f24b0d2e2025
Author: Sameer Pujar <spujar@nvidia.com>
Date:   Wed Jan 12 19:26:46 2022 +0530

    reset: tegra-bpmp: Restore Handle errors in BPMP response
    
    [ Upstream commit d1da1052ffad63aa5181b69f20a6952e31f339c2 ]
    
    This reverts following commit 69125b4b9440 ("reset: tegra-bpmp: Revert
    Handle errors in BPMP response").
    
    The Tegra194 HDA reset failure is fixed by commit d278dc9151a0 ("ALSA:
    hda/tegra: Fix Tegra194 HDA reset failure"). The temporary revert of
    original commit c045ceb5a145 ("reset: tegra-bpmp: Handle errors in BPMP
    response") can be removed now.
    
    Signed-off-by: Sameer Pujar <spujar@nvidia.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Link: https://lore.kernel.org/r/1641995806-15245-1-git-send-email-spujar@nvidia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a6ec9d95c2053e504b9327b4ed7822aafd5c87cc
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Wed Dec 15 11:25:46 2021 +0100

    reset: renesas: Check return value of reset_control_deassert()
    
    [ Upstream commit da18980a855edf44270f05455e0ec3f2472f64cc ]
    
    Deasserting the reset is vital, therefore bail out in case of error.
    
    Suggested-by: Biju Das <biju.das.jz@bp.renesas.com>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
    Link: https://lore.kernel.org/r/b2131908-0110-006b-862f-080517f3e2d8@gmail.com
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 70fa727835f93b3443b4253bb370db6b71aebd30
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Mar 31 12:04:43 2022 -0700

    ARM: vexpress/spc: Avoid negative array index when !SMP
    
    [ Upstream commit b3f1dd52c991d79118f35e6d1bf4d7cb09882e38 ]
    
    When building multi_v7_defconfig+CONFIG_SMP=n, -Warray-bounds exposes
    a couple negative array index accesses:
    
    arch/arm/mach-vexpress/spc.c: In function 've_spc_clk_init':
    arch/arm/mach-vexpress/spc.c:583:21: warning: array subscript -1 is below array bounds of 'bool[2]' {aka '_Bool[2]'} [-Warray-bounds]
      583 |   if (init_opp_table[cluster])
          |       ~~~~~~~~~~~~~~^~~~~~~~~
    arch/arm/mach-vexpress/spc.c:556:7: note: while referencing 'init_opp_table'
      556 |  bool init_opp_table[MAX_CLUSTERS] = { false };
          |       ^~~~~~~~~~~~~~
    arch/arm/mach-vexpress/spc.c:592:18: warning: array subscript -1 is below array bounds of 'bool[2]' {aka '_Bool[2]'} [-Warray-bounds]
      592 |    init_opp_table[cluster] = true;
          |    ~~~~~~~~~~~~~~^~~~~~~~~
    arch/arm/mach-vexpress/spc.c:556:7: note: while referencing 'init_opp_table'
      556 |  bool init_opp_table[MAX_CLUSTERS] = { false };
          |       ^~~~~~~~~~~~~~
    
    Skip this logic when built !SMP.
    
    Link: https://lore.kernel.org/r/20220331190443.851661-1-keescook@chromium.org
    Cc: Liviu Dudau <liviu.dudau@arm.com>
    Cc: Sudeep Holla <sudeep.holla@arm.com>
    Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: linux-arm-kernel@lists.infradead.org
    Acked-by: Liviu Dudau <liviu.dudau@arm.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d3acd3f9f80e642519704b4d905e1ee622fea495
Author: Muchun Song <songmuchun@bytedance.com>
Date:   Fri Apr 22 14:00:33 2022 +0800

    arm64: mm: fix p?d_leaf()
    
    [ Upstream commit 23bc8f69f0eceecbb87c3801d2e48827d2dca92b ]
    
    The pmd_leaf() is used to test a leaf mapped PMD, however, it misses
    the PROT_NONE mapped PMD on arm64.  Fix it.  A real world issue [1]
    caused by this was reported by Qian Cai. Also fix pud_leaf().
    
    Link: https://patchwork.kernel.org/comment/24798260/ [1]
    Fixes: 8aa82df3c123 ("arm64: mm: add p?d_leaf() definitions")
    Reported-by: Qian Cai <quic_qiancai@quicinc.com>
    Signed-off-by: Muchun Song <songmuchun@bytedance.com>
    Link: https://lore.kernel.org/r/20220422060033.48711-1-songmuchun@bytedance.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ec9cb700cbf7a4d670bc4444cb1ad5bfb6064fc7
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Tue Apr 19 16:51:54 2022 +0300

    selftests: mlxsw: vxlan_flooding: Prevent flooding of unwanted packets
    
    [ Upstream commit 044011fdf162c5dd61c02841930c8f438a9adadb ]
    
    The test verifies that packets are correctly flooded by the bridge and
    the VXLAN device by matching on the encapsulated packets at the other
    end. However, if packets other than those generated by the test also
    ingress the bridge (e.g., MLD packets), they will be flooded as well and
    interfere with the expected count.
    
    Make the test more robust by making sure that only the packets generated
    by the test can ingress the bridge. Drop all the rest using tc filters
    on the egress of 'br0' and 'h1'.
    
    In the software data path, the problem can be solved by matching on the
    inner destination MAC or dropping unwanted packets at the egress of the
    VXLAN device, but this is not currently supported by mlxsw.
    
    Fixes: 94d302deae25 ("selftests: mlxsw: Add a test for VxLAN flooding")
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Amit Cohen <amcohen@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b9a418d3850dd7d87a9168da973e8843a219476
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Mon Apr 11 15:06:34 2022 -0700

    dmaengine: idxd: skip clearing device context when device is read-only
    
    [ Upstream commit 1cd8e751d96c43ece3f6842ac2244a37d9332c3a ]
    
    If the device shows up as read-only configuration, skip the clearing of the
    state as the context must be preserved for device re-enable after being
    disabled.
    
    Fixes: 0dcfe41e9a4c ("dmanegine: idxd: cleanup all device related bits after disabling device")
    Reported-by: Tony Zhu <tony.zhu@intel.com>
    Tested-by: Tony Zhu <tony.zhu@intel.com>
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/164971479479.2200566.13980022473526292759.stgit@djiang5-desk3.ch.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 49047fa486b3b226d75fda42321b8dc873f41fc4
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Mon Apr 11 15:08:01 2022 -0700

    dmaengine: idxd: add RO check for wq max_transfer_size write
    
    [ Upstream commit 505a2d1032ae656b0a8c736be110255503941cde ]
    
    Block wq_max_transfer_size_store() when the device is configured as
    read-only and not configurable.
    
    Fixes: d7aad5550eca ("dmaengine: idxd: add support for configurable max wq xfer size")
    Reported-by: Bernice Zhang <bernice.zhang@intel.com>
    Tested-by: Bernice Zhang <bernice.zhang@intel.com>
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/164971488154.2200913.10706665404118545941.stgit@djiang5-desk3.ch.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c30e099b978856620054918217b4ff339d85029
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Mon Apr 11 15:08:55 2022 -0700

    dmaengine: idxd: add RO check for wq max_batch_size write
    
    [ Upstream commit 66903461ffed0b66fc3e0200082d4e09365aacdc ]
    
    Block wq_max_batch_size_store() when the device is configured as read-only
    and not configurable.
    
    Fixes: e7184b159dd3 ("dmaengine: idxd: add support for configurable max wq batch size")
    Reported-by: Bernice Zhang <bernice.zhang@intel.com>
    Tested-by: Bernice Zhang <bernice.zhang@intel.com>
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/164971493551.2201159.1942042593642155209.stgit@djiang5-desk3.ch.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e83acf93919b93d11c5181b20be35713bfe2b84c
Author: Kevin Hao <haokexin@gmail.com>
Date:   Tue Apr 19 16:42:26 2022 +0800

    net: stmmac: Use readl_poll_timeout_atomic() in atomic state
    
    [ Upstream commit 234901de2bc6847eaa0aeb4aba62c31ffb8d3ad6 ]
    
    The init_systime() may be invoked in atomic state. We have observed the
    following call trace when running "phc_ctl /dev/ptp0 set" on a Intel
    Agilex board.
      BUG: sleeping function called from invalid context at drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c:74
      in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 381, name: phc_ctl
      preempt_count: 1, expected: 0
      RCU nest depth: 0, expected: 0
      Preemption disabled at:
      [<ffff80000892ef78>] stmmac_set_time+0x34/0x8c
      CPU: 2 PID: 381 Comm: phc_ctl Not tainted 5.18.0-rc2-next-20220414-yocto-standard+ #567
      Hardware name: SoCFPGA Agilex SoCDK (DT)
      Call trace:
       dump_backtrace.part.0+0xc4/0xd0
       show_stack+0x24/0x40
       dump_stack_lvl+0x7c/0xa0
       dump_stack+0x18/0x34
       __might_resched+0x154/0x1c0
       __might_sleep+0x58/0x90
       init_systime+0x78/0x120
       stmmac_set_time+0x64/0x8c
       ptp_clock_settime+0x60/0x9c
       pc_clock_settime+0x6c/0xc0
       __arm64_sys_clock_settime+0x88/0xf0
       invoke_syscall+0x5c/0x130
       el0_svc_common.constprop.0+0x4c/0x100
       do_el0_svc+0x7c/0xa0
       el0_svc+0x58/0xcc
       el0t_64_sync_handler+0xa4/0x130
       el0t_64_sync+0x18c/0x190
    
    So we should use readl_poll_timeout_atomic() here instead of
    readl_poll_timeout().
    
    Also adjust the delay time to 10us to fix a "__bad_udelay" build error
    reported by "kernel test robot <lkp@intel.com>". I have tested this on
    Intel Agilex and NXP S32G boards, there is no delay needed at all.
    So the 10us delay should be long enough for most cases.
    
    Fixes: ff8ed737860e ("net: stmmac: use readl_poll_timeout() function in init_systime()")
    Signed-off-by: Kevin Hao <haokexin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79957134ca1d82fad69dba79f56d36a78512ef12
Author: José Roberto de Souza <jose.souza@intel.com>
Date:   Thu Apr 14 08:11:17 2022 -0700

    drm/i915/display/psr: Unset enable_psr2_sel_fetch if other checks in intel_psr2_config_valid() fails
    
    [ Upstream commit bb02330408a7bde33b5f46aa14fd5d7bfe6093b7 ]
    
    If any of the PSR2 checks after intel_psr2_sel_fetch_config_valid()
    fails, enable_psr2_sel_fetch will be kept enabled causing problems
    in the functions that only checks for it and not for has_psr2.
    
    So here moving the check that do not depend on enable_psr2_sel_fetch
    and for the remaning ones jumping to a section that unset
    enable_psr2_sel_fetch in case of failure to support PSR2.
    
    Fixes: 6e43e276b8c9 ("drm/i915: Initial implementation of PSR2 selective fetch")
    Cc: Jouni Högander <jouni.hogander@intel.com>
    Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
    Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220414151118.21980-1-jose.souza@intel.com
    (cherry picked from commit 554ae8dce1268789e72767a67f0635cb743b3cea)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3552c37593a9fc1b5d5560636fc6bec4ba72a17
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Apr 15 11:14:42 2022 -0700

    netlink: reset network and mac headers in netlink_dump()
    
    [ Upstream commit 99c07327ae11e24886d552dddbe4537bfca2765d ]
    
    netlink_dump() is allocating an skb, reserves space in it
    but forgets to reset network header.
    
    This allows a BPF program, invoked later from sk_filter()
    to access uninitialized kernel memory from the reserved
    space.
    
    Theorically mac header reset could be omitted, because
    it is set to a special initial value.
    bpf_internal_load_pointer_neg_helper calls skb_mac_header()
    without checking skb_mac_header_was_set().
    Relying on skb->len not being too big seems fragile.
    We also could add a sanity check in bpf_internal_load_pointer_neg_helper()
    to avoid surprises in the future.
    
    syzbot report was:
    
    BUG: KMSAN: uninit-value in ___bpf_prog_run+0xa22b/0xb420 kernel/bpf/core.c:1637
     ___bpf_prog_run+0xa22b/0xb420 kernel/bpf/core.c:1637
     __bpf_prog_run32+0x121/0x180 kernel/bpf/core.c:1796
     bpf_dispatcher_nop_func include/linux/bpf.h:784 [inline]
     __bpf_prog_run include/linux/filter.h:626 [inline]
     bpf_prog_run include/linux/filter.h:633 [inline]
     __bpf_prog_run_save_cb+0x168/0x580 include/linux/filter.h:756
     bpf_prog_run_save_cb include/linux/filter.h:770 [inline]
     sk_filter_trim_cap+0x3bc/0x8c0 net/core/filter.c:150
     sk_filter include/linux/filter.h:905 [inline]
     netlink_dump+0xe0c/0x16c0 net/netlink/af_netlink.c:2276
     netlink_recvmsg+0x1129/0x1c80 net/netlink/af_netlink.c:2002
     sock_recvmsg_nosec net/socket.c:948 [inline]
     sock_recvmsg net/socket.c:966 [inline]
     sock_read_iter+0x5a9/0x630 net/socket.c:1039
     do_iter_readv_writev+0xa7f/0xc70
     do_iter_read+0x52c/0x14c0 fs/read_write.c:786
     vfs_readv fs/read_write.c:906 [inline]
     do_readv+0x432/0x800 fs/read_write.c:943
     __do_sys_readv fs/read_write.c:1034 [inline]
     __se_sys_readv fs/read_write.c:1031 [inline]
     __x64_sys_readv+0xe5/0x120 fs/read_write.c:1031
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Uninit was stored to memory at:
     ___bpf_prog_run+0x96c/0xb420 kernel/bpf/core.c:1558
     __bpf_prog_run32+0x121/0x180 kernel/bpf/core.c:1796
     bpf_dispatcher_nop_func include/linux/bpf.h:784 [inline]
     __bpf_prog_run include/linux/filter.h:626 [inline]
     bpf_prog_run include/linux/filter.h:633 [inline]
     __bpf_prog_run_save_cb+0x168/0x580 include/linux/filter.h:756
     bpf_prog_run_save_cb include/linux/filter.h:770 [inline]
     sk_filter_trim_cap+0x3bc/0x8c0 net/core/filter.c:150
     sk_filter include/linux/filter.h:905 [inline]
     netlink_dump+0xe0c/0x16c0 net/netlink/af_netlink.c:2276
     netlink_recvmsg+0x1129/0x1c80 net/netlink/af_netlink.c:2002
     sock_recvmsg_nosec net/socket.c:948 [inline]
     sock_recvmsg net/socket.c:966 [inline]
     sock_read_iter+0x5a9/0x630 net/socket.c:1039
     do_iter_readv_writev+0xa7f/0xc70
     do_iter_read+0x52c/0x14c0 fs/read_write.c:786
     vfs_readv fs/read_write.c:906 [inline]
     do_readv+0x432/0x800 fs/read_write.c:943
     __do_sys_readv fs/read_write.c:1034 [inline]
     __se_sys_readv fs/read_write.c:1031 [inline]
     __x64_sys_readv+0xe5/0x120 fs/read_write.c:1031
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Uninit was created at:
     slab_post_alloc_hook mm/slab.h:737 [inline]
     slab_alloc_node mm/slub.c:3244 [inline]
     __kmalloc_node_track_caller+0xde3/0x14f0 mm/slub.c:4972
     kmalloc_reserve net/core/skbuff.c:354 [inline]
     __alloc_skb+0x545/0xf90 net/core/skbuff.c:426
     alloc_skb include/linux/skbuff.h:1158 [inline]
     netlink_dump+0x30f/0x16c0 net/netlink/af_netlink.c:2242
     netlink_recvmsg+0x1129/0x1c80 net/netlink/af_netlink.c:2002
     sock_recvmsg_nosec net/socket.c:948 [inline]
     sock_recvmsg net/socket.c:966 [inline]
     sock_read_iter+0x5a9/0x630 net/socket.c:1039
     do_iter_readv_writev+0xa7f/0xc70
     do_iter_read+0x52c/0x14c0 fs/read_write.c:786
     vfs_readv fs/read_write.c:906 [inline]
     do_readv+0x432/0x800 fs/read_write.c:943
     __do_sys_readv fs/read_write.c:1034 [inline]
     __se_sys_readv fs/read_write.c:1031 [inline]
     __x64_sys_readv+0xe5/0x120 fs/read_write.c:1031
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    CPU: 0 PID: 3470 Comm: syz-executor751 Not tainted 5.17.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: db65a3aaf29e ("netlink: Trim skb to alloc size to avoid MSG_TRUNC")
    Fixes: 9063e21fb026 ("netlink: autosize skb lengthes")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://lore.kernel.org/r/20220415181442.551228-1-eric.dumazet@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 93581ae1f9803235393c98ed3dd7014fad2fa2d0
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Apr 15 18:19:50 2022 +0300

    net: mscc: ocelot: fix broken IP multicast flooding
    
    [ Upstream commit 4cf35a2b627a020fe1a6b6fc7a6a12394644e474 ]
    
    When the user runs:
    bridge link set dev $br_port mcast_flood on
    
    this command should affect not only L2 multicast, but also IPv4 and IPv6
    multicast.
    
    In the Ocelot switch, unknown multicast gets flooded according to
    different PGIDs according to its type, and PGID_MC only handles L2
    multicast. Therefore, by leaving PGID_MCIPV4 and PGID_MCIPV6 at their
    default value of 0, unknown IP multicast traffic is never flooded.
    
    Fixes: 421741ea5672 ("net: mscc: ocelot: offload bridge port flags to device")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://lore.kernel.org/r/20220415151950.219660-1-vladimir.oltean@nxp.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a5ca57d5acd2271f435bbbb9223566cec2ff45b
Author: Kurt Kanzenbach <kurt@linutronix.de>
Date:   Fri Apr 15 12:33:20 2022 +0200

    net: dsa: hellcreek: Calculate checksums in tagger
    
    [ Upstream commit 0763120b090418a5257402754e22a34227ae5f12 ]
    
    In case the checksum calculation is offloaded to the DSA master network
    interface, it will include the switch trailing tag. As soon as the switch strips
    that tag on egress, the calculated checksum is wrong.
    
    Therefore, add the checksum calculation to the tagger (if required) before
    adding the switch tag. This way, the hellcreek code works with all DSA master
    interfaces regardless of their declared feature set.
    
    Fixes: 01ef09caad66 ("net: dsa: Add tag handling for Hirschmann Hellcreek switches")
    Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20220415103320.90657-1-kurt@linutronix.de
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 40ebaf7365b06876db9536978c96e824b932da22
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Tue Apr 5 19:51:12 2022 +0200

    can: isotp: stop timeout monitoring when no first frame was sent
    
    [ Upstream commit d73497081710c876c3c61444445512989e102152 ]
    
    The first attempt to fix a the 'impossible' WARN_ON_ONCE(1) in
    isotp_tx_timer_handler() focussed on the identical CAN IDs created by
    the syzbot reproducer and lead to upstream fix/commit 3ea566422cbd
    ("can: isotp: sanitize CAN ID checks in isotp_bind()"). But this did
    not catch the root cause of the wrong tx.state in the tx_timer handler.
    
    In the isotp 'first frame' case a timeout monitoring needs to be started
    before the 'first frame' is send. But when this sending failed the timeout
    monitoring for this specific frame has to be disabled too.
    
    Otherwise the tx_timer is fired with the 'warn me' tx.state of ISOTP_IDLE.
    
    Fixes: e057dd3fc20f ("can: add ISO 15765-2:2016 transport protocol")
    Link: https://lore.kernel.org/all/20220405175112.2682-1-socketcan@hartkopp.net
    Reported-by: syzbot+2339c27f5c66c652843e@syzkaller.appspotmail.com
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 652a5405396dd37ea4af66a711c97e66f8192ae0
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 13 11:13:33 2022 -0700

    ipv6: make ip6_rt_gc_expire an atomic_t
    
    [ Upstream commit 9cb7c013420f98fa6fd12fc6a5dc055170c108db ]
    
    Reads and Writes to ip6_rt_gc_expire always have been racy,
    as syzbot reported lately [1]
    
    There is a possible risk of under-flow, leading
    to unexpected high value passed to fib6_run_gc(),
    although I have not observed this in the field.
    
    Hosts hitting ip6_dst_gc() very hard are under pretty bad
    state anyway.
    
    [1]
    BUG: KCSAN: data-race in ip6_dst_gc / ip6_dst_gc
    
    read-write to 0xffff888102110744 of 4 bytes by task 13165 on cpu 1:
     ip6_dst_gc+0x1f3/0x220 net/ipv6/route.c:3311
     dst_alloc+0x9b/0x160 net/core/dst.c:86
     ip6_dst_alloc net/ipv6/route.c:344 [inline]
     icmp6_dst_alloc+0xb2/0x360 net/ipv6/route.c:3261
     mld_sendpack+0x2b9/0x580 net/ipv6/mcast.c:1807
     mld_send_cr net/ipv6/mcast.c:2119 [inline]
     mld_ifc_work+0x576/0x800 net/ipv6/mcast.c:2651
     process_one_work+0x3d3/0x720 kernel/workqueue.c:2289
     worker_thread+0x618/0xa70 kernel/workqueue.c:2436
     kthread+0x1a9/0x1e0 kernel/kthread.c:376
     ret_from_fork+0x1f/0x30
    
    read-write to 0xffff888102110744 of 4 bytes by task 11607 on cpu 0:
     ip6_dst_gc+0x1f3/0x220 net/ipv6/route.c:3311
     dst_alloc+0x9b/0x160 net/core/dst.c:86
     ip6_dst_alloc net/ipv6/route.c:344 [inline]
     icmp6_dst_alloc+0xb2/0x360 net/ipv6/route.c:3261
     mld_sendpack+0x2b9/0x580 net/ipv6/mcast.c:1807
     mld_send_cr net/ipv6/mcast.c:2119 [inline]
     mld_ifc_work+0x576/0x800 net/ipv6/mcast.c:2651
     process_one_work+0x3d3/0x720 kernel/workqueue.c:2289
     worker_thread+0x618/0xa70 kernel/workqueue.c:2436
     kthread+0x1a9/0x1e0 kernel/kthread.c:376
     ret_from_fork+0x1f/0x30
    
    value changed: 0x00000bb3 -> 0x00000ba9
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 11607 Comm: kworker/0:21 Not tainted 5.18.0-rc1-syzkaller-00037-g42e7a03d3bad-dirty #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: mld mld_ifc_work
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20220413181333.649424-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d23fe66eb7b0d7c982a54f2d64c6bfc92efc6e42
Author: David Ahern <dsahern@kernel.org>
Date:   Wed Apr 13 11:43:19 2022 -0600

    l3mdev: l3mdev_master_upper_ifindex_by_index_rcu should be using netdev_master_upper_dev_get_rcu
    
    [ Upstream commit 83daab06252ee5d0e1f4373ff28b79304945fc19 ]
    
    Next patch uses l3mdev_master_upper_ifindex_by_index_rcu which throws
    a splat with debug kernels:
    
    [13783.087570] ------------[ cut here ]------------
    [13783.093974] RTNL: assertion failed at net/core/dev.c (6702)
    [13783.100761] WARNING: CPU: 3 PID: 51132 at net/core/dev.c:6702 netdev_master_upper_dev_get+0x16a/0x1a0
    
    [13783.184226] CPU: 3 PID: 51132 Comm: kworker/3:3 Not tainted 5.17.0-custom-100090-g6f963aafb1cc #682
    [13783.194788] Hardware name: Mellanox Technologies Ltd. MSN2010/SA002610, BIOS 5.6.5 08/24/2017
    [13783.204755] Workqueue: mld mld_ifc_work [ipv6]
    [13783.210338] RIP: 0010:netdev_master_upper_dev_get+0x16a/0x1a0
    [13783.217209] Code: 0f 85 e3 fe ff ff e8 65 ac ec fe ba 2e 1a 00 00 48 c7 c6 60 6f 38 83 48 c7 c7 c0 70 38 83 c6 05 5e b5 d7 01 01 e8 c6 29 52 00 <0f> 0b e9 b8 fe ff ff e8 5a 6c 35 ff e9 1c ff ff ff 48 89 ef e8 7d
    [13783.238659] RSP: 0018:ffffc9000b37f5a8 EFLAGS: 00010286
    [13783.244995] RAX: 0000000000000000 RBX: ffff88812ee5c000 RCX: 0000000000000000
    [13783.253379] RDX: ffff88811ce09d40 RSI: ffffffff812d0fcd RDI: fffff5200166fea7
    [13783.261769] RBP: 0000000000000000 R08: 0000000000000001 R09: ffff8882375f4287
    [13783.270138] R10: ffffed1046ebe850 R11: 0000000000000001 R12: dffffc0000000000
    [13783.278510] R13: 0000000000000275 R14: ffffc9000b37f688 R15: ffff8881273b4af8
    [13783.286870] FS:  0000000000000000(0000) GS:ffff888237400000(0000) knlGS:0000000000000000
    [13783.296352] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [13783.303177] CR2: 00007ff25fc9b2e8 CR3: 0000000174d23000 CR4: 00000000001006e0
    [13783.311546] Call Trace:
    [13783.314660]  <TASK>
    [13783.317553]  l3mdev_master_upper_ifindex_by_index_rcu+0x43/0xe0
    ...
    
    Change l3mdev_master_upper_ifindex_by_index_rcu to use
    netdev_master_upper_dev_get_rcu.
    
    Fixes: 6a6d6681ac1a ("l3mdev: add function to retreive upper master")
    Signed-off-by: Ido Schimmel <idosch@idosch.org>
    Signed-off-by: David Ahern <dsahern@kernel.org>
    Cc: Alexis Bauvin <abauvin@scaleway.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58bdbd121a3474b741519f6de6e2a916f391b304
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 13 10:35:42 2022 -0700

    net/sched: cls_u32: fix possible leak in u32_init_knode()
    
    [ Upstream commit ec5b0f605b105457f257f2870acad4a5d463984b ]
    
    While investigating a related syzbot report,
    I found that whenever call to tcf_exts_init()
    from u32_init_knode() is failing, we end up
    with an elevated refcount on ht->refcnt
    
    To avoid that, only increase the refcount after
    all possible errors have been evaluated.
    
    Fixes: b9a24bb76bf6 ("net_sched: properly handle failure case of tcf_exts_init()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1b4fb109cc53302ed614bbd31982ee22c605fb40
Author: Stephen Hemminger <stephen@networkplumber.org>
Date:   Thu Apr 14 09:03:12 2022 -0700

    net: restore alpha order to Ethernet devices in config
    
    [ Upstream commit da367ac74aecb59b62a9538009d4aee8ce4bdfb3 ]
    
    The displayed list of Ethernet devices in make menuconfig
    has gotten out of order. This is mostly due to changes in vendor
    names etc, but also because of new Microsoft entry in wrong place.
    
    This restores so that the display is in order even if the names
    of the sub directories are not.
    
    Fixes: ca9c54d2d6a5 ("net: mana: Add a driver for Microsoft Azure Network Adapter (MANA)")
    Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d5049ef1f6718fe005416b954be94e45e102b2a0
Author: Peilin Ye <peilin.ye@bytedance.com>
Date:   Thu Apr 14 13:35:40 2022 -0700

    ip6_gre: Fix skb_under_panic in __gre6_xmit()
    
    [ Upstream commit ab198e1d0dd8dc4bc7575fb50758e2cbd51e14e1 ]
    
    Feng reported an skb_under_panic BUG triggered by running
    test_ip6gretap() in tools/testing/selftests/bpf/test_tunnel.sh:
    
    [   82.492551] skbuff: skb_under_panic: text:ffffffffb268bb8e len:403 put:12 head:ffff9997c5480000 data:ffff9997c547fff8 tail:0x18b end:0x2c0 dev:ip6gretap11
    <...>
    [   82.607380] Call Trace:
    [   82.609389]  <TASK>
    [   82.611136]  skb_push.cold.109+0x10/0x10
    [   82.614289]  __gre6_xmit+0x41e/0x590
    [   82.617169]  ip6gre_tunnel_xmit+0x344/0x3f0
    [   82.620526]  dev_hard_start_xmit+0xf1/0x330
    [   82.623882]  sch_direct_xmit+0xe4/0x250
    [   82.626961]  __dev_queue_xmit+0x720/0xfe0
    <...>
    [   82.633431]  packet_sendmsg+0x96a/0x1cb0
    [   82.636568]  sock_sendmsg+0x30/0x40
    <...>
    
    The following sequence of events caused the BUG:
    
    1. During ip6gretap device initialization, tunnel->tun_hlen (e.g. 4) is
       calculated based on old flags (see ip6gre_calc_hlen());
    2. packet_snd() reserves header room for skb A, assuming
       tunnel->tun_hlen is 4;
    3. Later (in clsact Qdisc), the eBPF program sets a new tunnel key for
       skb A using bpf_skb_set_tunnel_key() (see _ip6gretap_set_tunnel());
    4. __gre6_xmit() detects the new tunnel key, and recalculates
       "tun_hlen" (e.g. 12) based on new flags (e.g. TUNNEL_KEY and
       TUNNEL_SEQ);
    5. gre_build_header() calls skb_push() with insufficient reserved header
       room, triggering the BUG.
    
    As sugguested by Cong, fix it by moving the call to skb_cow_head() after
    the recalculation of tun_hlen.
    
    Reproducer:
    
      OBJ=$LINUX/tools/testing/selftests/bpf/test_tunnel_kern.o
    
      ip netns add at_ns0
      ip link add veth0 type veth peer name veth1
      ip link set veth0 netns at_ns0
      ip netns exec at_ns0 ip addr add 172.16.1.100/24 dev veth0
      ip netns exec at_ns0 ip link set dev veth0 up
      ip link set dev veth1 up mtu 1500
      ip addr add dev veth1 172.16.1.200/24
    
      ip netns exec at_ns0 ip addr add ::11/96 dev veth0
      ip netns exec at_ns0 ip link set dev veth0 up
      ip addr add dev veth1 ::22/96
      ip link set dev veth1 up
    
      ip netns exec at_ns0 \
            ip link add dev ip6gretap00 type ip6gretap seq flowlabel 0xbcdef key 2 \
            local ::11 remote ::22
    
      ip netns exec at_ns0 ip addr add dev ip6gretap00 10.1.1.100/24
      ip netns exec at_ns0 ip addr add dev ip6gretap00 fc80::100/96
      ip netns exec at_ns0 ip link set dev ip6gretap00 up
    
      ip link add dev ip6gretap11 type ip6gretap external
      ip addr add dev ip6gretap11 10.1.1.200/24
      ip addr add dev ip6gretap11 fc80::200/24
      ip link set dev ip6gretap11 up
    
      tc qdisc add dev ip6gretap11 clsact
      tc filter add dev ip6gretap11 egress bpf da obj $OBJ sec ip6gretap_set_tunnel
      tc filter add dev ip6gretap11 ingress bpf da obj $OBJ sec ip6gretap_get_tunnel
    
      ping6 -c 3 -w 10 -q ::11
    
    Fixes: 6712abc168eb ("ip6_gre: add ip6 gre and gretap collect_md mode")
    Reported-by: Feng Zhou <zhoufeng.zf@bytedance.com>
    Co-developed-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Peilin Ye <peilin.ye@bytedance.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3cc2f6b71eb6c9134d0c0714f2beb88997bd0bee
Author: Peilin Ye <peilin.ye@bytedance.com>
Date:   Thu Apr 14 13:34:26 2022 -0700

    ip6_gre: Avoid updating tunnel->tun_hlen in __gre6_xmit()
    
    [ Upstream commit f40c064e933d7787ca7411b699504d7a2664c1f5 ]
    
    Do not update tunnel->tun_hlen in data plane code.  Use a local variable
    instead, just like "tunnel_hlen" in net/ipv4/ip_gre.c:gre_fb_xmit().
    
    Co-developed-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Peilin Ye <peilin.ye@bytedance.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab26f1136757dae9e23df197d4ab578a7f758c1e
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Thu Apr 14 16:49:25 2022 +0800

    net/packet: fix packet_sock xmit return value checking
    
    [ Upstream commit 29e8e659f984be00d75ec5fef4e37c88def72712 ]
    
    packet_sock xmit could be dev_queue_xmit, which also returns negative
    errors. So only checking positive errors is not enough, or userspace
    sendmsg may return success while packet is not send out.
    
    Move the net_xmit_errno() assignment in the braces as checkpatch.pl said
    do not use assignment in if condition.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Flavio Leitner <fbl@redhat.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b355ca6a915fe4d5e42cffc3a9a075100a136eb4
Author: Tony Lu <tonylu@linux.alibaba.com>
Date:   Thu Apr 14 15:51:03 2022 +0800

    net/smc: Fix sock leak when release after smc_shutdown()
    
    [ Upstream commit 1a74e99323746353bba11562a2f2d0aa8102f402 ]
    
    Since commit e5d5aadcf3cd ("net/smc: fix sk_refcnt underflow on linkdown
    and fallback"), for a fallback connection, __smc_release() does not call
    sock_put() if its state is already SMC_CLOSED.
    
    When calling smc_shutdown() after falling back, its state is set to
    SMC_CLOSED but does not call sock_put(), so this patch calls it.
    
    Reported-and-tested-by: syzbot+6e29a053eb165bd50de5@syzkaller.appspotmail.com
    Fixes: e5d5aadcf3cd ("net/smc: fix sk_refcnt underflow on linkdown and fallback")
    Signed-off-by: Tony Lu <tonylu@linux.alibaba.com>
    Acked-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8fe1bf23c96bd981e67054b281221f9316103e11
Author: David Howells <dhowells@redhat.com>
Date:   Wed Apr 13 11:16:25 2022 +0100

    rxrpc: Restore removed timer deletion
    
    [ Upstream commit ee3b0826b4764f6c13ad6db67495c5a1c38e9025 ]
    
    A recent patch[1] from Eric Dumazet flipped the order in which the
    keepalive timer and the keepalive worker were cancelled in order to fix a
    syzbot reported issue[2].  Unfortunately, this enables the mirror image bug
    whereby the timer races with rxrpc_exit_net(), restarting the worker after
    it has been cancelled:
    
            CPU 1           CPU 2
            =============== =====================
                            if (rxnet->live)
                            <INTERRUPT>
            rxnet->live = false;
            cancel_work_sync(&rxnet->peer_keepalive_work);
                            rxrpc_queue_work(&rxnet->peer_keepalive_work);
            del_timer_sync(&rxnet->peer_keepalive_timer);
    
    Fix this by restoring the removed del_timer_sync() so that we try to remove
    the timer twice.  If the timer runs again, it should see ->live == false
    and not restart the worker.
    
    Fixes: 1946014ca3b1 ("rxrpc: fix a race in rxrpc_exit_net()")
    Signed-off-by: David Howells <dhowells@redhat.com>
    cc: Eric Dumazet <edumazet@google.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Link: https://lore.kernel.org/r/20220404183439.3537837-1-eric.dumazet@gmail.com/ [1]
    Link: https://syzkaller.appspot.com/bug?extid=724378c4bb58f703b09a [2]
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09da8cf94588ea978c2b2687476e3b4339492568
Author: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Date:   Thu Apr 14 18:05:16 2022 +0300

    ALSA: hda/hdmi: fix warning about PCM count when used with SOF
    
    [ Upstream commit c74193787b2f683751a67603fb5f15c7584f355f ]
    
    With commit 13046370c4d1 ("ALSA: hda/hdmi: let new platforms assign the
    pcm slot dynamically"), old behaviour to consider the HDA pin number,
    when choosing PCM to assign, was dropped.
    
    Build on this change and limit the number of PCMs created to number of
    converters (= maximum number of concurrent display/receivers) when
    "mst_no_extra_pcms" and "dyn_pcm_no_legacy" quirks are both set.
    
    Fix the check in hdmi_find_pcm_slot() to ensure only spec->pcm_used
    entries are considered in the search. Elsewhere in the driver
    spec->pcm_used is already checked properly.
    
    Doing this avoids following warning at SOF driver probe for multiple
    machine drivers:
    
    [  112.425297] sof_sdw sof_sdw: hda_dsp_hdmi_build_controls: no
    PCM in topology for HDMI converter 4
    [  112.425298] sof_sdw sof_sdw: hda_dsp_hdmi_build_controls: no
    PCM in topology for HDMI converter 5
    [  112.425299] sof_sdw sof_sdw: hda_dsp_hdmi_build_controls: no
    PCM in topology for HDMI converter 6
    
    Fixes: 13046370c4d1 ("ALSA: hda/hdmi: let new platforms assign the pcm slot dynamically")
    BugLink: https://github.com/thesofproject/linux/issues/2573
    Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
    Link: https://lore.kernel.org/r/20220414150516.3638283-1-kai.vehmanen@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7c71b3e47643a9d61f31fa785e2384c651925a2
Author: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Date:   Tue Apr 12 18:58:15 2022 -0700

    igc: Fix suspending when PTM is active
    
    [ Upstream commit 822f52e7efdc88fccffb9fbf6250a4b7666a0b0f ]
    
    Some mainboard/CPU combinations, in particular, Alder Lake-S with a
    W680 mainboard, have shown problems (system hangs usually, no kernel
    logs) with suspend/resume when PCIe PTM is enabled and active. In some
    cases, it could be reproduced when removing the igc module.
    
    The best we can do is to stop PTM dialogs from the downstream/device
    side before the interface is brought down. PCIe PTM will be re-enabled
    when the interface is being brought up.
    
    Fixes: a90ec8483732 ("igc: Add support for PTP getcrosststamp()")
    Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Acked-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da323d0d6aaace047f005504273d928078bf3f83
Author: Sasha Neftin <sasha.neftin@intel.com>
Date:   Wed Mar 9 08:19:19 2022 +0200

    igc: Fix BUG: scheduling while atomic
    
    [ Upstream commit c80a29f0fe9b6f5457e0788e27d1110577eba99b ]
    
    Replace usleep_range() method with udelay() method to allow atomic contexts
    in low-level MDIO access functions.
    
    The following issue can be seen by doing the following:
    $ modprobe -r bonding
    $ modprobe -v bonding max_bonds=1 mode=1 miimon=100 use_carrier=0
    $ ip link set bond0 up
    $ ifenslave bond0 eth0 eth1
    
    [  982.357308] BUG: scheduling while atomic: kworker/u64:0/9/0x00000002
    [  982.364431] INFO: lockdep is turned off.
    [  982.368824] Modules linked in: bonding sctp ip6_udp_tunnel udp_tunnel mlx4_ib ib_uverbs ib_core mlx4_en mlx4_core nfp tls sunrpc intel_rapl_msr iTCO_wdt iTCO_vendor_support mxm_wmi dcdbas intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel rapl intel_cstate intel_uncore pcspkr lpc_ich mei_me ipmi_ssif mei ipmi_si ipmi_devintf ipmi_msghandler wmi acpi_power_meter xfs libcrc32c sr_mod cdrom sd_mod t10_pi sg mgag200 drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm ahci libahci crc32c_intel libata i2c_algo_bit tg3 megaraid_sas igc dm_mirror dm_region_hash dm_log dm_mod [last unloaded: bonding]
    [  982.437941] CPU: 25 PID: 9 Comm: kworker/u64:0 Kdump: loaded Tainted: G        W        --------- -  - 4.18.0-348.el8.x86_64+debug #1
    [  982.451333] Hardware name: Dell Inc. PowerEdge R730/0H21J3, BIOS 2.7.0 12/005/2017
    [  982.459791] Workqueue: bond0 bond_mii_monitor [bonding]
    [  982.465622] Call Trace:
    [  982.468355]  dump_stack+0x8e/0xd0
    [  982.472056]  __schedule_bug.cold.60+0x3a/0x60
    [  982.476919]  __schedule+0x147b/0x1bc0
    [  982.481007]  ? firmware_map_remove+0x16b/0x16b
    [  982.485967]  ? hrtimer_fixup_init+0x40/0x40
    [  982.490625]  schedule+0xd9/0x250
    [  982.494227]  schedule_hrtimeout_range_clock+0x10d/0x2c0
    [  982.500058]  ? hrtimer_nanosleep_restart+0x130/0x130
    [  982.505598]  ? hrtimer_init_sleeper_on_stack+0x90/0x90
    [  982.511332]  ? usleep_range+0x88/0x130
    [  982.515514]  ? recalibrate_cpu_khz+0x10/0x10
    [  982.520279]  ? ktime_get+0xab/0x1c0
    [  982.524175]  ? usleep_range+0x88/0x130
    [  982.528355]  usleep_range+0xdd/0x130
    [  982.532344]  ? console_conditional_schedule+0x30/0x30
    [  982.537987]  ? igc_put_hw_semaphore+0x17/0x60 [igc]
    [  982.543432]  igc_read_phy_reg_gpy+0x111/0x2b0 [igc]
    [  982.548887]  igc_phy_has_link+0xfa/0x260 [igc]
    [  982.553847]  ? igc_get_phy_id+0x210/0x210 [igc]
    [  982.558894]  ? lock_acquire+0x34d/0x890
    [  982.563187]  ? lock_downgrade+0x710/0x710
    [  982.567659]  ? rcu_read_unlock+0x50/0x50
    [  982.572039]  igc_check_for_copper_link+0x106/0x210 [igc]
    [  982.577970]  ? igc_config_fc_after_link_up+0x840/0x840 [igc]
    [  982.584286]  ? rcu_read_unlock+0x50/0x50
    [  982.588661]  ? lock_release+0x591/0xb80
    [  982.592939]  ? lock_release+0x591/0xb80
    [  982.597220]  igc_has_link+0x113/0x330 [igc]
    [  982.601887]  ? lock_downgrade+0x710/0x710
    [  982.606362]  igc_ethtool_get_link+0x6d/0x90 [igc]
    [  982.611614]  bond_check_dev_link+0x131/0x2c0 [bonding]
    [  982.617350]  ? bond_time_in_interval+0xd0/0xd0 [bonding]
    [  982.623277]  ? rcu_read_lock_held+0x62/0xc0
    [  982.627944]  ? rcu_read_lock_sched_held+0xe0/0xe0
    [  982.633198]  bond_mii_monitor+0x314/0x2500 [bonding]
    [  982.638738]  ? lock_contended+0x880/0x880
    [  982.643214]  ? bond_miimon_link_change+0xa0/0xa0 [bonding]
    [  982.649336]  ? lock_acquire+0x34d/0x890
    [  982.653615]  ? lock_downgrade+0x710/0x710
    [  982.658089]  ? debug_object_deactivate+0x221/0x340
    [  982.663436]  ? rcu_read_unlock+0x50/0x50
    [  982.667811]  ? debug_print_object+0x2b0/0x2b0
    [  982.672672]  ? __switch_to_asm+0x41/0x70
    [  982.677049]  ? __switch_to_asm+0x35/0x70
    [  982.681426]  ? _raw_spin_unlock_irq+0x24/0x40
    [  982.686288]  ? trace_hardirqs_on+0x20/0x195
    [  982.690956]  ? _raw_spin_unlock_irq+0x24/0x40
    [  982.695818]  process_one_work+0x8f0/0x1770
    [  982.700390]  ? pwq_dec_nr_in_flight+0x320/0x320
    [  982.705443]  ? debug_show_held_locks+0x50/0x50
    [  982.710403]  worker_thread+0x87/0xb40
    [  982.714489]  ? process_one_work+0x1770/0x1770
    [  982.719349]  kthread+0x344/0x410
    [  982.722950]  ? kthread_insert_work_sanity_check+0xd0/0xd0
    [  982.728975]  ret_from_fork+0x3a/0x50
    
    Fixes: 5586838fe9ce ("igc: Add code for PHY support")
    Reported-by: Corinna Vinschen <vinschen@redhat.com>
    Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
    Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Corinna Vinschen <vinschen@redhat.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3ce7d3a17424038c0f597581d6166e1826a5234
Author: Sasha Neftin <sasha.neftin@intel.com>
Date:   Tue Mar 1 15:32:10 2022 +0200

    igc: Fix infinite loop in release_swfw_sync
    
    [ Upstream commit 907862e9aef75bf89e2b265efcc58870be06081e ]
    
    An infinite loop may occur if we fail to acquire the HW semaphore,
    which is needed for resource release.
    This will typically happen if the hardware is surprise-removed.
    At this stage there is nothing to do, except log an error and quit.
    
    Fixes: c0071c7aa5fe ("igc: Add HW initialization code")
    Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
    Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8920a03a3a152d00e5447669371f25368d3e35b5
Author: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Date:   Wed Apr 6 15:28:32 2022 +0200

    spi: cadence-quadspi: fix incorrect supports_op() return value
    
    [ Upstream commit f1d388f216aeb41a5df518815ae559d14a6d438e ]
    
    Since the conversion to spi-mem, the driver advertised support for
    various operations that cqspi_set_protocol() was never expected to handle
    correctly - in particuar all non-DTR operations with command or address
    buswidth > 1. For DTR, all operations except for 8-8-8 would fail, as
    cqspi_set_protocol() returns -EINVAL.
    
    In non-DTR mode, this resulted in data corruption for SPI-NOR flashes that
    support such operations. As a minimal fix that can be backported to stable
    kernels, simply disallow the unsupported operations again to avoid this
    issue.
    
    Fixes: a314f6367787 ("mtd: spi-nor: Convert cadence-quadspi to use spi-mem framework")
    Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
    Link: https://lore.kernel.org/r/20220406132832.199777-1-matthias.schiffer@ew.tq-group.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a583f2f3c8788bffd7fd7baeb76bd6d80543d7ea
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Wed Apr 13 10:10:50 2022 +0200

    esp: limit skb_page_frag_refill use to a single page
    
    [ Upstream commit 5bd8baab087dff657e05387aee802e70304cc813 ]
    
    Commit ebe48d368e97 ("esp: Fix possible buffer overflow in ESP
    transformation") tried to fix skb_page_frag_refill usage in ESP by
    capping allocsize to 32k, but that doesn't completely solve the issue,
    as skb_page_frag_refill may return a single page. If that happens, we
    will write out of bounds, despite the check introduced in the previous
    patch.
    
    This patch forces COW in cases where we would end up calling
    skb_page_frag_refill with a size larger than a page (first in
    esp_output_head with tailen, then in esp_output_tail with
    skb->data_len).
    
    Fixes: cac2661c53f3 ("esp4: Avoid skb_cow_data whenever possible")
    Fixes: 03e2a30f6a27 ("esp6: Avoid skb_cow_data whenever possible")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 76900a136b1a603add1f39fe4cf0df5cbe9a10d9
Author: Allen-KH Cheng <allen-kh.cheng@mediatek.com>
Date:   Tue Apr 12 19:57:43 2022 +0800

    spi: spi-mtk-nor: initialize spi controller after resume
    
    [ Upstream commit 317c2045618cc1f8d38beb8c93a7bdb6ad8638c6 ]
    
    After system resumes, the registers of nor controller are
    initialized with default values. The nor controller will
    not function properly.
    
    To handle both issues above, we add mtk_nor_init() in
    mtk_nor_resume after pm_runtime_force_resume().
    
    Fixes: 3bfd9103c7af ("spi: spi-mtk-nor: Add power management support")
    
    Signed-off-by: Allen-KH Cheng <allen-kh.cheng@mediatek.com>
    Reviewed-by: Rex-BC Chen <rex-bc.chen@mediatek.com>
    Link: https://lore.kernel.org/r/20220412115743.22641-1-allen-kh.cheng@mediatek.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 84e77e72367f6f2d293b80b18da84d587e86382f
Author: Herve Codina <herve.codina@bootlin.com>
Date:   Fri Feb 25 13:02:52 2022 +0100

    dmaengine: dw-edma: Fix unaligned 64bit access
    
    [ Upstream commit 8fc5133d6d4da65cad6b73152fc714ad3d7f91c1 ]
    
    On some arch (ie aarch64 iMX8MM) unaligned PCIe accesses are
    not allowed and lead to a kernel Oops.
      [ 1911.668835] Unable to handle kernel paging request at virtual address ffff80001bc00a8c
      [ 1911.668841] Mem abort info:
      [ 1911.668844]   ESR = 0x96000061
      [ 1911.668847]   EC = 0x25: DABT (current EL), IL = 32 bits
      [ 1911.668850]   SET = 0, FnV = 0
      [ 1911.668852]   EA = 0, S1PTW = 0
      [ 1911.668853] Data abort info:
      [ 1911.668855]   ISV = 0, ISS = 0x00000061
      [ 1911.668857]   CM = 0, WnR = 1
      [ 1911.668861] swapper pgtable: 4k pages, 48-bit VAs, pgdp=0000000040ff4000
      [ 1911.668864] [ffff80001bc00a8c] pgd=00000000bffff003, pud=00000000bfffe003, pmd=0068000018400705
      [ 1911.668872] Internal error: Oops: 96000061 [#1] PREEMPT SMP
      ...
    
    The llp register present in the channel group registers is not
    aligned on 64bit.
    
    Fix unaligned 64bit access using two 32bit accesses
    
    Fixes: 04e0a39fc10f ("dmaengine: dw-edma: Add writeq() and readq() for 64 bits architectures")
    Signed-off-by: Herve Codina <herve.codina@bootlin.com>
    Link: https://lore.kernel.org/r/20220225120252.309404-1-herve.codina@bootlin.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d18fb19c1c8e454c08173c1f9240c6541bd523c1
Author: zhangqilong <zhangqilong3@huawei.com>
Date:   Sat Mar 19 10:21:42 2022 +0800

    dmaengine: mediatek:Fix PM usage reference leak of mtk_uart_apdma_alloc_chan_resources
    
    [ Upstream commit 545b2baac89b859180e51215468c05d85ea8465a ]
    
    pm_runtime_get_sync will increment pm usage counter even it failed.
    Forgetting to putting operation will result in reference leak here.
    We fix it:
    1) Replacing it with pm_runtime_resume_and_get to keep usage counter
       balanced.
    2) Add putting operation before returning error.
    
    Fixes:9135408c3ace4 ("dmaengine: mediatek: Add MediaTek UART APDMA support")
    Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
    Link: https://lore.kernel.org/r/20220319022142.142709-1-zhangqilong3@huawei.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8932d9ee4b9f4d313c760bfe17601af482836c7e
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Tue Mar 8 06:49:51 2022 +0000

    dmaengine: imx-sdma: Fix error checking in sdma_event_remap
    
    [ Upstream commit 7104b9cb35a33ad803a1adbbfa50569b008faf15 ]
    
    of_parse_phandle() returns NULL on errors, rather than error
    pointers. Using NULL check on grp_np to fix this.
    
    Fixes: d078cd1b4185 ("dmaengine: imx-sdma: Add imx6sx platform support")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220308064952.15743-1-linmq006@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a8be4586352bdc8292c9650565f5110cbc907e7d
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Tue Apr 5 14:53:39 2022 -0700

    dmaengine: idxd: fix device cleanup on disable
    
    [ Upstream commit 12e45e89556d7a532120f976081e9e7582addd2b ]
    
    There are certain parts of WQ that needs to be cleaned up even after WQ is
    disabled during the device disable. Those are the unchangeable parts for a
    WQ when the device is still enabled. Move the cleanup outside of WQ state
    check. Remove idxd_wq_disable_cleanup() inside idxd_wq_device_reset_cleanup()
    since only the unchangeable parts need to be cleared.
    
    Fixes: 0f225705cf65 ("dmaengine: idxd: fix wq settings post wq disable")
    Reported-by: Tony Zhu <tony.zhu@intel.com>
    Tested-by: Tony Zhu <tony.zhu@intel.com>
    Signed-off-by: Dave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/164919561905.1455025.13542366389944678346.stgit@djiang5-desk3.ch.intel.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6168532a08ef38cf2b8076eb1c7190fd8eec0af3
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Thu Apr 7 10:43:13 2022 +0100

    ASoC: codecs: wcd934x: do not switch off SIDO Buck when codec is in use
    
    [ Upstream commit db6dd1bee63d1d88fbddfe07af800af5948ac28e ]
    
    SIDO(Single-Inductor Dual-Ouput) Buck powers up both analog and digital
    circuits along with internal memory, powering off this is the last thing
    that codec should do when going to very low power.
    
    Current code was powering off this Buck if there are no users of sysclk,
    which is not correct. Powering off this buck will result in no register access.
    This code path was never tested until recently after adding pm support
    in SoundWire controller. Fix this by removing the buck poweroff when the
    codec is active and also the code that is not used.
    
    Without this patch all the read/write transactions will never complete and
    results in SLIMBus Errors like:
    
    qcom,slim-ngd qcom,slim-ngd.1: Tx:MT:0x0, MC:0x60, LA:0xcf failed:-110
    wcd934x-codec wcd934x-codec.1.auto: ASoC: error at soc_component_read_no_lock
            on wcd934x-codec.1.auto for register: [0x00000d05] -110
    qcom,slim-ngd-ctrl 171c0000.slim: Error Interrupt received 0x82000000
    
    Reported-by: Amit Pundir <amit.pundir@linaro.org>
    Fixes: a61f3b4f476e ("ASoC: wcd934x: add support to wcd9340/wcd9341 codec")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Tested-by: Amit Pundir <amit.pundir@linaro.org>
    Link: https://lore.kernel.org/r/20220407094313.2880-1-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 053bd9604f05cae1cdea08ae5e1dc0882de8bdf0
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Sun Apr 3 11:52:39 2022 +0000

    ASoC: msm8916-wcd-digital: Check failure for devm_snd_soc_register_component
    
    [ Upstream commit e927b05f3cc20de87f6b7d912a5bbe556931caca ]
    
    devm_snd_soc_register_component() may fails, we should check the error
    and do the corresponding error handling.
    
    Fixes: 150db8c5afa1 ("ASoC: codecs: Add msm8916-wcd digital codec")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220403115239.30140-1-linmq006@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a4c63e7332c8303265e559a0b52acf9e3ab2148
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Mon Apr 4 09:07:46 2022 +0000

    ASoC: rk817: Use devm_clk_get() in rk817_platform_probe
    
    [ Upstream commit 8ba08d3a367a70f707b7c5d53ad92b98b960ee88 ]
    
    We need to call clk_put() to undo clk_get() in the error path.
    Use devm_clk_get() to obtain a reference to the clock, It has
    the benefit that clk_put() is no longer required.
    
    Fixes: 0d6a04da9b25 ("ASoC: Add Rockchip rk817 audio CODEC support")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220404090753.17940-1-linmq006@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc15442cc99f054f7b2703db147099b7fe6bba69
Author: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Date:   Thu Mar 31 14:49:57 2022 +0300

    ASoC: topology: Correct error handling in soc_tplg_dapm_widget_create()
    
    [ Upstream commit 9c363532413cda3e2c6dfa10e5cca7cd221877a0 ]
    
    Academic correction of error handling:
    In case the allocation of kc or kcontrol_type fails the correct label to
    jump is hdr_err since the template.sname has been also allocated at this
    point.
    
    Fixes: d29d41e28eea6 ("ASoC: topology: Add support for multiple kcontrol types to a widget")
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
    Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20220331114957.519-1-peter.ujfalusi@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc7d0133181e5f33ac33ca4f6bb2bce876c8ad88
Author: Mark Brown <broonie@kernel.org>
Date:   Fri Mar 25 15:42:39 2022 +0000

    ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek
    
    [ Upstream commit c775cbf62ed4911e4f0f23880f01815753123690 ]
    
    The MCLK of the WM8731 on the AT91SAM9G20-EK board is connected to the
    PCK0 output of the SoC, intended in the reference software to be supplied
    using PLLB and programmed to 12MHz. As originally written for use with a
    board file the audio driver was responsible for configuring the entire tree
    but in the conversion to the common clock framework the registration of
    the named pck0 and pllb clocks was removed so the driver has failed to
    instantiate ever since.
    
    Since the WM8731 driver has had support for managing a MCLK provided via
    the common clock framework for some time we can simply drop all the clock
    management code from the machine driver other than configuration of the
    sysclk rate, the CODEC driver still respects that configuration from the
    machine driver.
    
    Fixes: ff78a189b0ae55f ("ARM: at91: remove old at91-specific clock driver")
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Reviewed-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
    Link: https://lore.kernel.org/r/20220325154241.1600757-2-broonie@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 236785649ad2e027ccdaa6ee888c4a5571473eb9
Author: Tim Crawford <tcrawford@system76.com>
Date:   Thu Apr 21 11:04:12 2022 -0600

    ALSA: hda/realtek: Add quirk for Clevo NP70PNP
    
    commit 86222af07abf1f5f07a5873cc399c29ab8a9b8b8 upstream.
    
    Fixes headset detection on Clevo NP70PNP.
    
    Signed-off-by: Tim Crawford <tcrawford@system76.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220421170412.3697-1-tcrawford@system76.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aaa22e5b526d3af0ac241157eae84f6c6edf47e4
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Apr 20 15:02:47 2022 +0200

    ALSA: usb-audio: Clear MIDI port active flag after draining
    
    commit 0665886ad1392e6b5bae85d7a6ccbed48dca1522 upstream.
    
    When a rawmidi output stream is closed, it calls the drain at first,
    then does trigger-off only when the drain returns -ERESTARTSYS as a
    fallback.  It implies that each driver should turn off the stream
    properly after the drain.  Meanwhile, USB-audio MIDI interface didn't
    change the port->active flag after the drain.  This may leave the
    output work picking up the port that is closed right now, which
    eventually leads to a use-after-free for the already released rawmidi
    object.
    
    This patch fixes the bug by properly clearing the port->active flag
    after the output drain.
    
    Reported-by: syzbot+70e777a39907d6d5fd0a@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/00000000000011555605dceaff03@google.com
    Link: https://lore.kernel.org/r/20220420130247.22062-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba9e9a794fd1689bf7e8a7452c55f3d3cbda7728
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 13 10:35:41 2022 -0700

    net/sched: cls_u32: fix netns refcount changes in u32_change()
    
    commit 3db09e762dc79584a69c10d74a6b98f89a9979f8 upstream.
    
    We are now able to detect extra put_net() at the moment
    they happen, instead of much later in correct code paths.
    
    u32_init_knode() / tcf_exts_init() populates the ->exts.net
    pointer, but as mentioned in tcf_exts_init(),
    the refcount on netns has not been elevated yet.
    
    The refcount is taken only once tcf_exts_get_net()
    is called.
    
    So the two u32_destroy_key() calls from u32_change()
    are attempting to release an invalid reference on the netns.
    
    syzbot report:
    
    refcount_t: decrement hit 0; leaking memory.
    WARNING: CPU: 0 PID: 21708 at lib/refcount.c:31 refcount_warn_saturate+0xbf/0x1e0 lib/refcount.c:31
    Modules linked in:
    CPU: 0 PID: 21708 Comm: syz-executor.5 Not tainted 5.18.0-rc2-next-20220412-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:refcount_warn_saturate+0xbf/0x1e0 lib/refcount.c:31
    Code: 1d 14 b6 b2 09 31 ff 89 de e8 6d e9 89 fd 84 db 75 e0 e8 84 e5 89 fd 48 c7 c7 40 aa 26 8a c6 05 f4 b5 b2 09 01 e8 e5 81 2e 05 <0f> 0b eb c4 e8 68 e5 89 fd 0f b6 1d e3 b5 b2 09 31 ff 89 de e8 38
    RSP: 0018:ffffc900051af1b0 EFLAGS: 00010286
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
    RDX: 0000000000040000 RSI: ffffffff8160a0c8 RDI: fffff52000a35e28
    RBP: 0000000000000004 R08: 0000000000000000 R09: 0000000000000000
    R10: ffffffff81604a9e R11: 0000000000000000 R12: 1ffff92000a35e3b
    R13: 00000000ffffffef R14: ffff8880211a0194 R15: ffff8880577d0a00
    FS:  00007f25d183e700(0000) GS:ffff8880b9c00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f19c859c028 CR3: 0000000051009000 CR4: 00000000003506f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     __refcount_dec include/linux/refcount.h:344 [inline]
     refcount_dec include/linux/refcount.h:359 [inline]
     ref_tracker_free+0x535/0x6b0 lib/ref_tracker.c:118
     netns_tracker_free include/net/net_namespace.h:327 [inline]
     put_net_track include/net/net_namespace.h:341 [inline]
     tcf_exts_put_net include/net/pkt_cls.h:255 [inline]
     u32_destroy_key.isra.0+0xa7/0x2b0 net/sched/cls_u32.c:394
     u32_change+0xe01/0x3140 net/sched/cls_u32.c:909
     tc_new_tfilter+0x98d/0x2200 net/sched/cls_api.c:2148
     rtnetlink_rcv_msg+0x80d/0xb80 net/core/rtnetlink.c:6016
     netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2495
     netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
     netlink_unicast+0x543/0x7f0 net/netlink/af_netlink.c:1345
     netlink_sendmsg+0x904/0xe00 net/netlink/af_netlink.c:1921
     sock_sendmsg_nosec net/socket.c:705 [inline]
     sock_sendmsg+0xcf/0x120 net/socket.c:725
     ____sys_sendmsg+0x6e2/0x800 net/socket.c:2413
     ___sys_sendmsg+0xf3/0x170 net/socket.c:2467
     __sys_sendmsg+0xe5/0x1b0 net/socket.c:2496
     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:0x7f25d0689049
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 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 b8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f25d183e168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 00007f25d079c030 RCX: 00007f25d0689049
    RDX: 0000000000000000 RSI: 0000000020000340 RDI: 0000000000000005
    RBP: 00007f25d06e308d R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 00007ffd0b752e3f R14: 00007f25d183e300 R15: 0000000000022000
     </TASK>
    
    Fixes: 35c55fc156d8 ("cls_u32: use tcf_exts_get_net() before call_rcu()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dfec6e0a62d31523195355d73e6fe96f5f2f16e
Author: Peter Wang <peter.wang@mediatek.com>
Date:   Mon Mar 7 19:17:52 2022 +0800

    scsi: ufs: core: scsi_get_lba() error fix
    
    commit 2bd3b6b75946db2ace06e145d53988e10ed7e99a upstream.
    
    When ufs initializes without scmd->device->sector_size set, scsi_get_lba()
    will get a wrong shift number and trigger an ubsan error.  The shift
    exponent 4294967286 is too large for the 64-bit type 'sector_t' (aka
    'unsigned long long').
    
    Call scsi_get_lba() only when opcode is READ_10/WRITE_10/UNMAP.
    
    Link: https://lore.kernel.org/r/20220307111752.10465-1-peter.wang@mediatek.com
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Peter Wang <peter.wang@mediatek.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2d0cdf8ad06ec1d1687729e5c5ccdd7746343e8
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Mon Jan 17 10:25:07 2022 -0500

    gfs2: assign rgrp glock before compute_bitstructs
    
    commit 428f651cb80b227af47fc302e4931791f2fb4741 upstream.
    
    Before this patch, function read_rindex_entry called compute_bitstructs
    before it allocated a glock for the rgrp. But if compute_bitstructs found
    a problem with the rgrp, it called gfs2_consist_rgrpd, and that called
    gfs2_dump_glock for rgd->rd_gl which had not yet been assigned.
    
    read_rindex_entry
       compute_bitstructs
          gfs2_consist_rgrpd
             gfs2_dump_glock <---------rgd->rd_gl was not set.
    
    This patch changes read_rindex_entry so it assigns an rgrp glock before
    calling compute_bitstructs so gfs2_dump_glock does not reference an
    unassigned pointer. If an error is discovered, the glock must also be
    put, so a new goto and label were added.
    
    Reported-by: syzbot+c6fd14145e2f62ca0784@syzkaller.appspotmail.com
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a52e73bef25486cf2aa786ca5c83bcc940625103
Author: Marco Elver <elver@google.com>
Date:   Thu Apr 14 19:13:40 2022 -0700

    mm, kfence: support kmem_dump_obj() for KFENCE objects
    
    commit 2dfe63e61cc31ee59ce951672b0850b5229cd5b0 upstream.
    
    Calling kmem_obj_info() via kmem_dump_obj() on KFENCE objects has been
    producing garbage data due to the object not actually being maintained
    by SLAB or SLUB.
    
    Fix this by implementing __kfence_obj_info() that copies relevant
    information to struct kmem_obj_info when the object was allocated by
    KFENCE; this is called by a common kmem_obj_info(), which also calls the
    slab/slub/slob specific variant now called __kmem_obj_info().
    
    For completeness, kmem_dump_obj() now displays if the object was
    allocated by KFENCE.
    
    Link: https://lore.kernel.org/all/20220323090520.GG16885@xsang-OptiPlex-9020/
    Link: https://lkml.kernel.org/r/20220406131558.3558585-1-elver@google.com
    Fixes: b89fb5ef0ce6 ("mm, kfence: insert KFENCE hooks for SLUB")
    Fixes: d3fb45f370d9 ("mm, kfence: insert KFENCE hooks for SLAB")
    Signed-off-by: Marco Elver <elver@google.com>
    Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>      [slab]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3876c574e4cca9ff9a9afb5570c526633f32eda5
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Wed Apr 13 14:42:32 2022 +0300

    perf tools: Fix segfault accessing sample_id xyarray
    
    commit a668cc07f990d2ed19424d5c1a529521a9d1cee1 upstream.
    
    perf_evsel::sample_id is an xyarray which can cause a segfault when
    accessed beyond its size. e.g.
    
      # perf record -e intel_pt// -C 1 sleep 1
      Segmentation fault (core dumped)
      #
    
    That is happening because a dummy event is opened to capture text poke
    events accross all CPUs, however the mmap logic is allocating according
    to the number of user_requested_cpus.
    
    In general, perf sometimes uses the evsel cpus to open events, and
    sometimes the evlist user_requested_cpus. However, it is not necessary
    to determine which case is which because the opened event file
    descriptors are also in an xyarray, the size of whch can be used
    to correctly allocate the size of the sample_id xyarray, because there
    is one ID per file descriptor.
    
    Note, in the affected code path, perf_evsel fd array is subsequently
    used to get the file descriptor for the mmap, so it makes sense for the
    xyarrays to be the same size there.
    
    Fixes: d1a177595b3a824c ("libperf: Adopt perf_evlist__mmap()/munmap() from tools/perf")
    Fixes: 246eba8e9041c477 ("perf tools: Add support for PERF_RECORD_TEXT_POKE")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Acked-by: Ian Rogers <irogers@google.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: stable@vger.kernel.org # 5.5+
    Link: https://lore.kernel.org/r/20220413114232.26914-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77a467983bffb5bfe54a67ba79cd671d74d837e4
Author: Xiongwei Song <sxwjean@gmail.com>
Date:   Fri Jan 14 14:07:24 2022 -0800

    mm: page_alloc: fix building error on -Werror=array-compare
    
    commit ca831f29f8f25c97182e726429b38c0802200c8f upstream.
    
    Arthur Marsh reported we would hit the error below when building kernel
    with gcc-12:
    
      CC      mm/page_alloc.o
      mm/page_alloc.c: In function `mem_init_print_info':
      mm/page_alloc.c:8173:27: error: comparison between two arrays [-Werror=array-compare]
       8173 |                 if (start <= pos && pos < end && size > adj) \
            |
    
    In C++20, the comparision between arrays should be warned.
    
    Link: https://lkml.kernel.org/r/20211125130928.32465-1-sxwjean@me.com
    Signed-off-by: Xiongwei Song <sxwjean@gmail.com>
    Reported-by: Arthur Marsh <arthur.marsh@internode.on.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Khem Raj <raj.khem@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3177d047e58a56b2df9e9d59283c3121f1888fe8
Author: Kees Cook <keescook@chromium.org>
Date:   Sat Feb 12 09:14:49 2022 -0800

    etherdevice: Adjust ether_addr* prototypes to silence -Wstringop-overead
    
    commit 2618a0dae09ef37728dab89ff60418cbe25ae6bd upstream.
    
    With GCC 12, -Wstringop-overread was warning about an implicit cast from
    char[6] to char[8]. However, the extra 2 bytes are always thrown away,
    alignment doesn't matter, and the risk of hitting the edge of unallocated
    memory has been accepted, so this prototype can just be converted to a
    regular char *. Silences:
    
    net/core/dev.c: In function ‘bpf_prog_run_generic_xdp’: net/core/dev.c:4618:21: warning: ‘ether_addr_equal_64bits’ reading 8 bytes from a region of size 6 [-Wstringop-overread]
     4618 |         orig_host = ether_addr_equal_64bits(eth->h_dest, > skb->dev->dev_addr);
          |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    net/core/dev.c:4618:21: note: referencing argument 1 of type ‘const u8[8]’ {aka ‘const unsigned char[8]’}
    net/core/dev.c:4618:21: note: referencing argument 2 of type ‘const u8[8]’ {aka ‘const unsigned char[8]’}
    In file included from net/core/dev.c:91: include/linux/etherdevice.h:375:20: note: in a call to function ‘ether_addr_equal_64bits’
      375 | static inline bool ether_addr_equal_64bits(const u8 addr1[6+2],
          |                    ^~~~~~~~~~~~~~~~~~~~~~~
    
    Reported-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Tested-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Link: https://lore.kernel.org/netdev/20220212090811.uuzk6d76agw2vv73@pengutronix.de
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: netdev@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Khem Raj <raj.khem@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f7b1a87ac75028bb77e0e192239617785b339dd
Author: Anshuman Khandual <anshuman.khandual@arm.com>
Date:   Thu Sep 30 04:30:39 2021 +0300

    arm64/mm: drop HAVE_ARCH_PFN_VALID
    
    commit 3de360c3fdb34fbdbaf6da3af94367d3fded95d3 upstream.
    
    CONFIG_SPARSEMEM_VMEMMAP is now the only available memory model on arm64
    platforms and free_unused_memmap() would just return without creating any
    holes in the memmap mapping.  There is no need for any special handling in
    pfn_valid() and HAVE_ARCH_PFN_VALID can just be dropped.  This also moves
    the pfn upper bits sanity check into generic pfn_valid().
    
    [rppt: rebased on v5.15-rc3]
    
    Link: https://lkml.kernel.org/r/1621947349-25421-1-git-send-email-anshuman.khandual@arm.com
    Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Acked-by: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Mike Rapoport <rppt@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
    Link: https://lore.kernel.org/r/20210930013039.11260-3-rppt@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Fixes: 859a85ddf90e ("mm: remove pfn_valid_within() and CONFIG_HOLES_IN_ZONE")
    Link: https://lore.kernel.org/r/Yl0IZWT2nsiYtqBT@linux.ibm.com
    Signed-off-by: Georgi Djakov <quic_c_gdjako@quicinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c01430cf5b8769d98f476c9516f22306f0323415
Author: Mike Rapoport <rppt@kernel.org>
Date:   Thu Sep 30 04:30:38 2021 +0300

    dma-mapping: remove bogus test for pfn_valid from dma_map_resource
    
    commit a9c38c5d267cb94871dfa2de5539c92025c855d7 upstream.
    
    dma_map_resource() uses pfn_valid() to ensure the range is not RAM.
    However, pfn_valid() only checks for availability of the memory map for a
    PFN but it does not ensure that the PFN is actually backed by RAM.
    
    As dma_map_resource() is the only method in DMA mapping APIs that has this
    check, simply drop the pfn_valid() test from dma_map_resource().
    
    Link: https://lore.kernel.org/all/20210824173741.GC623@arm.com/
    Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Acked-by: David Hildenbrand <david@redhat.com>
    Link: https://lore.kernel.org/r/20210930013039.11260-2-rppt@kernel.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Fixes: 859a85ddf90e ("mm: remove pfn_valid_within() and CONFIG_HOLES_IN_ZONE")
    Link: https://lore.kernel.org/r/Yl0IZWT2nsiYtqBT@linux.ibm.com
    Signed-off-by: Georgi Djakov <quic_c_gdjako@quicinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 155ae0547cb8c8b7b5fa96891dbaba0c664b023b
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Sun Jan 30 08:53:17 2022 -0800

    xfs: return errors in xfs_fs_sync_fs
    
    [ Upstream commit 2d86293c70750e4331e9616aded33ab6b47c299d ]
    
    Now that the VFS will do something with the return values from
    ->sync_fs, make ours pass on error codes.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 935745abcf4c695a18b9af3fbe295e322547a114
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Sun Jan 30 08:53:16 2022 -0800

    vfs: make sync_filesystem return errors from ->sync_fs
    
    [ Upstream commit 5679897eb104cec9e99609c3f045a0c20603da4c ]
    
    Strangely, sync_filesystem ignores the return code from the ->sync_fs
    call, which means that syscalls like syncfs(2) never see the error.
    This doesn't seem right, so fix that.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6eb927ee189f39746bcb02123d270ef04457eab6
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Oct 19 08:25:30 2021 +0200

    block: simplify the block device syncing code
    
    [ Upstream commit 1e03a36bdff4709c1bbf0f57f60ae3f776d51adf ]
    
    Get rid of the indirections and just provide a sync_bdevs
    helper for the generic sync code.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20211019062530.2174626-8-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7877e7a5a52e1c9716326b94dfe6c7e6cd7bce5a
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Oct 19 08:25:25 2021 +0200

    block: remove __sync_blockdev
    
    [ Upstream commit 70164eb6ccb76ab679b016b4b60123bf4ec6c162 ]
    
    Instead offer a new sync_blockdev_nowait helper for the !wait case.
    This new helper is exported as it will grow modular callers in a bit.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20211019062530.2174626-3-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b7617ae04de31fe96aae445a35395078b6eefd6
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Oct 19 08:25:24 2021 +0200

    fs: remove __sync_filesystem
    
    [ Upstream commit 9a208ba5c9afa62c7b1e9c6f5e783066e84e2d3c ]
    
    There is no clear benefit in having this helper vs just open coding it.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Link: https://lore.kernel.org/r/20211019062530.2174626-2-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>