commit 6d46ef50b123f2da3871690e619f5169eb97af92
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Nov 25 17:45:57 2022 +0100

    Linux 5.10.156
    
    Link: https://lore.kernel.org/r/20221123084557.945845710@linuxfoundation.org
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7be134eb691f6a54b267dbc321530ce0221a76b1
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Nov 25 15:51:06 2022 +0100

    Revert "net: broadcom: Fix BCMGENET Kconfig"
    
    This reverts commit fbb4e8e6dc7b38b3007354700f03c8ad2d9a2118 which is
    commit 8d820bc9d12b8beebca836cceaf2bbe68216c2f8 upstream.
    
    It causes runtime failures as reported by Naresh and Arnd writes:
    
            Greg, please just revert fbb4e8e6dc7b ("net: broadcom: Fix BCMGENET Kconfig")
            in stable/linux-5.10.y: it depends on e5f31552674e ("ethernet: fix
            PTP_1588_CLOCK dependencies"), which we probably don't want backported
            from 5.15 to 5.10.
    
    So it should be reverted.
    
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Reported-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/CA+G9fYsXomPXcecPDzDydO3=i2qHDM2RTtGxr0p2YOS6=YcWng@mail.gmail.com
    Cc: YueHaibing <yuehaibing@huawei.com>
    Cc: Florian Fainelli <f.fainelli@broadcom.com>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 957732a09c3828267c2819d31c425aa793dd475b
Author: Hawkins Jiawei <yin31149@gmail.com>
Date:   Thu Sep 1 00:09:38 2022 +0800

    ntfs: check overflow when iterating ATTR_RECORDs
    
    commit 63095f4f3af59322bea984a6ae44337439348fe0 upstream.
    
    Kernel iterates over ATTR_RECORDs in mft record in ntfs_attr_find().
    Because the ATTR_RECORDs are next to each other, kernel can get the next
    ATTR_RECORD from end address of current ATTR_RECORD, through current
    ATTR_RECORD length field.
    
    The problem is that during iteration, when kernel calculates the end
    address of current ATTR_RECORD, kernel may trigger an integer overflow bug
    in executing `a = (ATTR_RECORD*)((u8*)a + le32_to_cpu(a->length))`.  This
    may wrap, leading to a forever iteration on 32bit systems.
    
    This patch solves it by adding some checks on calculating end address
    of current ATTR_RECORD during iteration.
    
    Link: https://lkml.kernel.org/r/20220831160935.3409-4-yin31149@gmail.com
    Link: https://lore.kernel.org/all/20220827105842.GM2030@kadam/
    Signed-off-by: Hawkins Jiawei <yin31149@gmail.com>
    Suggested-by: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Anton Altaparmakov <anton@tuxera.com>
    Cc: chenxiaosong (A) <chenxiaosong2@huawei.com>
    Cc: syzkaller-bugs <syzkaller-bugs@googlegroups.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6322dda483344abe47d17335809f7bbb730bd88b
Author: Hawkins Jiawei <yin31149@gmail.com>
Date:   Thu Sep 1 00:09:36 2022 +0800

    ntfs: fix out-of-bounds read in ntfs_attr_find()
    
    commit 36a4d82dddbbd421d2b8e79e1cab68c8126d5075 upstream.
    
    Kernel iterates over ATTR_RECORDs in mft record in ntfs_attr_find().  To
    ensure access on these ATTR_RECORDs are within bounds, kernel will do some
    checking during iteration.
    
    The problem is that during checking whether ATTR_RECORD's name is within
    bounds, kernel will dereferences the ATTR_RECORD name_offset field, before
    checking this ATTR_RECORD strcture is within bounds.  This problem may
    result out-of-bounds read in ntfs_attr_find(), reported by Syzkaller:
    
    ==================================================================
    BUG: KASAN: use-after-free in ntfs_attr_find+0xc02/0xce0 fs/ntfs/attrib.c:597
    Read of size 2 at addr ffff88807e352009 by task syz-executor153/3607
    
    [...]
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
     print_address_description mm/kasan/report.c:317 [inline]
     print_report.cold+0x2ba/0x719 mm/kasan/report.c:433
     kasan_report+0xb1/0x1e0 mm/kasan/report.c:495
     ntfs_attr_find+0xc02/0xce0 fs/ntfs/attrib.c:597
     ntfs_attr_lookup+0x1056/0x2070 fs/ntfs/attrib.c:1193
     ntfs_read_inode_mount+0x89a/0x2580 fs/ntfs/inode.c:1845
     ntfs_fill_super+0x1799/0x9320 fs/ntfs/super.c:2854
     mount_bdev+0x34d/0x410 fs/super.c:1400
     legacy_get_tree+0x105/0x220 fs/fs_context.c:610
     vfs_get_tree+0x89/0x2f0 fs/super.c:1530
     do_new_mount fs/namespace.c:3040 [inline]
     path_mount+0x1326/0x1e20 fs/namespace.c:3370
     do_mount fs/namespace.c:3383 [inline]
     __do_sys_mount fs/namespace.c:3591 [inline]
     __se_sys_mount fs/namespace.c:3568 [inline]
     __x64_sys_mount+0x27f/0x300 fs/namespace.c:3568
     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+0x63/0xcd
     [...]
     </TASK>
    
    The buggy address belongs to the physical page:
    page:ffffea0001f8d400 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x7e350
    head:ffffea0001f8d400 order:3 compound_mapcount:0 compound_pincount:0
    flags: 0xfff00000010200(slab|head|node=0|zone=1|lastcpupid=0x7ff)
    raw: 00fff00000010200 0000000000000000 dead000000000122 ffff888011842140
    raw: 0000000000000000 0000000000040004 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    Memory state around the buggy address:
     ffff88807e351f00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff88807e351f80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    >ffff88807e352000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                          ^
     ffff88807e352080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff88807e352100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ==================================================================
    
    This patch solves it by moving the ATTR_RECORD strcture's bounds checking
    earlier, then checking whether ATTR_RECORD's name is within bounds.
    What's more, this patch also add some comments to improve its
    maintainability.
    
    Link: https://lkml.kernel.org/r/20220831160935.3409-3-yin31149@gmail.com
    Link: https://lore.kernel.org/all/1636796c-c85e-7f47-e96f-e074fee3c7d3@huawei.com/
    Link: https://groups.google.com/g/syzkaller-bugs/c/t_XdeKPGTR4/m/LECAuIGcBgAJ
    Signed-off-by: chenxiaosong (A) <chenxiaosong2@huawei.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Hawkins Jiawei <yin31149@gmail.com>
    Reported-by: syzbot+5f8dcabe4a3b2c51c607@syzkaller.appspotmail.com
    Tested-by: syzbot+5f8dcabe4a3b2c51c607@syzkaller.appspotmail.com
    Cc: Anton Altaparmakov <anton@tuxera.com>
    Cc: syzkaller-bugs <syzkaller-bugs@googlegroups.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b825bfbbaafbe8da2037e3a778ad660c59f9e054
Author: Hawkins Jiawei <yin31149@gmail.com>
Date:   Thu Sep 1 00:09:34 2022 +0800

    ntfs: fix use-after-free in ntfs_attr_find()
    
    commit d85a1bec8e8d552ab13163ca1874dcd82f3d1550 upstream.
    
    Patch series "ntfs: fix bugs about Attribute", v2.
    
    This patchset fixes three bugs relative to Attribute in record:
    
    Patch 1 adds a sanity check to ensure that, attrs_offset field in first
    mft record loading from disk is within bounds.
    
    Patch 2 moves the ATTR_RECORD's bounds checking earlier, to avoid
    dereferencing ATTR_RECORD before checking this ATTR_RECORD is within
    bounds.
    
    Patch 3 adds an overflow checking to avoid possible forever loop in
    ntfs_attr_find().
    
    Without patch 1 and patch 2, the kernel triggersa KASAN use-after-free
    detection as reported by Syzkaller.
    
    Although one of patch 1 or patch 2 can fix this, we still need both of
    them.  Because patch 1 fixes the root cause, and patch 2 not only fixes
    the direct cause, but also fixes the potential out-of-bounds bug.
    
    
    This patch (of 3):
    
    Syzkaller reported use-after-free read as follows:
    ==================================================================
    BUG: KASAN: use-after-free in ntfs_attr_find+0xc02/0xce0 fs/ntfs/attrib.c:597
    Read of size 2 at addr ffff88807e352009 by task syz-executor153/3607
    
    [...]
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
     print_address_description mm/kasan/report.c:317 [inline]
     print_report.cold+0x2ba/0x719 mm/kasan/report.c:433
     kasan_report+0xb1/0x1e0 mm/kasan/report.c:495
     ntfs_attr_find+0xc02/0xce0 fs/ntfs/attrib.c:597
     ntfs_attr_lookup+0x1056/0x2070 fs/ntfs/attrib.c:1193
     ntfs_read_inode_mount+0x89a/0x2580 fs/ntfs/inode.c:1845
     ntfs_fill_super+0x1799/0x9320 fs/ntfs/super.c:2854
     mount_bdev+0x34d/0x410 fs/super.c:1400
     legacy_get_tree+0x105/0x220 fs/fs_context.c:610
     vfs_get_tree+0x89/0x2f0 fs/super.c:1530
     do_new_mount fs/namespace.c:3040 [inline]
     path_mount+0x1326/0x1e20 fs/namespace.c:3370
     do_mount fs/namespace.c:3383 [inline]
     __do_sys_mount fs/namespace.c:3591 [inline]
     __se_sys_mount fs/namespace.c:3568 [inline]
     __x64_sys_mount+0x27f/0x300 fs/namespace.c:3568
     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+0x63/0xcd
     [...]
     </TASK>
    
    The buggy address belongs to the physical page:
    page:ffffea0001f8d400 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x7e350
    head:ffffea0001f8d400 order:3 compound_mapcount:0 compound_pincount:0
    flags: 0xfff00000010200(slab|head|node=0|zone=1|lastcpupid=0x7ff)
    raw: 00fff00000010200 0000000000000000 dead000000000122 ffff888011842140
    raw: 0000000000000000 0000000000040004 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    Memory state around the buggy address:
     ffff88807e351f00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff88807e351f80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    >ffff88807e352000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                          ^
     ffff88807e352080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff88807e352100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ==================================================================
    
    Kernel will loads $MFT/$DATA's first mft record in
    ntfs_read_inode_mount().
    
    Yet the problem is that after loading, kernel doesn't check whether
    attrs_offset field is a valid value.
    
    To be more specific, if attrs_offset field is larger than bytes_allocated
    field, then it may trigger the out-of-bounds read bug(reported as
    use-after-free bug) in ntfs_attr_find(), when kernel tries to access the
    corresponding mft record's attribute.
    
    This patch solves it by adding the sanity check between attrs_offset field
    and bytes_allocated field, after loading the first mft record.
    
    Link: https://lkml.kernel.org/r/20220831160935.3409-1-yin31149@gmail.com
    Link: https://lkml.kernel.org/r/20220831160935.3409-2-yin31149@gmail.com
    Signed-off-by: Hawkins Jiawei <yin31149@gmail.com>
    Cc: Anton Altaparmakov <anton@tuxera.com>
    Cc: ChenXiaoSong <chenxiaosong2@huawei.com>
    Cc: syzkaller-bugs <syzkaller-bugs@googlegroups.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 294ef12dccc6de01de3322b21a0c235474952b63
Author: Alexander Potapenko <glider@google.com>
Date:   Thu Sep 15 17:04:16 2022 +0200

    mm: fs: initialize fsdata passed to write_begin/write_end interface
    
    commit 1468c6f4558b1bcd92aa0400f2920f9dc7588402 upstream.
    
    Functions implementing the a_ops->write_end() interface accept the `void
    *fsdata` parameter that is supposed to be initialized by the corresponding
    a_ops->write_begin() (which accepts `void **fsdata`).
    
    However not all a_ops->write_begin() implementations initialize `fsdata`
    unconditionally, so it may get passed uninitialized to a_ops->write_end(),
    resulting in undefined behavior.
    
    Fix this by initializing fsdata with NULL before the call to
    write_begin(), rather than doing so in all possible a_ops implementations.
    
    This patch covers only the following cases found by running x86 KMSAN
    under syzkaller:
    
     - generic_perform_write()
     - cont_expand_zero() and generic_cont_expand_simple()
     - page_symlink()
    
    Other cases of passing uninitialized fsdata may persist in the codebase.
    
    Link: https://lkml.kernel.org/r/20220915150417.722975-43-glider@google.com
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Andrey Konovalov <andreyknvl@gmail.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Eric Biggers <ebiggers@google.com>
    Cc: Eric Biggers <ebiggers@kernel.org>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Ilya Leoshkevich <iii@linux.ibm.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Marco Elver <elver@google.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: Vegard Nossum <vegard.nossum@oracle.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8e2fc8f7b41fa9d9ca5f624f4e4d34fce5b40a9
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Sat Aug 27 00:27:46 2022 +0900

    9p/trans_fd: always use O_NONBLOCK read/write
    
    commit ef575281b21e9a34dfae544a187c6aac2ae424a9 upstream.
    
    syzbot is reporting hung task at p9_fd_close() [1], for p9_mux_poll_stop()
     from p9_conn_destroy() from p9_fd_close() is failing to interrupt already
    started kernel_read() from p9_fd_read() from p9_read_work() and/or
    kernel_write() from p9_fd_write() from p9_write_work() requests.
    
    Since p9_socket_open() sets O_NONBLOCK flag, p9_mux_poll_stop() does not
    need to interrupt kernel_read()/kernel_write(). However, since p9_fd_open()
    does not set O_NONBLOCK flag, but pipe blocks unless signal is pending,
    p9_mux_poll_stop() needs to interrupt kernel_read()/kernel_write() when
    the file descriptor refers to a pipe. In other words, pipe file descriptor
    needs to be handled as if socket file descriptor.
    
    We somehow need to interrupt kernel_read()/kernel_write() on pipes.
    
    A minimal change, which this patch is doing, is to set O_NONBLOCK flag
     from p9_fd_open(), for O_NONBLOCK flag does not affect reading/writing
    of regular files. But this approach changes O_NONBLOCK flag on userspace-
    supplied file descriptors (which might break userspace programs), and
    O_NONBLOCK flag could be changed by userspace. It would be possible to set
    O_NONBLOCK flag every time p9_fd_read()/p9_fd_write() is invoked, but still
    remains small race window for clearing O_NONBLOCK flag.
    
    If we don't want to manipulate O_NONBLOCK flag, we might be able to
    surround kernel_read()/kernel_write() with set_thread_flag(TIF_SIGPENDING)
    and recalc_sigpending(). Since p9_read_work()/p9_write_work() works are
    processed by kernel threads which process global system_wq workqueue,
    signals could not be delivered from remote threads when p9_mux_poll_stop()
     from p9_conn_destroy() from p9_fd_close() is called. Therefore, calling
    set_thread_flag(TIF_SIGPENDING)/recalc_sigpending() every time would be
    needed if we count on signals for making kernel_read()/kernel_write()
    non-blocking.
    
    Link: https://lkml.kernel.org/r/345de429-a88b-7097-d177-adecf9fed342@I-love.SAKURA.ne.jp
    Link: https://syzkaller.appspot.com/bug?extid=8b41a1365f1106fd0f33 [1]
    Reported-by: syzbot <syzbot+8b41a1365f1106fd0f33@syzkaller.appspotmail.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Tested-by: syzbot <syzbot+8b41a1365f1106fd0f33@syzkaller.appspotmail.com>
    Reviewed-by: Christian Schoenebeck <linux_oss@crudebyte.com>
    [Dominique: add comment at Christian's suggestion]
    Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5da76df467a55071c88c7e2612250e91034e4d7
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Fri Aug 26 15:12:17 2022 +0200

    gfs2: Switch from strlcpy to strscpy
    
    commit 204c0300c4e99707e9fb6e57840aa1127060e63f upstream.
    
    Switch from strlcpy to strscpy and make sure that @count is the size of
    the smaller of the source and destination buffers.  This prevents
    reading beyond the end of the source buffer when the source string isn't
    null terminated.
    
    Found by a modified version of syzkaller.
    
    Suggested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fa30be7ba81191b0a0c7239a89befc0c94286d5
Author: Andrew Price <anprice@redhat.com>
Date:   Wed Aug 17 13:22:00 2022 +0100

    gfs2: Check sb_bsize_shift after reading superblock
    
    commit 670f8ce56dd0632dc29a0322e188cc73ce3c6b92 upstream.
    
    Fuzzers like to scribble over sb_bsize_shift but in reality it's very
    unlikely that this field would be corrupted on its own. Nevertheless it
    should be checked to avoid the possibility of messy mount errors due to
    bad calculations. It's always a fixed value based on the block size so
    we can just check that it's the expected value.
    
    Tested with:
    
        mkfs.gfs2 -O -p lock_nolock /dev/vdb
        for i in 0 -1 64 65 32 33; do
            gfs2_edit -p sb field sb_bsize_shift $i /dev/vdb
            mount /dev/vdb /mnt/test && umount /mnt/test
        done
    
    Before this patch we get a withdraw after
    
    [   76.413681] gfs2: fsid=loop0.0: fatal: invalid metadata block
    [   76.413681]   bh = 19 (type: exp=5, found=4)
    [   76.413681]   function = gfs2_meta_buffer, file = fs/gfs2/meta_io.c, line = 492
    
    and with UBSAN configured we also get complaints like
    
    [   76.373395] UBSAN: shift-out-of-bounds in fs/gfs2/ops_fstype.c:295:19
    [   76.373815] shift exponent 4294967287 is too large for 64-bit type 'long unsigned int'
    
    After the patch, these complaints don't appear, mount fails immediately
    and we get an explanation in dmesg.
    
    Reported-by: syzbot+dcf33a7aae997956fe06@syzkaller.appspotmail.com
    Signed-off-by: Andrew Price <anprice@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f14858bc77c567e089965962877ee726ffad0556
Author: Dominique Martinet <asmadeus@codewreck.org>
Date:   Wed Aug 17 14:58:44 2022 +0900

    9p: trans_fd/p9_conn_cancel: drop client lock earlier
    
    commit 52f1c45dde9136f964d63a77d19826c8a74e2c7f upstream.
    
    syzbot reported a double-lock here and we no longer need this
    lock after requests have been moved off to local list:
    just drop the lock earlier.
    
    Link: https://lkml.kernel.org/r/20220904064028.1305220-1-asmadeus@codewreck.org
    Reported-by: syzbot+50f7e8d06c3768dd97f3@syzkaller.appspotmail.com
    Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
    Tested-by: Schspa Shi <schspa@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4154b6afa2bd639214ff259d912faad984f7413a
Author: Cong Wang <cong.wang@bytedance.com>
Date:   Sun Nov 13 16:51:19 2022 -0800

    kcm: close race conditions on sk_receive_queue
    
    commit 5121197ecc5db58c07da95eb1ff82b98b121a221 upstream.
    
    sk->sk_receive_queue is protected by skb queue lock, but for KCM
    sockets its RX path takes mux->rx_lock to protect more than just
    skb queue. However, kcm_recvmsg() still only grabs the skb queue
    lock, so race conditions still exist.
    
    We can teach kcm_recvmsg() to grab mux->rx_lock too but this would
    introduce a potential performance regression as struct kcm_mux can
    be shared by multiple KCM sockets.
    
    So we have to enforce skb queue lock in requeue_rx_msgs() and handle
    skb peek case carefully in kcm_wait_data(). Fortunately,
    skb_recv_datagram() already handles it nicely and is widely used by
    other sockets, we can just switch to skb_recv_datagram() after
    getting rid of the unnecessary sock lock in kcm_recvmsg() and
    kcm_splice_read(). Side note: SOCK_DONE is not used by KCM sockets,
    so it is safe to get rid of this check too.
    
    I ran the original syzbot reproducer for 30 min without seeing any
    issue.
    
    Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module")
    Reported-by: syzbot+278279efdd2730dd14bf@syzkaller.appspotmail.com
    Reported-by: shaozhengchao <shaozhengchao@huawei.com>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Cc: Tom Herbert <tom@herbertland.com>
    Signed-off-by: Cong Wang <cong.wang@bytedance.com>
    Link: https://lore.kernel.org/r/20221114005119.597905-1-xiyou.wangcong@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7deb7a9d33e4941c5ff190108146d3a56bf69e9d
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Oct 12 13:34:12 2022 +0000

    kcm: avoid potential race in kcm_tx_work
    
    commit ec7eede369fe5b0d085ac51fdbb95184f87bfc6c upstream.
    
    syzbot found that kcm_tx_work() could crash [1] in:
    
            /* Primarily for SOCK_SEQPACKET sockets */
            if (likely(sk->sk_socket) &&
                test_bit(SOCK_NOSPACE, &sk->sk_socket->flags)) {
    <<*>>   clear_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
                    sk->sk_write_space(sk);
            }
    
    I think the reason is that another thread might concurrently
    run in kcm_release() and call sock_orphan(sk) while sk is not
    locked. kcm_tx_work() find sk->sk_socket being NULL.
    
    [1]
    BUG: KASAN: null-ptr-deref in instrument_atomic_write include/linux/instrumented.h:86 [inline]
    BUG: KASAN: null-ptr-deref in clear_bit include/asm-generic/bitops/instrumented-atomic.h:41 [inline]
    BUG: KASAN: null-ptr-deref in kcm_tx_work+0xff/0x160 net/kcm/kcmsock.c:742
    Write of size 8 at addr 0000000000000008 by task kworker/u4:3/53
    
    CPU: 0 PID: 53 Comm: kworker/u4:3 Not tainted 5.19.0-rc3-next-20220621-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: kkcmd kcm_tx_work
    Call Trace:
    <TASK>
    __dump_stack lib/dump_stack.c:88 [inline]
    dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
    kasan_report+0xbe/0x1f0 mm/kasan/report.c:495
    check_region_inline mm/kasan/generic.c:183 [inline]
    kasan_check_range+0x13d/0x180 mm/kasan/generic.c:189
    instrument_atomic_write include/linux/instrumented.h:86 [inline]
    clear_bit include/asm-generic/bitops/instrumented-atomic.h:41 [inline]
    kcm_tx_work+0xff/0x160 net/kcm/kcmsock.c:742
    process_one_work+0x996/0x1610 kernel/workqueue.c:2289
    worker_thread+0x665/0x1080 kernel/workqueue.c:2436
    kthread+0x2e9/0x3a0 kernel/kthread.c:376
    ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:302
    </TASK>
    
    Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Tom Herbert <tom@herbertland.com>
    Link: https://lore.kernel.org/r/20221012133412.519394-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35309be06b6feded2ab2cafbc2bca8534c2fa41e
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Oct 11 15:07:48 2022 -0700

    tcp: cdg: allow tcp_cdg_release() to be called multiple times
    
    commit 72e560cb8c6f80fc2b4afc5d3634a32465e13a51 upstream.
    
    Apparently, mptcp is able to call tcp_disconnect() on an already
    disconnected flow. This is generally fine, unless current congestion
    control is CDG, because it might trigger a double-free [1]
    
    Instead of fixing MPTCP, and future bugs, we can make tcp_disconnect()
    more resilient.
    
    [1]
    BUG: KASAN: double-free in slab_free mm/slub.c:3539 [inline]
    BUG: KASAN: double-free in kfree+0xe2/0x580 mm/slub.c:4567
    
    CPU: 0 PID: 3645 Comm: kworker/0:7 Not tainted 6.0.0-syzkaller-02734-g0326074ff465 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/22/2022
    Workqueue: events mptcp_worker
    Call Trace:
    <TASK>
    __dump_stack lib/dump_stack.c:88 [inline]
    dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
    print_address_description mm/kasan/report.c:317 [inline]
    print_report.cold+0x2ba/0x719 mm/kasan/report.c:433
    kasan_report_invalid_free+0x81/0x190 mm/kasan/report.c:462
    ____kasan_slab_free+0x18b/0x1c0 mm/kasan/common.c:356
    kasan_slab_free include/linux/kasan.h:200 [inline]
    slab_free_hook mm/slub.c:1759 [inline]
    slab_free_freelist_hook+0x8b/0x1c0 mm/slub.c:1785
    slab_free mm/slub.c:3539 [inline]
    kfree+0xe2/0x580 mm/slub.c:4567
    tcp_disconnect+0x980/0x1e20 net/ipv4/tcp.c:3145
    __mptcp_close_ssk+0x5ca/0x7e0 net/mptcp/protocol.c:2327
    mptcp_do_fastclose net/mptcp/protocol.c:2592 [inline]
    mptcp_worker+0x78c/0xff0 net/mptcp/protocol.c:2627
    process_one_work+0x991/0x1610 kernel/workqueue.c:2289
    worker_thread+0x665/0x1080 kernel/workqueue.c:2436
    kthread+0x2e4/0x3a0 kernel/kthread.c:376
    ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306
    </TASK>
    
    Allocated by task 3671:
    kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
    kasan_set_track mm/kasan/common.c:45 [inline]
    set_alloc_info mm/kasan/common.c:437 [inline]
    ____kasan_kmalloc mm/kasan/common.c:516 [inline]
    ____kasan_kmalloc mm/kasan/common.c:475 [inline]
    __kasan_kmalloc+0xa9/0xd0 mm/kasan/common.c:525
    kmalloc_array include/linux/slab.h:640 [inline]
    kcalloc include/linux/slab.h:671 [inline]
    tcp_cdg_init+0x10d/0x170 net/ipv4/tcp_cdg.c:380
    tcp_init_congestion_control+0xab/0x550 net/ipv4/tcp_cong.c:193
    tcp_reinit_congestion_control net/ipv4/tcp_cong.c:217 [inline]
    tcp_set_congestion_control+0x96c/0xaa0 net/ipv4/tcp_cong.c:391
    do_tcp_setsockopt+0x505/0x2320 net/ipv4/tcp.c:3513
    tcp_setsockopt+0xd4/0x100 net/ipv4/tcp.c:3801
    mptcp_setsockopt+0x35f/0x2570 net/mptcp/sockopt.c:844
    __sys_setsockopt+0x2d6/0x690 net/socket.c:2252
    __do_sys_setsockopt net/socket.c:2263 [inline]
    __se_sys_setsockopt net/socket.c:2260 [inline]
    __x64_sys_setsockopt+0xba/0x150 net/socket.c:2260
    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+0x63/0xcd
    
    Freed by task 16:
    kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
    kasan_set_track+0x21/0x30 mm/kasan/common.c:45
    kasan_set_free_info+0x20/0x30 mm/kasan/generic.c:370
    ____kasan_slab_free mm/kasan/common.c:367 [inline]
    ____kasan_slab_free+0x166/0x1c0 mm/kasan/common.c:329
    kasan_slab_free include/linux/kasan.h:200 [inline]
    slab_free_hook mm/slub.c:1759 [inline]
    slab_free_freelist_hook+0x8b/0x1c0 mm/slub.c:1785
    slab_free mm/slub.c:3539 [inline]
    kfree+0xe2/0x580 mm/slub.c:4567
    tcp_cleanup_congestion_control+0x70/0x120 net/ipv4/tcp_cong.c:226
    tcp_v4_destroy_sock+0xdd/0x750 net/ipv4/tcp_ipv4.c:2254
    tcp_v6_destroy_sock+0x11/0x20 net/ipv6/tcp_ipv6.c:1969
    inet_csk_destroy_sock+0x196/0x440 net/ipv4/inet_connection_sock.c:1157
    tcp_done+0x23b/0x340 net/ipv4/tcp.c:4649
    tcp_rcv_state_process+0x40e7/0x4990 net/ipv4/tcp_input.c:6624
    tcp_v6_do_rcv+0x3fc/0x13c0 net/ipv6/tcp_ipv6.c:1525
    tcp_v6_rcv+0x2e8e/0x3830 net/ipv6/tcp_ipv6.c:1759
    ip6_protocol_deliver_rcu+0x2db/0x1950 net/ipv6/ip6_input.c:439
    ip6_input_finish+0x14c/0x2c0 net/ipv6/ip6_input.c:484
    NF_HOOK include/linux/netfilter.h:302 [inline]
    NF_HOOK include/linux/netfilter.h:296 [inline]
    ip6_input+0x9c/0xd0 net/ipv6/ip6_input.c:493
    dst_input include/net/dst.h:455 [inline]
    ip6_rcv_finish+0x193/0x2c0 net/ipv6/ip6_input.c:79
    ip_sabotage_in net/bridge/br_netfilter_hooks.c:874 [inline]
    ip_sabotage_in+0x1fa/0x260 net/bridge/br_netfilter_hooks.c:865
    nf_hook_entry_hookfn include/linux/netfilter.h:142 [inline]
    nf_hook_slow+0xc5/0x1f0 net/netfilter/core.c:614
    nf_hook.constprop.0+0x3ac/0x650 include/linux/netfilter.h:257
    NF_HOOK include/linux/netfilter.h:300 [inline]
    ipv6_rcv+0x9e/0x380 net/ipv6/ip6_input.c:309
    __netif_receive_skb_one_core+0x114/0x180 net/core/dev.c:5485
    __netif_receive_skb+0x1f/0x1c0 net/core/dev.c:5599
    netif_receive_skb_internal net/core/dev.c:5685 [inline]
    netif_receive_skb+0x12f/0x8d0 net/core/dev.c:5744
    NF_HOOK include/linux/netfilter.h:302 [inline]
    NF_HOOK include/linux/netfilter.h:296 [inline]
    br_pass_frame_up+0x303/0x410 net/bridge/br_input.c:68
    br_handle_frame_finish+0x909/0x1aa0 net/bridge/br_input.c:199
    br_nf_hook_thresh+0x2f8/0x3d0 net/bridge/br_netfilter_hooks.c:1041
    br_nf_pre_routing_finish_ipv6+0x695/0xef0 net/bridge/br_netfilter_ipv6.c:207
    NF_HOOK include/linux/netfilter.h:302 [inline]
    br_nf_pre_routing_ipv6+0x417/0x7c0 net/bridge/br_netfilter_ipv6.c:237
    br_nf_pre_routing+0x1496/0x1fe0 net/bridge/br_netfilter_hooks.c:507
    nf_hook_entry_hookfn include/linux/netfilter.h:142 [inline]
    nf_hook_bridge_pre net/bridge/br_input.c:255 [inline]
    br_handle_frame+0x9c9/0x12d0 net/bridge/br_input.c:399
    __netif_receive_skb_core+0x9fe/0x38f0 net/core/dev.c:5379
    __netif_receive_skb_one_core+0xae/0x180 net/core/dev.c:5483
    __netif_receive_skb+0x1f/0x1c0 net/core/dev.c:5599
    process_backlog+0x3a0/0x7c0 net/core/dev.c:5927
    __napi_poll+0xb3/0x6d0 net/core/dev.c:6494
    napi_poll net/core/dev.c:6561 [inline]
    net_rx_action+0x9c1/0xd90 net/core/dev.c:6672
    __do_softirq+0x1d0/0x9c8 kernel/softirq.c:571
    
    Fixes: 2b0a8c9eee81 ("tcp: add CDG congestion control")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e929ec98c0c3b10d9c07f3776df0c1a02d7a763e
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Oct 7 15:57:43 2022 -0700

    macvlan: enforce a consistent minimal mtu
    
    commit b64085b00044bdf3cd1c9825e9ef5b2e0feae91a upstream.
    
    macvlan should enforce a minimal mtu of 68, even at link creation.
    
    This patch avoids the current behavior (which could lead to crashes
    in ipv6 stack if the link is brought up)
    
    $ ip link add macvlan1 link eno1 mtu 8 type macvlan  # This should fail !
    $ ip link sh dev macvlan1
    5: macvlan1@eno1: <BROADCAST,MULTICAST> mtu 8 qdisc noop
        state DOWN mode DEFAULT group default qlen 1000
        link/ether 02:47:6c:24:74:82 brd ff:ff:ff:ff:ff:ff
    $ ip link set macvlan1 mtu 67
    Error: mtu less than device minimum.
    $ ip link set macvlan1 mtu 68
    $ ip link set macvlan1 mtu 8
    Error: mtu less than device minimum.
    
    Fixes: 91572088e3fd ("net: use core MTU range checking in core net infra")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95ebea5a15e465385bc2d8178d2f18b7cdba9b03
Author: Tadeusz Struk <tadeusz.struk@linaro.org>
Date:   Tue Mar 29 10:12:52 2022 -0700

    uapi/linux/stddef.h: Add include guards
    
    commit 55037ed7bdc62151a726f5685f88afa6a82959b1 upstream.
    
    Add include guard wrapper define to uapi/linux/stddef.h to prevent macro
    redefinition errors when stddef.h is included more than once. This was not
    needed before since the only contents already used a redefinition test.
    
    Signed-off-by: Tadeusz Struk <tadeusz.struk@linaro.org>
    Link: https://lore.kernel.org/r/20220329171252.57279-1-tadeusz.struk@linaro.org
    Fixes: 50d7bd38c3aa ("stddef: Introduce struct_group() helper macro")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f25add5ecf88de0f8ff2b27b6c0731a1f1b38ed
Author: Chen Jun <chenjun102@huawei.com>
Date:   Fri Nov 18 15:40:03 2022 -0800

    Input: i8042 - fix leaking of platform device on module removal
    
    [ Upstream commit 81cd7e8489278d28794e7b272950c3e00c344e44 ]
    
    Avoid resetting the module-wide i8042_platform_device pointer in
    i8042_probe() or i8042_remove(), so that the device can be properly
    destroyed by i8042_exit() on module unload.
    
    Fixes: 9222ba68c3f4 ("Input: i8042 - add deferred probe support")
    Signed-off-by: Chen Jun <chenjun102@huawei.com>
    Link: https://lore.kernel.org/r/20221109034148.23821-1-chenjun102@huawei.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7d606ae1abcc3eab5408e42444d789dc7def51b8
Author: Li Huafei <lihuafei1@huawei.com>
Date:   Fri Nov 18 10:15:34 2022 +0900

    kprobes: Skip clearing aggrprobe's post_handler in kprobe-on-ftrace case
    
    [ Upstream commit 5dd7caf0bdc5d0bae7cf9776b4d739fb09bd5ebb ]
    
    In __unregister_kprobe_top(), if the currently unregistered probe has
    post_handler but other child probes of the aggrprobe do not have
    post_handler, the post_handler of the aggrprobe is cleared. If this is
    a ftrace-based probe, there is a problem. In later calls to
    disarm_kprobe(), we will use kprobe_ftrace_ops because post_handler is
    NULL. But we're armed with kprobe_ipmodify_ops. This triggers a WARN in
    __disarm_kprobe_ftrace() and may even cause use-after-free:
    
      Failed to disarm kprobe-ftrace at kernel_clone+0x0/0x3c0 (error -2)
      WARNING: CPU: 5 PID: 137 at kernel/kprobes.c:1135 __disarm_kprobe_ftrace.isra.21+0xcf/0xe0
      Modules linked in: testKprobe_007(-)
      CPU: 5 PID: 137 Comm: rmmod Not tainted 6.1.0-rc4-dirty #18
      [...]
      Call Trace:
       <TASK>
       __disable_kprobe+0xcd/0xe0
       __unregister_kprobe_top+0x12/0x150
       ? mutex_lock+0xe/0x30
       unregister_kprobes.part.23+0x31/0xa0
       unregister_kprobe+0x32/0x40
       __x64_sys_delete_module+0x15e/0x260
       ? do_user_addr_fault+0x2cd/0x6b0
       do_syscall_64+0x3a/0x90
       entry_SYSCALL_64_after_hwframe+0x63/0xcd
       [...]
    
    For the kprobe-on-ftrace case, we keep the post_handler setting to
    identify this aggrprobe armed with kprobe_ipmodify_ops. This way we
    can disarm it correctly.
    
    Link: https://lore.kernel.org/all/20221112070000.35299-1-lihuafei1@huawei.com/
    
    Fixes: 0bc11ed5ab60 ("kprobes: Allow kprobes coexist with livepatch")
    Reported-by: Zhao Gongyi <zhaogongyi@huawei.com>
    Suggested-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Li Huafei <lihuafei1@huawei.com>
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 89ece5ff7dbed52348502db603d5c6bc52b90218
Author: Yuan Can <yuancan@huawei.com>
Date:   Thu Nov 17 08:44:21 2022 +0000

    scsi: scsi_debug: Fix possible UAF in sdebug_add_host_helper()
    
    [ Upstream commit e208a1d795a08d1ac0398c79ad9c58106531bcc5 ]
    
    If device_register() fails in sdebug_add_host_helper(), it will goto clean
    and sdbg_host will be freed, but sdbg_host->host_list will not be removed
    from sdebug_host_list, then list traversal may cause UAF. Fix it.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Yuan Can <yuancan@huawei.com>
    Link: https://lore.kernel.org/r/20221117084421.58918-1-yuancan@huawei.com
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 75205f1b47a88c3fac4f30bd7567e89b2887c7fd
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Nov 15 09:50:42 2022 +0800

    scsi: target: tcm_loop: Fix possible name leak in tcm_loop_setup_hba_bus()
    
    [ Upstream commit bc68e428d4963af0201e92159629ab96948f0893 ]
    
    If device_register() fails in tcm_loop_setup_hba_bus(), the name allocated
    by dev_set_name() need be freed. As comment of device_register() says, it
    should use put_device() to give up the reference in the error path. So fix
    this by calling put_device(), then the name can be freed in kobject_cleanup().
    The 'tl_hba' will be freed in tcm_loop_release_adapter(), so it don't need
    goto error label in this case.
    
    Fixes: 3703b2c5d041 ("[SCSI] tcm_loop: Add multi-fabric Linux/SCSI LLD fabric module")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20221115015042.3652261-1-yangyingliang@huawei.com
    Reviewed-by: Mike Christie <michael.chritie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e9334436d78d1cf12919807e4124032f02650d6
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Tue Nov 15 22:24:00 2022 +0800

    net: use struct_group to copy ip/ipv6 header addresses
    
    [ Upstream commit 58e0be1ef6118c5352b56a4d06e974c5599993a5 ]
    
    kernel test robot reported warnings when build bonding module with
    make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/net/bonding/:
    
                     from ../drivers/net/bonding/bond_main.c:35:
    In function ‘fortify_memcpy_chk’,
        inlined from ‘iph_to_flow_copy_v4addrs’ at ../include/net/ip.h:566:2,
        inlined from ‘bond_flow_ip’ at ../drivers/net/bonding/bond_main.c:3984:3:
    ../include/linux/fortify-string.h:413:25: warning: call to ‘__read_overflow2_field’ declared with attribute warning: detected read beyond size of f
    ield (2nd parameter); maybe use struct_group()? [-Wattribute-warning]
      413 |                         __read_overflow2_field(q_size_field, size);
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In function ‘fortify_memcpy_chk’,
        inlined from ‘iph_to_flow_copy_v6addrs’ at ../include/net/ipv6.h:900:2,
        inlined from ‘bond_flow_ip’ at ../drivers/net/bonding/bond_main.c:3994:3:
    ../include/linux/fortify-string.h:413:25: warning: call to ‘__read_overflow2_field’ declared with attribute warning: detected read beyond size of f
    ield (2nd parameter); maybe use struct_group()? [-Wattribute-warning]
      413 |                         __read_overflow2_field(q_size_field, size);
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    This is because we try to copy the whole ip/ip6 address to the flow_key,
    while we only point the to ip/ip6 saddr. Note that since these are UAPI
    headers, __struct_group() is used to avoid the compiler warnings.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Fixes: c3f8324188fa ("net: Add full IPv6 addresses to flow_keys")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Link: https://lore.kernel.org/r/20221115142400.1204786-1-liuhangbin@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9fd7bdaffe0e89833f4b1c1d3abd43023e951ec1
Author: Kees Cook <keescook@chromium.org>
Date:   Mon May 17 20:01:15 2021 -0700

    stddef: Introduce struct_group() helper macro
    
    [ Upstream commit 50d7bd38c3aafc4749e05e8d7fcb616979143602 ]
    
    Kernel code has a regular need to describe groups of members within a
    structure usually when they need to be copied or initialized separately
    from the rest of the surrounding structure. The generally accepted design
    pattern in C is to use a named sub-struct:
    
            struct foo {
                    int one;
                    struct {
                            int two;
                            int three, four;
                    } thing;
                    int five;
            };
    
    This would allow for traditional references and sizing:
    
            memcpy(&dst.thing, &src.thing, sizeof(dst.thing));
    
    However, doing this would mean that referencing struct members enclosed
    by such named structs would always require including the sub-struct name
    in identifiers:
    
            do_something(dst.thing.three);
    
    This has tended to be quite inflexible, especially when such groupings
    need to be added to established code which causes huge naming churn.
    Three workarounds exist in the kernel for this problem, and each have
    other negative properties.
    
    To avoid the naming churn, there is a design pattern of adding macro
    aliases for the named struct:
    
            #define f_three thing.three
    
    This ends up polluting the global namespace, and makes it difficult to
    search for identifiers.
    
    Another common work-around in kernel code avoids the pollution by avoiding
    the named struct entirely, instead identifying the group's boundaries using
    either a pair of empty anonymous structs of a pair of zero-element arrays:
    
            struct foo {
                    int one;
                    struct { } start;
                    int two;
                    int three, four;
                    struct { } finish;
                    int five;
            };
    
            struct foo {
                    int one;
                    int start[0];
                    int two;
                    int three, four;
                    int finish[0];
                    int five;
            };
    
    This allows code to avoid needing to use a sub-struct named for member
    references within the surrounding structure, but loses the benefits of
    being able to actually use such a struct, making it rather fragile. Using
    these requires open-coded calculation of sizes and offsets. The efforts
    made to avoid common mistakes include lots of comments, or adding various
    BUILD_BUG_ON()s. Such code is left with no way for the compiler to reason
    about the boundaries (e.g. the "start" object looks like it's 0 bytes
    in length), making bounds checking depend on open-coded calculations:
    
            if (length > offsetof(struct foo, finish) -
                         offsetof(struct foo, start))
                    return -EINVAL;
            memcpy(&dst.start, &src.start, offsetof(struct foo, finish) -
                                           offsetof(struct foo, start));
    
    However, the vast majority of places in the kernel that operate on
    groups of members do so without any identification of the grouping,
    relying either on comments or implicit knowledge of the struct contents,
    which is even harder for the compiler to reason about, and results in
    even more fragile manual sizing, usually depending on member locations
    outside of the region (e.g. to copy "two" and "three", use the start of
    "four" to find the size):
    
            BUILD_BUG_ON((offsetof(struct foo, four) <
                          offsetof(struct foo, two)) ||
                         (offsetof(struct foo, four) <
                          offsetof(struct foo, three));
            if (length > offsetof(struct foo, four) -
                         offsetof(struct foo, two))
                    return -EINVAL;
            memcpy(&dst.two, &src.two, length);
    
    In order to have a regular programmatic way to describe a struct
    region that can be used for references and sizing, can be examined for
    bounds checking, avoids forcing the use of intermediate identifiers,
    and avoids polluting the global namespace, introduce the struct_group()
    macro. This macro wraps the member declarations to create an anonymous
    union of an anonymous struct (no intermediate name) and a named struct
    (for references and sizing):
    
            struct foo {
                    int one;
                    struct_group(thing,
                            int two;
                            int three, four;
                    );
                    int five;
            };
    
            if (length > sizeof(src.thing))
                    return -EINVAL;
            memcpy(&dst.thing, &src.thing, length);
            do_something(dst.three);
    
    There are some rare cases where the resulting struct_group() needs
    attributes added, so struct_group_attr() is also introduced to allow
    for specifying struct attributes (e.g. __align(x) or __packed).
    Additionally, there are places where such declarations would like to
    have the struct be tagged, so struct_group_tagged() is added.
    
    Given there is a need for a handful of UAPI uses too, the underlying
    __struct_group() macro has been defined in UAPI so it can be used there
    too.
    
    To avoid confusing scripts/kernel-doc, hide the macro from its struct
    parsing.
    
    Co-developed-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Acked-by: Gustavo A. R. Silva <gustavoars@kernel.org>
    Link: https://lore.kernel.org/lkml/20210728023217.GC35706@embeddedor
    Enhanced-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Link: https://lore.kernel.org/lkml/41183a98-bdb9-4ad6-7eab-5a7292a6df84@rasmusvillemoes.dk
    Enhanced-by: Dan Williams <dan.j.williams@intel.com>
    Link: https://lore.kernel.org/lkml/1d9a2e6df2a9a35b2cdd50a9a68cac5991e7e5f0.camel@intel.com
    Enhanced-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://lore.kernel.org/lkml/YQKa76A6XuFqgM03@phenom.ffwll.local
    Acked-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Stable-dep-of: 58e0be1ef611 ("net: use struct_group to copy ip/ipv6 header addresses")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47c3bdd95505bc28c264ce1e78b985cdb05cc15f
Author: Lukas Wunner <lukas@wunner.de>
Date:   Fri Jul 1 22:47:51 2022 +0200

    usbnet: smsc95xx: Fix deadlock on runtime resume
    
    [ Upstream commit 7b960c967f2aa01ab8f45c5a0bd78e754cffdeee ]
    
    Commit 05b35e7eb9a1 ("smsc95xx: add phylib support") amended
    smsc95xx_resume() to call phy_init_hw().  That function waits for the
    device to runtime resume even though it is placed in the runtime resume
    path, causing a deadlock.
    
    The problem is that phy_init_hw() calls down to smsc95xx_mdiobus_read(),
    which never uses the _nopm variant of usbnet_read_cmd().
    
    Commit b4df480f68ae ("usbnet: smsc95xx: add reset_resume function with
    reset operation") causes a similar deadlock on resume if the device was
    already runtime suspended when entering system sleep:
    
    That's because the commit introduced smsc95xx_reset_resume(), which
    calls down to smsc95xx_reset(), which neglects to use _nopm accessors.
    
    Fix by auto-detecting whether a device access is performed by the
    suspend/resume task_struct and use the _nopm variant if so.  This works
    because the PM core guarantees that suspend/resume callbacks are run in
    task context.
    
    Stacktrace for posterity:
    
      INFO: task kworker/2:1:49 blocked for more than 122 seconds.
      Workqueue: usb_hub_wq hub_event
      schedule
      rpm_resume
      __pm_runtime_resume
      usb_autopm_get_interface
      usbnet_read_cmd
      __smsc95xx_read_reg
      __smsc95xx_phy_wait_not_busy
      __smsc95xx_mdio_read
      smsc95xx_mdiobus_read
      __mdiobus_read
      mdiobus_read
      smsc_phy_reset
      phy_init_hw
      smsc95xx_resume
      usb_resume_interface
      usb_resume_both
      usb_runtime_resume
      __rpm_callback
      rpm_callback
      rpm_resume
      __pm_runtime_resume
      usb_autoresume_device
      hub_event
      process_one_work
    
    Fixes: b4df480f68ae ("usbnet: smsc95xx: add reset_resume function with reset operation")
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: stable@vger.kernel.org # v3.16+
    Cc: Andre Edich <andre.edich@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8208c266fe279d91751224089557cf8e5bd628cc
Author: Steven Rostedt (Google) <rostedt@goodmis.org>
Date:   Fri Oct 21 12:30:13 2022 -0400

    ring-buffer: Include dropped pages in counting dirty patches
    
    [ Upstream commit 31029a8b2c7e656a0289194ef16415050ae4c4ac ]
    
    The function ring_buffer_nr_dirty_pages() was created to find out how many
    pages are filled in the ring buffer. There's two running counters. One is
    incremented whenever a new page is touched (pages_touched) and the other
    is whenever a page is read (pages_read). The dirty count is the number
    touched minus the number read. This is used to determine if a blocked task
    should be woken up if the percentage of the ring buffer it is waiting for
    is hit.
    
    The problem is that it does not take into account dropped pages (when the
    new writes overwrite pages that were not read). And then the dirty pages
    will always be greater than the percentage.
    
    This makes the "buffer_percent" file inaccurate, as the number of dirty
    pages end up always being larger than the percentage, event when it's not
    and this causes user space to be woken up more than it wants to be.
    
    Add a new counter to keep track of lost pages, and include that in the
    accounting of dirty pages so that it is actually accurate.
    
    Link: https://lkml.kernel.org/r/20221021123013.55fb6055@gandalf.local.home
    
    Fixes: 2c2b0a78b3739 ("ring-buffer: Add percentage of ring buffer full to wake up reader")
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 36b5095b07ac3256203694f062f096f5435854f7
Author: Gong, Sishuai <sishuai@purdue.edu>
Date:   Tue Apr 27 15:04:24 2021 +0000

    net: fix a concurrency bug in l2tp_tunnel_register()
    
    [ Upstream commit 69e16d01d1de4f1249869de342915f608feb55d5 ]
    
    l2tp_tunnel_register() registers a tunnel without fully
    initializing its attribute. This can allow another kernel thread
    running l2tp_xmit_core() to access the uninitialized data and
    then cause a kernel NULL pointer dereference error, as shown below.
    
    Thread 1    Thread 2
    //l2tp_tunnel_register()
    list_add_rcu(&tunnel->list, &pn->l2tp_tunnel_list);
               //pppol2tp_connect()
               tunnel = l2tp_tunnel_get(sock_net(sk), info.tunnel_id);
               // Fetch the new tunnel
               ...
               //l2tp_xmit_core()
               struct sock *sk = tunnel->sock;
               ...
               bh_lock_sock(sk);
               //Null pointer error happens
    tunnel->sock = sk;
    
    Fix this bug by initializing tunnel->sock before adding the
    tunnel into l2tp_tunnel_list.
    
    Reviewed-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Sishuai Gong <sishuai@purdue.edu>
    Reported-by: Sishuai Gong <sishuai@purdue.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: b68777d54fac ("l2tp: Serialize access to sk_user_data with sk_callback_lock")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 023435a095d22bcbbaeea7e3a8c534b5c57d0d82
Author: Keith Busch <kbusch@kernel.org>
Date:   Thu Sep 22 08:13:47 2022 -0700

    nvme: ensure subsystem reset is single threaded
    
    commit 1e866afd4bcdd01a70a5eddb4371158d3035ce03 upstream.
    
    The subsystem reset writes to a register, so we have to ensure the
    device state is capable of handling that otherwise the driver may access
    unmapped registers. Use the state machine to ensure the subsystem reset
    doesn't try to write registers on a device already undergoing this type
    of reset.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=214771
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9a5ecf24180f36bab967b4b1dbb112a0fa37255
Author: Keith Busch <kbusch@kernel.org>
Date:   Thu Sep 22 07:54:06 2022 -0700

    nvme: restrict management ioctls to admin
    
    commit 23e085b2dead13b51fe86d27069895b740f749c0 upstream.
    
    The passthrough commands already have this restriction, but the other
    operations do not. Require the same capabilities for all users as all of
    these operations, which include resets and rescans, can be disruptive.
    
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e2f14d77223ab7c0bae83f8f2ab3bde6a2bb028
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Sat Nov 12 17:15:08 2022 +0200

    perf/x86/intel/pt: Fix sampling using single range output
    
    commit ce0d998be9274dd3a3d971cbeaa6fe28fd2c3062 upstream.
    
    Deal with errata TGL052, ADL037 and RPL017 "Trace May Contain Incorrect
    Data When Configured With Single Range Output Larger Than 4KB" by
    disabling single range output whenever larger than 4KB.
    
    Fixes: 670638477aed ("perf/x86/intel/pt: Opportunistically use single range output mode")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20221112151508.13768-1-adrian.hunter@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62634b43d3c4e1bf62fd540196f7081bf0885c0a
Author: Alexander Potapenko <glider@google.com>
Date:   Fri Nov 4 18:58:49 2022 +0100

    misc/vmw_vmci: fix an infoleak in vmci_host_do_receive_datagram()
    
    commit e5b0d06d9b10f5f43101bd6598b076c347f9295f upstream.
    
    `struct vmci_event_qp` allocated by qp_notify_peer() contains padding,
    which may carry uninitialized data to the userspace, as observed by
    KMSAN:
    
      BUG: KMSAN: kernel-infoleak in instrument_copy_to_user ./include/linux/instrumented.h:121
       instrument_copy_to_user ./include/linux/instrumented.h:121
       _copy_to_user+0x5f/0xb0 lib/usercopy.c:33
       copy_to_user ./include/linux/uaccess.h:169
       vmci_host_do_receive_datagram drivers/misc/vmw_vmci/vmci_host.c:431
       vmci_host_unlocked_ioctl+0x33d/0x43d0 drivers/misc/vmw_vmci/vmci_host.c:925
       vfs_ioctl fs/ioctl.c:51
      ...
    
      Uninit was stored to memory at:
       kmemdup+0x74/0xb0 mm/util.c:131
       dg_dispatch_as_host drivers/misc/vmw_vmci/vmci_datagram.c:271
       vmci_datagram_dispatch+0x4f8/0xfc0 drivers/misc/vmw_vmci/vmci_datagram.c:339
       qp_notify_peer+0x19a/0x290 drivers/misc/vmw_vmci/vmci_queue_pair.c:1479
       qp_broker_attach drivers/misc/vmw_vmci/vmci_queue_pair.c:1662
       qp_broker_alloc+0x2977/0x2f30 drivers/misc/vmw_vmci/vmci_queue_pair.c:1750
       vmci_qp_broker_alloc+0x96/0xd0 drivers/misc/vmw_vmci/vmci_queue_pair.c:1940
       vmci_host_do_alloc_queuepair drivers/misc/vmw_vmci/vmci_host.c:488
       vmci_host_unlocked_ioctl+0x24fd/0x43d0 drivers/misc/vmw_vmci/vmci_host.c:927
      ...
    
      Local variable ev created at:
       qp_notify_peer+0x54/0x290 drivers/misc/vmw_vmci/vmci_queue_pair.c:1456
       qp_broker_attach drivers/misc/vmw_vmci/vmci_queue_pair.c:1662
       qp_broker_alloc+0x2977/0x2f30 drivers/misc/vmw_vmci/vmci_queue_pair.c:1750
    
      Bytes 28-31 of 48 are uninitialized
      Memory access of size 48 starts at ffff888035155e00
      Data copied to user address 0000000020000100
    
    Use memset() to prevent the infoleaks.
    
    Also speculatively fix qp_notify_peer_local(), which may suffer from the
    same problem.
    
    Reported-by: syzbot+39be4da489ed2493ba25@syzkaller.appspotmail.com
    Cc: stable <stable@kernel.org>
    Fixes: 06164d2b72aa ("VMCI: queue pairs implementation.")
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Reviewed-by: Vishnu Dasa <vdasa@vmware.com>
    Link: https://lore.kernel.org/r/20221104175849.2782567-1-glider@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1eb46a65b09a66c93219ca778376cecc04333f4
Author: Shuah Khan <skhan@linuxfoundation.org>
Date:   Tue Oct 11 11:14:17 2022 -0600

    docs: update mediator contact information in CoC doc
    
    commit 5fddf8962b429b8303c4a654291ecb6e61a7d747 upstream.
    
    Update mediator contact information in CoC interpretation document.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20221011171417.34286-1-skhan@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4423866d31a06a810db22062ed13389416a66b22
Author: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Date:   Mon Nov 14 16:31:00 2022 +0800

    mmc: sdhci-pci: Fix possible memory leak caused by missing pci_dev_put()
    
    commit 222cfa0118aa68687ace74aab8fdf77ce8fbd7e6 upstream.
    
    pci_get_device() will increase the reference count for the returned
    pci_dev. We need to use pci_dev_put() to decrease the reference count
    before amd_probe() returns. There is no problem for the 'smbus_dev ==
    NULL' branch because pci_dev_put() can also handle the NULL input
    parameter case.
    
    Fixes: 659c9bc114a8 ("mmc: sdhci-pci: Build o2micro support in the same module")
    Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20221114083100.149200-1-wangxiongfeng2@huawei.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 440653a180f53cbc57e1895c8c14ebb349cf5fd8
Author: Chevron Li <chevron.li@bayhubtech.com>
Date:   Fri Nov 4 02:55:12 2022 -0700

    mmc: sdhci-pci-o2micro: fix card detect fail issue caused by CD# debounce timeout
    
    commit 096cc0cddf58232bded309336961784f1d1c85f8 upstream.
    
    The SD card is recognized failed sometimes when resume from suspend.
    Because CD# debounce time too long then card present report wrong.
    Finally, card is recognized failed.
    
    Signed-off-by: Chevron Li <chevron.li@bayhubtech.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20221104095512.4068-1-chevron.li@bayhubtech.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e70b141317826c5c1f377b082497a83bfe9094e
Author: Yann Gautier <yann.gautier@foss.st.com>
Date:   Fri Oct 28 09:37:40 2022 +0200

    mmc: core: properly select voltage range without power cycle
    
    commit 39a72dbfe188291b156dd6523511e3d5761ce775 upstream.
    
    In mmc_select_voltage(), if there is no full power cycle, the voltage
    range selected at the end of the function will be on a single range
    (e.g. 3.3V/3.4V). To keep a range around the selected voltage (3.2V/3.4V),
    the mask shift should be reduced by 1.
    
    This issue was triggered by using a specific SD-card (Verbatim Premium
    16GB UHS-1) on an STM32MP157C-DK2 board. This board cannot do UHS modes
    and there is no power cycle. And the card was failing to switch to
    high-speed mode. When adding the range 3.2V/3.3V for this card with the
    proposed shift change, the card can switch to high-speed mode.
    
    Fixes: ce69d37b7d8f ("mmc: core: Prevent violation of specs while initializing cards")
    Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20221028073740.7259-1-yann.gautier@foss.st.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05b0f6624dda6c9106023aca6779c56908599d69
Author: Brian Norris <briannorris@chromium.org>
Date:   Wed Oct 19 18:10:53 2022 -0700

    firmware: coreboot: Register bus in module init
    
    commit 65946690ed8d972fdb91a74ee75ac0f0f0d68321 upstream.
    
    The coreboot_table driver registers a coreboot bus while probing a
    "coreboot_table" device representing the coreboot table memory region.
    Probing this device (i.e., registering the bus) is a dependency for the
    module_init() functions of any driver for this bus (e.g.,
    memconsole-coreboot.c / memconsole_driver_init()).
    
    With synchronous probe, this dependency works OK, as the link order in
    the Makefile ensures coreboot_table_driver_init() (and thus,
    coreboot_table_probe()) completes before a coreboot device driver tries
    to add itself to the bus.
    
    With asynchronous probe, however, coreboot_table_probe() may race with
    memconsole_driver_init(), and so we're liable to hit one of these two:
    
    1. coreboot_driver_register() eventually hits "[...] the bus was not
       initialized.", and the memconsole driver fails to register; or
    2. coreboot_driver_register() gets past #1, but still races with
       bus_register() and hits some other undefined/crashing behavior (e.g.,
       in driver_find() [1])
    
    We can resolve this by registering the bus in our initcall, and only
    deferring "device" work (scanning the coreboot memory region and
    creating sub-devices) to probe().
    
    [1] Example failure, using 'driver_async_probe=*' kernel command line:
    
    [    0.114217] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010
    ...
    [    0.114307] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 6.1.0-rc1 #63
    [    0.114316] Hardware name: Google Scarlet (DT)
    ...
    [    0.114488] Call trace:
    [    0.114494]  _raw_spin_lock+0x34/0x60
    [    0.114502]  kset_find_obj+0x28/0x84
    [    0.114511]  driver_find+0x30/0x50
    [    0.114520]  driver_register+0x64/0x10c
    [    0.114528]  coreboot_driver_register+0x30/0x3c
    [    0.114540]  memconsole_driver_init+0x24/0x30
    [    0.114550]  do_one_initcall+0x154/0x2e0
    [    0.114560]  do_initcall_level+0x134/0x160
    [    0.114571]  do_initcalls+0x60/0xa0
    [    0.114579]  do_basic_setup+0x28/0x34
    [    0.114588]  kernel_init_freeable+0xf8/0x150
    [    0.114596]  kernel_init+0x2c/0x12c
    [    0.114607]  ret_from_fork+0x10/0x20
    [    0.114624] Code: 5280002b 1100054a b900092a f9800011 (885ffc01)
    [    0.114631] ---[ end trace 0000000000000000 ]---
    
    Fixes: b81e3140e412 ("firmware: coreboot: Make bus registration symmetric")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20221019180934.1.If29e167d8a4771b0bf4a39c89c6946ed764817b9@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit deda86a0d84d7cf83cee0b3932bfbbb8c0d7b401
Author: Tina Zhang <tina.zhang@intel.com>
Date:   Wed Nov 16 13:15:44 2022 +0800

    iommu/vt-d: Set SRE bit only when hardware has SRS cap
    
    commit 7fc961cf7ffcb130c4e93ee9a5628134f9de700a upstream.
    
    SRS cap is the hardware cap telling if the hardware IOMMU can support
    requests seeking supervisor privilege or not. SRE bit in scalable-mode
    PASID table entry is treated as Reserved(0) for implementation not
    supporting SRS cap.
    
    Checking SRS cap before setting SRE bit can avoid the non-recoverable
    fault of "Non-zero reserved field set in PASID Table Entry" caused by
    setting SRE bit while there is no SRS cap support. The fault messages
    look like below:
    
     DMAR: DRHD: handling fault status reg 2
     DMAR: [DMA Read NO_PASID] Request device [00:0d.0] fault addr 0x1154e1000
           [fault reason 0x5a]
           SM: Non-zero reserved field set in PASID Table Entry
    
    Fixes: 6f7db75e1c46 ("iommu/vt-d: Add second level page table interface")
    Cc: stable@vger.kernel.org
    Signed-off-by: Tina Zhang <tina.zhang@intel.com>
    Link: https://lore.kernel.org/r/20221115070346.1112273-1-tina.zhang@intel.com
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/20221116051544.26540-3-baolu.lu@linux.intel.com
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2c7d8f58e9cde8ac8d1f75e9d66c2a813ffe0ab
Author: Benjamin Block <bblock@linux.ibm.com>
Date:   Wed Nov 16 11:50:37 2022 +0100

    scsi: zfcp: Fix double free of FSF request when qdio send fails
    
    commit 0954256e970ecf371b03a6c9af2cf91b9c4085ff upstream.
    
    We used to use the wrong type of integer in 'zfcp_fsf_req_send()' to cache
    the FSF request ID when sending a new FSF request. This is used in case the
    sending fails and we need to remove the request from our internal hash
    table again (so we don't keep an invalid reference and use it when we free
    the request again).
    
    In 'zfcp_fsf_req_send()' we used to cache the ID as 'int' (signed and 32
    bit wide), but the rest of the zfcp code (and the firmware specification)
    handles the ID as 'unsigned long'/'u64' (unsigned and 64 bit wide [s390x
    ELF ABI]).  For one this has the obvious problem that when the ID grows
    past 32 bit (this can happen reasonably fast) it is truncated to 32 bit
    when storing it in the cache variable and so doesn't match the original ID
    anymore.  The second less obvious problem is that even when the original ID
    has not yet grown past 32 bit, as soon as the 32nd bit is set in the
    original ID (0x80000000 = 2'147'483'648) we will have a mismatch when we
    cast it back to 'unsigned long'. As the cached variable is of a signed
    type, the compiler will choose a sign-extending instruction to load the 32
    bit variable into a 64 bit register (e.g.: 'lgf %r11,188(%r15)'). So once
    we pass the cached variable into 'zfcp_reqlist_find_rm()' to remove the
    request again all the leading zeros will be flipped to ones to extend the
    sign and won't match the original ID anymore (this has been observed in
    practice).
    
    If we can't successfully remove the request from the hash table again after
    'zfcp_qdio_send()' fails (this happens regularly when zfcp cannot notify
    the adapter about new work because the adapter is already gone during
    e.g. a ChpID toggle) we will end up with a double free.  We unconditionally
    free the request in the calling function when 'zfcp_fsf_req_send()' fails,
    but because the request is still in the hash table we end up with a stale
    memory reference, and once the zfcp adapter is either reset during recovery
    or shutdown we end up freeing the same memory twice.
    
    The resulting stack traces vary depending on the kernel and have no direct
    correlation to the place where the bug occurs. Here are three examples that
    have been seen in practice:
    
      list_del corruption. next->prev should be 00000001b9d13800, but was 00000000dead4ead. (next=00000001bd131a00)
      ------------[ cut here ]------------
      kernel BUG at lib/list_debug.c:62!
      monitor event: 0040 ilc:2 [#1] PREEMPT SMP
      Modules linked in: ...
      CPU: 9 PID: 1617 Comm: zfcperp0.0.1740 Kdump: loaded
      Hardware name: ...
      Krnl PSW : 0704d00180000000 00000003cbeea1f8 (__list_del_entry_valid+0x98/0x140)
                 R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 RI:0 EA:3
      Krnl GPRS: 00000000916d12f1 0000000080000000 000000000000006d 00000003cb665cd6
                 0000000000000001 0000000000000000 0000000000000000 00000000d28d21e8
                 00000000d3844000 00000380099efd28 00000001bd131a00 00000001b9d13800
                 00000000d3290100 0000000000000000 00000003cbeea1f4 00000380099efc70
      Krnl Code: 00000003cbeea1e8: c020004f68a7        larl    %r2,00000003cc8d7336
                 00000003cbeea1ee: c0e50027fd65        brasl   %r14,00000003cc3e9cb8
                #00000003cbeea1f4: af000000            mc      0,0
                >00000003cbeea1f8: c02000920440        larl    %r2,00000003cd12aa78
                 00000003cbeea1fe: c0e500289c25        brasl   %r14,00000003cc3fda48
                 00000003cbeea204: b9040043            lgr     %r4,%r3
                 00000003cbeea208: b9040051            lgr     %r5,%r1
                 00000003cbeea20c: b9040032            lgr     %r3,%r2
      Call Trace:
       [<00000003cbeea1f8>] __list_del_entry_valid+0x98/0x140
      ([<00000003cbeea1f4>] __list_del_entry_valid+0x94/0x140)
       [<000003ff7ff502fe>] zfcp_fsf_req_dismiss_all+0xde/0x150 [zfcp]
       [<000003ff7ff49cd0>] zfcp_erp_strategy_do_action+0x160/0x280 [zfcp]
       [<000003ff7ff4a22e>] zfcp_erp_strategy+0x21e/0xca0 [zfcp]
       [<000003ff7ff4ad34>] zfcp_erp_thread+0x84/0x1a0 [zfcp]
       [<00000003cb5eece8>] kthread+0x138/0x150
       [<00000003cb557f3c>] __ret_from_fork+0x3c/0x60
       [<00000003cc4172ea>] ret_from_fork+0xa/0x40
      INFO: lockdep is turned off.
      Last Breaking-Event-Address:
       [<00000003cc3e9d04>] _printk+0x4c/0x58
      Kernel panic - not syncing: Fatal exception: panic_on_oops
    
    or:
    
      Unable to handle kernel pointer dereference in virtual kernel address space
      Failing address: 6b6b6b6b6b6b6000 TEID: 6b6b6b6b6b6b6803
      Fault in home space mode while using kernel ASCE.
      AS:0000000063b10007 R3:0000000000000024
      Oops: 0038 ilc:3 [#1] SMP
      Modules linked in: ...
      CPU: 10 PID: 0 Comm: swapper/10 Kdump: loaded
      Hardware name: ...
      Krnl PSW : 0404d00180000000 000003ff7febaf8e (zfcp_fsf_reqid_check+0x86/0x158 [zfcp])
                 R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 RI:0 EA:3
      Krnl GPRS: 5a6f1cfa89c49ac3 00000000aff2c4c8 6b6b6b6b6b6b6b6b 00000000000002a8
                 0000000000000000 0000000000000055 0000000000000000 00000000a8515800
                 0700000000000000 00000000a6e14500 00000000aff2c000 000000008003c44c
                 000000008093c700 0000000000000010 00000380009ebba8 00000380009ebb48
      Krnl Code: 000003ff7febaf7e: a7f4003d            brc     15,000003ff7febaff8
                 000003ff7febaf82: e32020000004        lg      %r2,0(%r2)
                #000003ff7febaf88: ec2100388064        cgrj    %r2,%r1,8,000003ff7febaff8
                >000003ff7febaf8e: e3b020100020        cg      %r11,16(%r2)
                 000003ff7febaf94: a774fff7            brc     7,000003ff7febaf82
                 000003ff7febaf98: ec280030007c        cgij    %r2,0,8,000003ff7febaff8
                 000003ff7febaf9e: e31020080004        lg      %r1,8(%r2)
                 000003ff7febafa4: e33020000004        lg      %r3,0(%r2)
      Call Trace:
       [<000003ff7febaf8e>] zfcp_fsf_reqid_check+0x86/0x158 [zfcp]
       [<000003ff7febbdbc>] zfcp_qdio_int_resp+0x6c/0x170 [zfcp]
       [<000003ff7febbf90>] zfcp_qdio_irq_tasklet+0xd0/0x108 [zfcp]
       [<0000000061d90a04>] tasklet_action_common.constprop.0+0xdc/0x128
       [<000000006292f300>] __do_softirq+0x130/0x3c0
       [<0000000061d906c6>] irq_exit_rcu+0xfe/0x118
       [<000000006291e818>] do_io_irq+0xc8/0x168
       [<000000006292d516>] io_int_handler+0xd6/0x110
       [<000000006292d596>] psw_idle_exit+0x0/0xa
      ([<0000000061d3be50>] arch_cpu_idle+0x40/0xd0)
       [<000000006292ceea>] default_idle_call+0x52/0xf8
       [<0000000061de4fa4>] do_idle+0xd4/0x168
       [<0000000061de51fe>] cpu_startup_entry+0x36/0x40
       [<0000000061d4faac>] smp_start_secondary+0x12c/0x138
       [<000000006292d88e>] restart_int_handler+0x6e/0x90
      Last Breaking-Event-Address:
       [<000003ff7febaf94>] zfcp_fsf_reqid_check+0x8c/0x158 [zfcp]
      Kernel panic - not syncing: Fatal exception in interrupt
    
    or:
    
      Unable to handle kernel pointer dereference in virtual kernel address space
      Failing address: 523b05d3ae76a000 TEID: 523b05d3ae76a803
      Fault in home space mode while using kernel ASCE.
      AS:0000000077c40007 R3:0000000000000024
      Oops: 0038 ilc:3 [#1] SMP
      Modules linked in: ...
      CPU: 3 PID: 453 Comm: kworker/3:1H Kdump: loaded
      Hardware name: ...
      Workqueue: kblockd blk_mq_run_work_fn
      Krnl PSW : 0404d00180000000 0000000076fc0312 (__kmalloc+0xd2/0x398)
                 R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 RI:0 EA:3
      Krnl GPRS: ffffffffffffffff 523b05d3ae76abf6 0000000000000000 0000000000092a20
                 0000000000000002 00000007e49b5cc0 00000007eda8f000 0000000000092a20
                 00000007eda8f000 00000003b02856b9 00000000000000a8 523b05d3ae76abf6
                 00000007dd662000 00000007eda8f000 0000000076fc02b2 000003e0037637a0
      Krnl Code: 0000000076fc0302: c004000000d4     brcl    0,76fc04aa
                 0000000076fc0308: b904001b         lgr     %r1,%r11
                #0000000076fc030c: e3106020001a     algf    %r1,32(%r6)
                >0000000076fc0312: e31010000082     xg      %r1,0(%r1)
                 0000000076fc0318: b9040001         lgr     %r0,%r1
                 0000000076fc031c: e30061700082     xg      %r0,368(%r6)
                 0000000076fc0322: ec59000100d9     aghik   %r5,%r9,1
                 0000000076fc0328: e34003b80004     lg      %r4,952
      Call Trace:
       [<0000000076fc0312>] __kmalloc+0xd2/0x398
       [<0000000076f318f2>] mempool_alloc+0x72/0x1f8
       [<000003ff8027c5f8>] zfcp_fsf_req_create.isra.7+0x40/0x268 [zfcp]
       [<000003ff8027f1bc>] zfcp_fsf_fcp_cmnd+0xac/0x3f0 [zfcp]
       [<000003ff80280f1a>] zfcp_scsi_queuecommand+0x122/0x1d0 [zfcp]
       [<000003ff800b4218>] scsi_queue_rq+0x778/0xa10 [scsi_mod]
       [<00000000771782a0>] __blk_mq_try_issue_directly+0x130/0x208
       [<000000007717a124>] blk_mq_request_issue_directly+0x4c/0xa8
       [<000003ff801302e2>] dm_mq_queue_rq+0x2ea/0x468 [dm_mod]
       [<0000000077178c12>] blk_mq_dispatch_rq_list+0x33a/0x818
       [<000000007717f064>] __blk_mq_do_dispatch_sched+0x284/0x2f0
       [<000000007717f44c>] __blk_mq_sched_dispatch_requests+0x1c4/0x218
       [<000000007717fa7a>] blk_mq_sched_dispatch_requests+0x52/0x90
       [<0000000077176d74>] __blk_mq_run_hw_queue+0x9c/0xc0
       [<0000000076da6d74>] process_one_work+0x274/0x4d0
       [<0000000076da7018>] worker_thread+0x48/0x560
       [<0000000076daef18>] kthread+0x140/0x160
       [<000000007751d144>] ret_from_fork+0x28/0x30
      Last Breaking-Event-Address:
       [<0000000076fc0474>] __kmalloc+0x234/0x398
      Kernel panic - not syncing: Fatal exception: panic_on_oops
    
    To fix this, simply change the type of the cache variable to 'unsigned
    long', like the rest of zfcp and also the argument for
    'zfcp_reqlist_find_rm()'. This prevents truncation and wrong sign extension
    and so can successfully remove the request from the hash table.
    
    Fixes: e60a6d69f1f8 ("[SCSI] zfcp: Remove function zfcp_reqlist_find_safe")
    Cc: <stable@vger.kernel.org> #v2.6.34+
    Signed-off-by: Benjamin Block <bblock@linux.ibm.com>
    Link: https://lore.kernel.org/r/979f6e6019d15f91ba56182f1aaf68d61bf37fc6.1668595505.git.bblock@linux.ibm.com
    Reviewed-by: Steffen Maier <maier@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db744288af730abb66312f40b087d1dbf794c5f4
Author: Alban Crequy <albancrequy@linux.microsoft.com>
Date:   Thu Nov 10 09:56:13 2022 +0100

    maccess: Fix writing offset in case of fault in strncpy_from_kernel_nofault()
    
    commit 8678ea06852cd1f819b870c773d43df888d15d46 upstream.
    
    If a page fault occurs while copying the first byte, this function resets one
    byte before dst.
    As a consequence, an address could be modified and leaded to kernel crashes if
    case the modified address was accessed later.
    
    Fixes: b58294ead14c ("maccess: allow architectures to provide kernel probing directly")
    Signed-off-by: Alban Crequy <albancrequy@linux.microsoft.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Tested-by: Francis Laniel <flaniel@linux.microsoft.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: <stable@vger.kernel.org> [5.8]
    Link: https://lore.kernel.org/bpf/20221110085614.111213-2-albancrequy@linux.microsoft.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24cc679abbf31477d0cc6106ec83c2fbae6b3cdf
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Mon Nov 7 10:21:40 2022 -0800

    Input: iforce - invert valid length check when fetching device IDs
    
    commit b8ebf250997c5fb253582f42bfe98673801ebebd upstream.
    
    syzbot is reporting uninitialized value at iforce_init_device() [1], for
    commit 6ac0aec6b0a6 ("Input: iforce - allow callers supply data buffer
    when fetching device IDs") is checking that valid length is shorter than
    bytes to read. Since iforce_get_id_packet() stores valid length when
    returning 0, the caller needs to check that valid length is longer than or
    equals to bytes to read.
    
    Reported-by: syzbot <syzbot+4dd880c1184280378821@syzkaller.appspotmail.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Fixes: 6ac0aec6b0a6 ("Input: iforce - allow callers supply data buffer when fetching device IDs")
    Link: https://lore.kernel.org/r/531fb432-7396-ad37-ecba-3e42e7f56d5c@I-love.SAKURA.ne.jp
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f4611fe012ff7f2a7801db50b94867ffb858fc4
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Tue Nov 8 14:19:50 2022 +0200

    serial: 8250_lpss: Configure DMA also w/o DMA filter
    
    commit 1bfcbe5805d0cfc83c3544dcd01e0a282c1f6790 upstream.
    
    If the platform doesn't use DMA device filter (as is the case with
    Elkhart Lake), whole lpss8250_dma_setup() setup is skipped. This
    results in skipping also *_maxburst setup which is undesirable.
    Refactor lpss8250_dma_setup() to configure DMA even if filter is not
    setup.
    
    Cc: stable <stable@kernel.org>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20221108121952.5497-3-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8679087e93574742d7cceb001d7a1bd558585395
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Tue Nov 8 14:19:52 2022 +0200

    serial: 8250: Flush DMA Rx on RLSI
    
    commit 1980860e0c8299316cddaf0992dd9e1258ec9d88 upstream.
    
    Returning true from handle_rx_dma() without flushing DMA first creates
    a data ordering hazard. If DMA Rx has handled any character at the
    point when RLSI occurs, the non-DMA path handles any pending characters
    jumping them ahead of those characters that are pending under DMA.
    
    Fixes: 75df022b5f89 ("serial: 8250_dma: Fix RX handling")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20221108121952.5497-5-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5eaad87bfca23b851a68f1f233ddd6f0bb25192
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Tue Nov 8 14:19:49 2022 +0200

    serial: 8250: Fall back to non-DMA Rx if IIR_RDI occurs
    
    commit a931237cbea256aff13bb403da13a97b2d1605d9 upstream.
    
    DW UART sometimes triggers IIR_RDI during DMA Rx when IIR_RX_TIMEOUT
    should have been triggered instead. Since IIR_RDI has higher priority
    than IIR_RX_TIMEOUT, this causes the Rx to hang into interrupt loop.
    The problem seems to occur at least with some combinations of
    small-sized transfers (I've reproduced the problem on Elkhart Lake PSE
    UARTs).
    
    If there's already an on-going Rx DMA and IIR_RDI triggers, fall
    graciously back to non-DMA Rx. That is, behave as if IIR_RX_TIMEOUT had
    occurred.
    
    8250_omap already considers IIR_RDI similar to this change so its
    nothing unheard of.
    
    Fixes: 75df022b5f89 ("serial: 8250_dma: Fix RX handling")
    Cc: <stable@vger.kernel.org>
    Co-developed-by: Srikanth Thokala <srikanth.thokala@intel.com>
    Signed-off-by: Srikanth Thokala <srikanth.thokala@intel.com>
    Co-developed-by: Aman Kumar <aman.kumar@intel.com>
    Signed-off-by: Aman Kumar <aman.kumar@intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20221108121952.5497-2-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f59f5a269ca5e43c567aca7f1f52500a0186e9b7
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Tue Nov 1 16:53:35 2022 -0400

    dm ioctl: fix misbehavior if list_versions races with module loading
    
    commit 4fe1ec995483737f3d2a14c3fe1d8fe634972979 upstream.
    
    __list_versions will first estimate the required space using the
    "dm_target_iterate(list_version_get_needed, &needed)" call and then will
    fill the space using the "dm_target_iterate(list_version_get_info,
    &iter_info)" call. Each of these calls locks the targets using the
    "down_read(&_lock)" and "up_read(&_lock)" calls, however between the first
    and second "dm_target_iterate" there is no lock held and the target
    modules can be loaded at this point, so the second "dm_target_iterate"
    call may need more space than what was the first "dm_target_iterate"
    returned.
    
    The code tries to handle this overflow (see the beginning of
    list_version_get_info), however this handling is incorrect.
    
    The code sets "param->data_size = param->data_start + needed" and
    "iter_info.end = (char *)vers+len" - "needed" is the size returned by the
    first dm_target_iterate call; "len" is the size of the buffer allocated by
    userspace.
    
    "len" may be greater than "needed"; in this case, the code will write up
    to "len" bytes into the buffer, however param->data_size is set to
    "needed", so it may write data past the param->data_size value. The ioctl
    interface copies only up to param->data_size into userspace, thus part of
    the result will be truncated.
    
    Fix this bug by setting "iter_info.end = (char *)vers + needed;" - this
    guarantees that the second "dm_target_iterate" call will write only up to
    the "needed" buffer and it will exit with "DM_BUFFER_FULL_FLAG" if it
    overflows the "needed" space - in this case, userspace will allocate a
    larger buffer and retry.
    
    Note that there is also a bug in list_version_get_needed - we need to add
    "strlen(tt->name) + 1" to the needed size, not "strlen(tt->name)".
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67a75a9480fc4f73465a90e6a5e5ee12e9de4d39
Author: Mitja Spes <mitja@lxnav.com>
Date:   Fri Oct 21 15:58:21 2022 +0200

    iio: pressure: ms5611: changed hardcoded SPI speed to value limited
    
    commit 741cec30cc52058d1c10d415f3b98319887e4f73 upstream.
    
    Don't hardcode the ms5611 SPI speed, limit it instead.
    
    Signed-off-by: Mitja Spes <mitja@lxnav.com>
    Fixes: c0644160a8b5 ("iio: pressure: add support for MS5611 pressure and temperature sensor")
    Link: https://lore.kernel.org/r/20221021135827.1444793-3-mitja@lxnav.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d95b85c5084ad70011988861ee864529eefa1da0
Author: Saravanan Sekar <sravanhome@gmail.com>
Date:   Sat Oct 29 11:29:55 2022 +0200

    iio: adc: mp2629: fix potential array out of bound access
    
    commit ca1547ab15f48dc81624183ae17a2fd1bad06dfc upstream.
    
    Add sentinel at end of maps to avoid potential array out of
    bound access in iio core.
    
    Fixes: 7abd9fb64682 ("iio: adc: mp2629: Add support for mp2629 ADC driver")
    Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
    Link: https://lore.kernel.org/r/20221029093000.45451-4-sravanhome@gmail.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46b8bc62c5ea20416a7dd9778624924304922a51
Author: Saravanan Sekar <sravanhome@gmail.com>
Date:   Sat Oct 29 11:29:53 2022 +0200

    iio: adc: mp2629: fix wrong comparison of channel
    
    commit 1eb20332a082fa801fb89c347c5e62de916a4001 upstream.
    
    Input voltage channel enum is compared against iio address instead
    of the channel.
    
    Fixes: 7abd9fb64682 ("iio: adc: mp2629: Add support for mp2629 ADC driver")
    Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20221029093000.45451-2-sravanhome@gmail.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dddf2699da296c84205582aaead6b43dd7e8c4b
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Sat Oct 22 15:42:12 2022 +0800

    iio: trigger: sysfs: fix possible memory leak in iio_sysfs_trig_init()
    
    commit efa17e90e1711bdb084e3954fa44afb6647331c0 upstream.
    
    dev_set_name() allocates memory for name, it need be freed
    when device_add() fails, call put_device() to give up the
    reference that hold in device_initialize(), so that it can
    be freed in kobject_cleanup() when the refcount hit to 0.
    
    Fault injection test can trigger this:
    
    unreferenced object 0xffff8e8340a7b4c0 (size 32):
      comm "modprobe", pid 243, jiffies 4294678145 (age 48.845s)
      hex dump (first 32 bytes):
        69 69 6f 5f 73 79 73 66 73 5f 74 72 69 67 67 65  iio_sysfs_trigge
        72 00 a7 40 83 8e ff ff 00 86 13 c4 f6 ee ff ff  r..@............
      backtrace:
        [<0000000074999de8>] __kmem_cache_alloc_node+0x1e9/0x360
        [<00000000497fd30b>] __kmalloc_node_track_caller+0x44/0x1a0
        [<000000003636c520>] kstrdup+0x2d/0x60
        [<0000000032f84da2>] kobject_set_name_vargs+0x1e/0x90
        [<0000000092efe493>] dev_set_name+0x4e/0x70
    
    Fixes: 1f785681a870 ("staging:iio:trigger sysfs userspace trigger rework.")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Cc: <Stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20221022074212.1386424-1-yangyingliang@huawei.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85d2a8b287a89853c0dcfc5a97b5e9d36376fe37
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Mon Oct 24 16:45:11 2022 +0800

    iio: adc: at91_adc: fix possible memory leak in at91_adc_allocate_trigger()
    
    commit 65f20301607d07ee279b0804d11a05a62a6c1a1c upstream.
    
    If iio_trigger_register() returns error, it should call iio_trigger_free()
    to give up the reference that hold in iio_trigger_alloc(), so that it can
    call iio_trig_release() to free memory when the refcount hit to 0.
    
    Fixes: 0e589d5fb317 ("ARM: AT91: IIO: Add AT91 ADC driver.")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20221024084511.815096-1-yangyingliang@huawei.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85cc1a2fd8bf33510aed5fafbf61abe21abaf95a
Author: Rajat Khandelwal <rajat.khandelwal@linux.intel.com>
Date:   Mon Oct 24 22:46:11 2022 +0530

    usb: typec: mux: Enter safe mode only when pins need to be reconfigured
    
    commit 40bf8f162d0f95e0716e479d7db41443d931765c upstream.
    
    There is no point to enter safe mode during DP/TBT configuration
    if the DP/TBT was already configured in mux. This is because safe
    mode is only applicable when there is a need to reconfigure the
    pins in order to avoid damage within/to port partner.
    
    In some chrome systems, IOM/mux is already configured before OS
    comes up. Thus, when driver is probed, it blindly enters safe
    mode due to PD negotiations but only after gfx driver lowers
    dp_phy_ownership, will the IOM complete safe mode and send an
    ack to PMC.
    Since, that never happens, we see IPC timeout.
    
    Hence, allow safe mode only when pin reconfiguration is not
    required, which makes sense.
    
    Fixes: 43d596e32276 ("usb: typec: intel_pmc_mux: Check the port status before connect")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Rajat Khandelwal <rajat.khandelwal@linux.intel.com>
    Signed-off-by: Lee Shawn C <shawn.c.lee@intel.com>
    Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20221024171611.181468-1-rajat.khandelwal@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efaab055201b4e44824676f4281ba5bfcaa4a588
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Sun Sep 18 11:33:12 2022 +0800

    usb: chipidea: fix deadlock in ci_otg_del_timer
    
    commit 7a58b8d6021426b796eebfae80983374d9a80a75 upstream.
    
    There is a deadlock in ci_otg_del_timer(), the process is
    shown below:
    
        (thread 1)                  |        (thread 2)
    ci_otg_del_timer()              | ci_otg_hrtimer_func()
      ...                           |
      spin_lock_irqsave() //(1)     |  ...
      ...                           |
      hrtimer_cancel()              |  spin_lock_irqsave() //(2)
      (block forever)
    
    We hold ci->lock in position (1) and use hrtimer_cancel() to
    wait ci_otg_hrtimer_func() to stop, but ci_otg_hrtimer_func()
    also need ci->lock in position (2). As a result, the
    hrtimer_cancel() in ci_otg_del_timer() will be blocked forever.
    
    This patch extracts hrtimer_cancel() from the protection of
    spin_lock_irqsave() in order that the ci_otg_hrtimer_func()
    could obtain the ci->lock.
    
    What`s more, there will be no race happen. Because the
    "next_timer" is always under the protection of
    spin_lock_irqsave() and we only check whether "next_timer"
    equals to NUM_OTG_FSM_TIMERS in the following code.
    
    Fixes: 3a316ec4c91c ("usb: chipidea: use hrtimer for otg fsm timers")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Link: https://lore.kernel.org/r/20220918033312.94348-1-duoming@zju.edu.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 143ba5c2d2a7e784eeda34dffaa139fcc8315828
Author: Nicolas Dumazet <ndumazet@google.com>
Date:   Wed Nov 9 13:29:46 2022 +0100

    usb: add NO_LPM quirk for Realforce 87U Keyboard
    
    commit 181135bb20dcb184edd89817831b888eb8132741 upstream.
    
    Before adding this quirk, this (mechanical keyboard) device would not be
    recognized, logging:
    
      new full-speed USB device number 56 using xhci_hcd
      unable to read config index 0 descriptor/start: -32
      chopping to 0 config(s)
    
    It would take dozens of plugging/unpuggling cycles for the keyboard to
    be recognized. Keyboard seems to simply work after applying this quirk.
    
    This issue had been reported by users in two places already ([1], [2])
    but nobody tried upstreaming a patch yet. After testing I believe their
    suggested fix (DELAY_INIT + NO_LPM + DEVICE_QUALIFIER) was probably a
    little overkill. I assume this particular combination was tested because
    it had been previously suggested in [3], but only NO_LPM seems
    sufficient for this device.
    
    [1]: https://qiita.com/float168/items/fed43d540c8e2201b543
    [2]: https://blog.kostic.dev/posts/making-the-realforce-87ub-work-with-usb30-on-Ubuntu/
    [3]: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1678477
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Nicolas Dumazet <ndumazet@google.com>
    Link: https://lore.kernel.org/r/20221109122946.706036-1-ndumazet@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 249cef723feec8c7a608a97337cb666b86e27624
Author: Reinhard Speyerer <rspmn@arcor.de>
Date:   Wed Nov 9 22:24:15 2022 +0100

    USB: serial: option: add Fibocom FM160 0x0111 composition
    
    commit 148f4b32b4504d8a32cf82049b7b9499a4b299ab upstream.
    
    Add support for the following Fibocom FM160 composition:
    
    0x0111: MBIM + MODEM + DIAG + AT
    
    T:  Bus=01 Lev=02 Prnt=125 Port=01 Cnt=02 Dev#= 93 Spd=480  MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=0111 Rev= 5.04
    S:  Manufacturer=Fibocom
    S:  Product=Fibocom FM160 Modem_SN:12345678
    S:  SerialNumber=12345678
    C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
    E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c44c60358da5a6c92c9be3f7744648db284d9f2
Author: Davide Tronchin <davide.tronchin.94@gmail.com>
Date:   Wed Nov 16 16:59:50 2022 +0100

    USB: serial: option: add u-blox LARA-L6 modem
    
    commit c1547f12df8b8e9ca2686accee43213ecd117efe upstream.
    
    Add LARA-L6 PIDs for three different USB compositions.
    
    LARA-L6 module can be configured (by AT interface) in three different
    USB modes:
    * Default mode (Vendor ID: 0x1546 Product ID: 0x1341) with 4 serial
    interfaces
    * RmNet mode (Vendor ID: 0x1546 Product ID: 0x1342) with 4 serial
    interfaces and 1 RmNet virtual network interface
    * CDC-ECM mode (Vendor ID: 0x1546 Product ID: 0x1343) with 4 serial
    interface and 1 CDC-ECM virtual network interface
    
    In default mode LARA-L6 exposes the following interfaces:
    If 0: Diagnostic
    If 1: AT parser
    If 2: AT parser
    If 3: AT parser/alternative functions
    
    In RmNet mode LARA-L6 exposes the following interfaces:
    If 0: Diagnostic
    If 1: AT parser
    If 2: AT parser
    If 3: AT parset/alternative functions
    If 4: RMNET interface
    
    In CDC-ECM mode LARA-L6 exposes the following interfaces:
    If 0: Diagnostic
    If 1: AT parser
    If 2: AT parser
    If 3: AT parset/alternative functions
    If 4: CDC-ECM interface
    
    Signed-off-by: Davide Tronchin <davide.tronchin.94@gmail.com>
    [ johan: drop PID defines in favour of comments ]
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e88a3cfa6edcab4bbeab5641d3a74a176a51eeb
Author: Davide Tronchin <davide.tronchin.94@gmail.com>
Date:   Wed Nov 16 16:59:49 2022 +0100

    USB: serial: option: add u-blox LARA-R6 00B modem
    
    commit d9e37a5c4d80ea25a7171ab8557a449115554e76 upstream.
    
    The official LARA-R6 (00B) modem uses 0x908b PID. LARA-R6 00B does not
    implement a QMI interface on port 4, the reservation (RSVD(4)) has been
    added to meet other companies that implement QMI on that interface.
    
    LARA-R6 00B USB composition exposes the following interfaces:
    If 0: Diagnostic
    If 1: AT parser
    If 2: AT parser
    If 3: AT parser/alternative functions
    
    Signed-off-by: Davide Tronchin <davide.tronchin.94@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de707957d9d45054610a5b1b69de96eca9ac755a
Author: Davide Tronchin <davide.tronchin.94@gmail.com>
Date:   Wed Nov 16 16:59:48 2022 +0100

    USB: serial: option: remove old LARA-R6 PID
    
    commit 2ec106b96afc19698ff934323b633c0729d4c7f8 upstream.
    
    Remove the UBLOX_PRODUCT_R6XX 0x90fa association since LARA-R6 00B final
    product uses a new USB composition with different PID. 0x90fa PID used
    only by LARA-R6 internal prototypes.
    
    Move 0x90fa PID directly in the option_ids array since used by other
    Qualcomm based modem vendors as pointed out in:
    
      https://lore.kernel.org/all/6572c4e6-d8bc-b8d3-4396-d879e4e76338@gmail.com
    
    Signed-off-by: Davide Tronchin <davide.tronchin.94@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 878227a3ddb23f26f38fb9e5d460f9f376a44f61
Author: Benoît Monin <benoit.monin@gmx.fr>
Date:   Thu Oct 13 16:26:48 2022 +0200

    USB: serial: option: add Sierra Wireless EM9191
    
    commit df3414b0a245f43476061fddd78cee7d6cff797f upstream.
    
    Add support for the AT and diag ports, similar to other qualcomm SDX55
    modems. In QDL mode, the modem uses a different device ID and support
    is provided by qcserial in commit 11c52d250b34 ("USB: serial: qcserial:
    add EM9191 QDL support").
    
    T:  Bus=08 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  3 Spd=5000 MxCh= 0
    D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
    P:  Vendor=1199 ProdID=90d3 Rev=00.06
    S:  Manufacturer=Sierra Wireless, Incorporated
    S:  Product=Sierra Wireless EM9191
    S:  SerialNumber=xxxxxxxxxxxxxxxx
    C:  #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=896mA
    I:  If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#=0x1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:  If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    I:  If#=0x4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none)
    
    Signed-off-by: Benoît Monin <benoit.monin@gmx.fr>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25c652811ddd99384c6120f22195333174a16de8
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Mon Nov 7 10:07:53 2022 +0100

    USB: bcma: Make GPIO explicitly optional
    
    commit cd136706b4f925aa5d316642543babac90d45910 upstream.
    
    What the code does is to not check the return value from
    devm_gpiod_get() and then avoid using an erroneous GPIO descriptor
    with IS_ERR_OR_NULL().
    
    This will miss real errors from the GPIO core that should not be
    ignored, such as probe deferral.
    
    Instead request the GPIO as explicitly optional, which means that
    if it doesn't exist, the descriptor returned will be NULL.
    
    Then we can add error handling and also avoid just doing this on
    the device tree path, and simplify the site where the optional
    GPIO descriptor is used.
    
    There were some problems with cleaning up this GPIO descriptor
    use in the past, but this is the proper way to deal with it.
    
    Cc: Rafał Miłecki <rafal@milecki.pl>
    Cc: Chuhong Yuan <hslester96@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Cc: stable <stable@kernel.org>
    Link: https://lore.kernel.org/r/20221107090753.1404679-1-linus.walleij@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb3af3ea5bcabee193ce31e08fedf55cc3d20b9f
Author: Mushahid Hussain <mushi.shar@gmail.com>
Date:   Mon Oct 10 21:57:20 2022 +0500

    speakup: fix a segfault caused by switching consoles
    
    commit 0fc801f8018000c8e64a275a20cb1da7c54e46df upstream.
    
    This patch fixes a segfault by adding a null check on synth in
    speakup_con_update(). The segfault can be reproduced as follows:
    
            - Login into a text console
    
            - Load speakup and speakup_soft modules
    
            - Remove speakup_soft
    
            - Switch to a graphics console
    
    This is caused by lack of a null check on `synth` in
    speakup_con_update().
    
    Here's the sequence that causes the segfault:
    
            - When we remove the speakup_soft, synth_release() sets the synth
              to null.
    
            - After that, when we change the virtual console to graphics
              console, vt_notifier_call() is fired, which then calls
              speakup_con_update().
    
            - Inside speakup_con_update() there's no null check on synth,
              so it calls synth_printf().
    
            - Inside synth_printf(), synth_buffer_add() and synth_start(),
              both access synth, when it is null and causing a segfault.
    
    Therefore adding a null check on synth solves the issue.
    
    Fixes: 2610df41489f ("staging: speakup: Add pause command used on switching to graphical mode")
    Cc: stable <stable@kernel.org>
    Signed-off-by: Mushahid Hussain <mushi.shar@gmail.com>
    Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Link: https://lore.kernel.org/r/20221010165720.397042-1-mushi.shar@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8cbaf4ed530e2464ff3c7d3abd432b1486bbee77
Author: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Date:   Thu Sep 29 18:52:02 2022 +0200

    slimbus: stream: correct presence rate frequencies
    
    commit b9c1939627f8185dec8ba6d741e9573a4c7a5834 upstream.
    
    Correct few frequencies in presence rate table - multiplied by 10
    (110250 instead of 11025 Hz).
    
    Fixes: abb9c9b8b51b ("slimbus: stream: add stream support")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Link: https://lore.kernel.org/r/20220929165202.410937-1-krzysztof.kozlowski@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15155f7c0e302f9cbf9f0c00cfa4812905a300e7
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Thu Nov 3 15:46:48 2022 +0100

    Revert "usb: dwc3: disable USB core PHY management"
    
    commit 5c294de36e7fb3e0cba0c4e1ef9a5f57bc080d0f upstream.
    
    This reverts commit 6000b8d900cd5f52fbcd0776d0cc396e88c8c2ea.
    
    The offending commit disabled the USB core PHY management as the dwc3
    already manages the PHYs in question.
    
    Unfortunately some platforms have started relying on having USB core
    also controlling the PHY and this is specifically currently needed on
    some Exynos platforms for PHY calibration or connected device may fail
    to enumerate.
    
    The PHY calibration was previously handled in the dwc3 driver, but to
    work around some issues related to how the dwc3 driver interacts with
    xhci (e.g. using multiple drivers) this was moved to USB core by commits
    34c7ed72f4f0 ("usb: core: phy: add support for PHY calibration") and
    a0a465569b45 ("usb: dwc3: remove generic PHY calibrate() calls").
    
    The same PHY obviously should not be controlled from two different
    places, which for example do no agree on the PHY mode or power state
    during suspend, but as the offending patch was backported to stable,
    let's revert it for now.
    
    Reported-by: Stefan Agner <stefan@agner.ch>
    Link: https://lore.kernel.org/lkml/808bdba846bb60456adf10a3016911ee@agner.ch/
    Fixes: 6000b8d900cd ("usb: dwc3: disable USB core PHY management")
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/20221103144648.14197-1-johan+linaro@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 100d1e53bb3bea5ec8efaed995b5082032b5e9ab
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 15 18:02:35 2022 +0100

    ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book Pro 360
    
    commit 1abfd71ee8f3ed99c5d0df5d9843a360541d6808 upstream.
    
    Samsung Galaxy Book Pro 360 (13" 2021 NP930QBD-ke1US) with codec SSID
    144d:c1a6 requires the same workaround for enabling the speaker amp
    like other Samsung models with ALC298 codec.
    
    Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1205100
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20221115170235.18875-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7dcc8948279f0d1e5610fbf1b2411ea88bb5cbb
Author: Emil Flink <emil.flink@gmail.com>
Date:   Tue Nov 15 15:45:01 2022 +0100

    ALSA: hda/realtek: fix speakers for Samsung Galaxy Book Pro
    
    commit b18a456330e1c1ca207b57b45872f10336741388 upstream.
    
    The Samsung Galaxy Book Pro seems to have the same issue as a few
    other Samsung laptops, detailed in kernel bug report 207423. Sound from
    headphone jack works, but not the built-in speakers.
    
    alsa-info: http://alsa-project.org/db/?f=b40ba609dc6ae28dc84ad404a0d8a4bbcd8bea6d
    
    Signed-off-by: Emil Flink <emil.flink@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20221115144500.7782-1-emil.flink@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a80369c8ca50bc885d14386087a834659ec54a54
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Nov 12 15:12:23 2022 +0100

    ALSA: usb-audio: Drop snd_BUG_ON() from snd_usbmidi_output_open()
    
    commit ad72c3c3f6eb81d2cb189ec71e888316adada5df upstream.
    
    snd_usbmidi_output_open() has a check of the NULL port with
    snd_BUG_ON().  snd_BUG_ON() was used as this shouldn't have happened,
    but in reality, the NULL port may be seen when the device gives an
    invalid endpoint setup at the descriptor, hence the driver skips the
    allocation.  That is, the check itself is valid and snd_BUG_ON()
    should be dropped from there.  Otherwise it's confusing as if it were
    a real bug, as recently syzbot stumbled on it.
    
    Reported-by: syzbot+9abda841d636d86c41da@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/syzbot+9abda841d636d86c41da@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20221112141223.6144-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28a54854a95923b6266a9479ad660ca2cc0e1d5f
Author: Shang XiaoJing <shangxiaojing@huawei.com>
Date:   Fri Nov 18 10:15:34 2022 +0900

    tracing: kprobe: Fix potential null-ptr-deref on trace_array in kprobe_event_gen_test_exit()
    
    commit 22ea4ca9631eb137e64e5ab899e9c89cb6670959 upstream.
    
    When test_gen_kprobe_cmd() failed after kprobe_event_gen_cmd_end(), it
    will goto delete, which will call kprobe_event_delete() and release the
    corresponding resource. However, the trace_array in gen_kretprobe_test
    will point to the invalid resource. Set gen_kretprobe_test to NULL
    after called kprobe_event_delete() to prevent null-ptr-deref.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000070
    PGD 0 P4D 0
    Oops: 0000 [#1] SMP PTI
    CPU: 0 PID: 246 Comm: modprobe Tainted: G        W
    6.1.0-rc1-00174-g9522dc5c87da-dirty #248
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.15.0-0-g2dd4b9b3f840-prebuilt.qemu.org 04/01/2014
    RIP: 0010:__ftrace_set_clr_event_nolock+0x53/0x1b0
    Code: e8 82 26 fc ff 49 8b 1e c7 44 24 0c ea ff ff ff 49 39 de 0f 84 3c
    01 00 00 c7 44 24 18 00 00 00 00 e8 61 26 fc ff 48 8b 6b 10 <44> 8b 65
    70 4c 8b 6d 18 41 f7 c4 00 02 00 00 75 2f
    RSP: 0018:ffffc9000159fe00 EFLAGS: 00010293
    RAX: 0000000000000000 RBX: ffff88810971d268 RCX: 0000000000000000
    RDX: ffff8881080be600 RSI: ffffffff811b48ff RDI: ffff88810971d058
    RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000001
    R10: ffffc9000159fe58 R11: 0000000000000001 R12: ffffffffa0001064
    R13: ffffffffa000106c R14: ffff88810971d238 R15: 0000000000000000
    FS:  00007f89eeff6540(0000) GS:ffff88813b600000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000070 CR3: 000000010599e004 CR4: 0000000000330ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     __ftrace_set_clr_event+0x3e/0x60
     trace_array_set_clr_event+0x35/0x50
     ? 0xffffffffa0000000
     kprobe_event_gen_test_exit+0xcd/0x10b [kprobe_event_gen_test]
     __x64_sys_delete_module+0x206/0x380
     ? lockdep_hardirqs_on_prepare+0xd8/0x190
     ? syscall_enter_from_user_mode+0x1c/0x50
     do_syscall_64+0x3f/0x90
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    RIP: 0033:0x7f89eeb061b7
    
    Link: https://lore.kernel.org/all/20221108015130.28326-3-shangxiaojing@huawei.com/
    
    Fixes: 64836248dda2 ("tracing: Add kprobe event command generation test module")
    Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
    Cc: stable@vger.kernel.org
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb70fcae4115d24b7e8cee17a6da8b1943f546bb
Author: Shang XiaoJing <shangxiaojing@huawei.com>
Date:   Fri Nov 18 10:15:33 2022 +0900

    tracing: kprobe: Fix potential null-ptr-deref on trace_event_file in kprobe_event_gen_test_exit()
    
    commit e0d75267f59d7084e0468bd68beeb1bf9c71d7c0 upstream.
    
    When trace_get_event_file() failed, gen_kretprobe_test will be assigned
    as the error code. If module kprobe_event_gen_test is removed now, the
    null pointer dereference will happen in kprobe_event_gen_test_exit().
    Check if gen_kprobe_test or gen_kretprobe_test is error code or NULL
    before dereference them.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000012
    PGD 0 P4D 0
    Oops: 0000 [#1] SMP PTI
    CPU: 3 PID: 2210 Comm: modprobe Not tainted
    6.1.0-rc1-00171-g2159299a3b74-dirty #217
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.15.0-0-g2dd4b9b3f840-prebuilt.qemu.org 04/01/2014
    RIP: 0010:kprobe_event_gen_test_exit+0x1c/0xb5 [kprobe_event_gen_test]
    Code: Unable to access opcode bytes at 0xffffffff9ffffff2.
    RSP: 0018:ffffc900015bfeb8 EFLAGS: 00010246
    RAX: ffffffffffffffea RBX: ffffffffa0002080 RCX: 0000000000000000
    RDX: ffffffffa0001054 RSI: ffffffffa0001064 RDI: ffffffffdfc6349c
    RBP: ffffffffa0000000 R08: 0000000000000004 R09: 00000000001e95c0
    R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000800
    R13: ffffffffa0002420 R14: 0000000000000000 R15: 0000000000000000
    FS:  00007f56b75be540(0000) GS:ffff88813bc00000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffff9ffffff2 CR3: 000000010874a006 CR4: 0000000000330ee0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     __x64_sys_delete_module+0x206/0x380
     ? lockdep_hardirqs_on_prepare+0xd8/0x190
     ? syscall_enter_from_user_mode+0x1c/0x50
     do_syscall_64+0x3f/0x90
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Link: https://lore.kernel.org/all/20221108015130.28326-2-shangxiaojing@huawei.com/
    
    Fixes: 64836248dda2 ("tracing: Add kprobe event command generation test module")
    Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
    Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 315b149f08229a233d47532eb5da1707b28f764c
Author: Shang XiaoJing <shangxiaojing@huawei.com>
Date:   Thu Nov 17 09:23:46 2022 +0800

    tracing: Fix wild-memory-access in register_synth_event()
    
    commit 1b5f1c34d3f5a664a57a5a7557a50e4e3cc2505c upstream.
    
    In register_synth_event(), if set_synth_event_print_fmt() failed, then
    both trace_remove_event_call() and unregister_trace_event() will be
    called, which means the trace_event_call will call
    __unregister_trace_event() twice. As the result, the second unregister
    will causes the wild-memory-access.
    
    register_synth_event
        set_synth_event_print_fmt failed
        trace_remove_event_call
            event_remove
                if call->event.funcs then
                __unregister_trace_event (first call)
        unregister_trace_event
            __unregister_trace_event (second call)
    
    Fix the bug by avoiding to call the second __unregister_trace_event() by
    checking if the first one is called.
    
    general protection fault, probably for non-canonical address
            0xfbd59c0000000024: 0000 [#1] SMP KASAN PTI
    KASAN: maybe wild-memory-access in range
    [0xdead000000000120-0xdead000000000127]
    CPU: 0 PID: 3807 Comm: modprobe Not tainted
    6.1.0-rc1-00186-g76f33a7eedb4 #299
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.15.0-0-g2dd4b9b3f840-prebuilt.qemu.org 04/01/2014
    RIP: 0010:unregister_trace_event+0x6e/0x280
    Code: 00 fc ff df 4c 89 ea 48 c1 ea 03 80 3c 02 00 0f 85 0e 02 00 00 48
    b8 00 00 00 00 00 fc ff df 4c 8b 63 08 4c 89 e2 48 c1 ea 03 <80> 3c 02
    00 0f 85 e2 01 00 00 49 89 2c 24 48 85 ed 74 28 e8 7a 9b
    RSP: 0018:ffff88810413f370 EFLAGS: 00010a06
    RAX: dffffc0000000000 RBX: ffff888105d050b0 RCX: 0000000000000000
    RDX: 1bd5a00000000024 RSI: ffff888119e276e0 RDI: ffffffff835a8b20
    RBP: dead000000000100 R08: 0000000000000000 R09: fffffbfff0913481
    R10: ffffffff8489a407 R11: fffffbfff0913480 R12: dead000000000122
    R13: ffff888105d050b8 R14: 0000000000000000 R15: ffff888105d05028
    FS:  00007f7823e8d540(0000) GS:ffff888119e00000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f7823e7ebec CR3: 000000010a058002 CR4: 0000000000330ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     __create_synth_event+0x1e37/0x1eb0
     create_or_delete_synth_event+0x110/0x250
     synth_event_run_command+0x2f/0x110
     test_gen_synth_cmd+0x170/0x2eb [synth_event_gen_test]
     synth_event_gen_test_init+0x76/0x9bc [synth_event_gen_test]
     do_one_initcall+0xdb/0x480
     do_init_module+0x1cf/0x680
     load_module+0x6a50/0x70a0
     __do_sys_finit_module+0x12f/0x1c0
     do_syscall_64+0x3f/0x90
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Link: https://lkml.kernel.org/r/20221117012346.22647-3-shangxiaojing@huawei.com
    
    Fixes: 4b147936fa50 ("tracing: Add support for 'synthetic' events")
    Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
    Cc: stable@vger.kernel.org
    Cc: <mhiramat@kernel.org>
    Cc: <zanussi@kernel.org>
    Cc: <fengguang.wu@intel.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65ba7e7c241122ef0a9e61d1920f2ae9689aa796
Author: Shang XiaoJing <shangxiaojing@huawei.com>
Date:   Thu Nov 17 09:23:45 2022 +0800

    tracing: Fix memory leak in test_gen_synth_cmd() and test_empty_synth_event()
    
    commit a4527fef9afe5c903c718d0cd24609fe9c754250 upstream.
    
    test_gen_synth_cmd() only free buf in fail path, hence buf will leak
    when there is no failure. Add kfree(buf) to prevent the memleak. The
    same reason and solution in test_empty_synth_event().
    
    unreferenced object 0xffff8881127de000 (size 2048):
      comm "modprobe", pid 247, jiffies 4294972316 (age 78.756s)
      hex dump (first 32 bytes):
        20 67 65 6e 5f 73 79 6e 74 68 5f 74 65 73 74 20   gen_synth_test
        20 70 69 64 5f 74 20 6e 65 78 74 5f 70 69 64 5f   pid_t next_pid_
      backtrace:
        [<000000004254801a>] kmalloc_trace+0x26/0x100
        [<0000000039eb1cf5>] 0xffffffffa00083cd
        [<000000000e8c3bc8>] 0xffffffffa00086ba
        [<00000000c293d1ea>] do_one_initcall+0xdb/0x480
        [<00000000aa189e6d>] do_init_module+0x1cf/0x680
        [<00000000d513222b>] load_module+0x6a50/0x70a0
        [<000000001fd4d529>] __do_sys_finit_module+0x12f/0x1c0
        [<00000000b36c4c0f>] do_syscall_64+0x3f/0x90
        [<00000000bbf20cf3>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
    unreferenced object 0xffff8881127df000 (size 2048):
      comm "modprobe", pid 247, jiffies 4294972324 (age 78.728s)
      hex dump (first 32 bytes):
        20 65 6d 70 74 79 5f 73 79 6e 74 68 5f 74 65 73   empty_synth_tes
        74 20 20 70 69 64 5f 74 20 6e 65 78 74 5f 70 69  t  pid_t next_pi
      backtrace:
        [<000000004254801a>] kmalloc_trace+0x26/0x100
        [<00000000d4db9a3d>] 0xffffffffa0008071
        [<00000000c31354a5>] 0xffffffffa00086ce
        [<00000000c293d1ea>] do_one_initcall+0xdb/0x480
        [<00000000aa189e6d>] do_init_module+0x1cf/0x680
        [<00000000d513222b>] load_module+0x6a50/0x70a0
        [<000000001fd4d529>] __do_sys_finit_module+0x12f/0x1c0
        [<00000000b36c4c0f>] do_syscall_64+0x3f/0x90
        [<00000000bbf20cf3>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Link: https://lkml.kernel.org/r/20221117012346.22647-2-shangxiaojing@huawei.com
    
    Cc: <mhiramat@kernel.org>
    Cc: <zanussi@kernel.org>
    Cc: <fengguang.wu@intel.com>
    Cc: stable@vger.kernel.org
    Fixes: 9fe41efaca08 ("tracing: Add synth event generation test module")
    Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d4cc7bc1a8d8b05b01800688f0e82781986b905
Author: Steven Rostedt (Google) <rostedt@goodmis.org>
Date:   Thu Oct 20 23:14:27 2022 -0400

    tracing/ring-buffer: Have polling block on watermark
    
    commit 42fb0a1e84ff525ebe560e2baf9451ab69127e2b upstream.
    
    Currently the way polling works on the ring buffer is broken. It will
    return immediately if there's any data in the ring buffer whereas a read
    will block until the watermark (defined by the tracefs buffer_percent file)
    is hit.
    
    That is, a select() or poll() will return as if there's data available,
    but then the following read will block. This is broken for the way
    select()s and poll()s are supposed to work.
    
    Have the polling on the ring buffer also block the same way reads and
    splice does on the ring buffer.
    
    Link: https://lkml.kernel.org/r/20221020231427.41be3f26@gandalf.local.home
    
    Cc: Linux Trace Kernel <linux-trace-kernel@vger.kernel.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Primiano Tucci <primiano@google.com>
    Cc: stable@vger.kernel.org
    Fixes: 1e0d6714aceb7 ("ring-buffer: Do not wake up a splice waiter when page is not full")
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fdebbeca5dbc2cde6cca9562fc02841e1155c9d
Author: Daniil Tatianin <d-tatianin@yandex-team.ru>
Date:   Mon Nov 14 17:31:29 2022 +0300

    ring_buffer: Do not deactivate non-existant pages
    
    commit 56f4ca0a79a9f1af98f26c54b9b89ba1f9bcc6bd upstream.
    
    rb_head_page_deactivate() expects cpu_buffer to contain a valid list of
    ->pages, so verify that the list is actually present before calling it.
    
    Found by Linux Verification Center (linuxtesting.org) with the SVACE
    static analysis tool.
    
    Link: https://lkml.kernel.org/r/20221114143129.3534443-1-d-tatianin@yandex-team.ru
    
    Cc: stable@vger.kernel.org
    Fixes: 77ae365eca895 ("ring-buffer: make lockless")
    Signed-off-by: Daniil Tatianin <d-tatianin@yandex-team.ru>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a14828caddad0d989495a72af678adf60992704
Author: Xiu Jianfeng <xiujianfeng@huawei.com>
Date:   Wed Nov 16 09:52:07 2022 +0800

    ftrace: Fix null pointer dereference in ftrace_add_mod()
    
    commit 19ba6c8af9382c4c05dc6a0a79af3013b9a35cd0 upstream.
    
    The @ftrace_mod is allocated by kzalloc(), so both the members {prev,next}
    of @ftrace_mode->list are NULL, it's not a valid state to call list_del().
    If kstrdup() for @ftrace_mod->{func|module} fails, it goes to @out_free
    tag and calls free_ftrace_mod() to destroy @ftrace_mod, then list_del()
    will write prev->next and next->prev, where null pointer dereference
    happens.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000008
    Oops: 0002 [#1] PREEMPT SMP NOPTI
    Call Trace:
     <TASK>
     ftrace_mod_callback+0x20d/0x220
     ? do_filp_open+0xd9/0x140
     ftrace_process_regex.isra.51+0xbf/0x130
     ftrace_regex_write.isra.52.part.53+0x6e/0x90
     vfs_write+0xee/0x3a0
     ? __audit_filter_op+0xb1/0x100
     ? auditd_test_task+0x38/0x50
     ksys_write+0xa5/0xe0
     do_syscall_64+0x3a/0x90
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    Kernel panic - not syncing: Fatal exception
    
    So call INIT_LIST_HEAD() to initialize the list member to fix this issue.
    
    Link: https://lkml.kernel.org/r/20221116015207.30858-1-xiujianfeng@huawei.com
    
    Cc: stable@vger.kernel.org
    Fixes: 673feb9d76ab ("ftrace: Add :mod: caching infrastructure to trace_array")
    Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ed60c60ec9050345f024b7e9c7c0db6e8cd31d2
Author: Wang Wensheng <wangwensheng4@huawei.com>
Date:   Wed Nov 9 09:44:33 2022 +0000

    ftrace: Optimize the allocation for mcount entries
    
    commit bcea02b096333dc74af987cb9685a4dbdd820840 upstream.
    
    If we can't allocate this size, try something smaller with half of the
    size. Its order should be decreased by one instead of divided by two.
    
    Link: https://lkml.kernel.org/r/20221109094434.84046-3-wangwensheng4@huawei.com
    
    Cc: <mhiramat@kernel.org>
    Cc: <mark.rutland@arm.com>
    Cc: stable@vger.kernel.org
    Fixes: a79008755497d ("ftrace: Allocate the mcount record pages as groups")
    Signed-off-by: Wang Wensheng <wangwensheng4@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9569eed79bc0c0da0bc9946bede33e3587bd1fb6
Author: Wang Wensheng <wangwensheng4@huawei.com>
Date:   Wed Nov 9 09:44:32 2022 +0000

    ftrace: Fix the possible incorrect kernel message
    
    commit 08948caebe93482db1adfd2154eba124f66d161d upstream.
    
    If the number of mcount entries is an integer multiple of
    ENTRIES_PER_PAGE, the page count showing on the console would be wrong.
    
    Link: https://lkml.kernel.org/r/20221109094434.84046-2-wangwensheng4@huawei.com
    
    Cc: <mhiramat@kernel.org>
    Cc: <mark.rutland@arm.com>
    Cc: stable@vger.kernel.org
    Fixes: 5821e1b74f0d0 ("function tracing: fix wrong pos computing when read buffer has been fulfilled")
    Signed-off-by: Wang Wensheng <wangwensheng4@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fc19c83132042b6c6a35cd66be4fdf61711760d
Author: Anastasia Belova <abelova@astralinux.ru>
Date:   Wed Nov 16 17:10:27 2022 +0300

    cifs: add check for returning value of SMB2_set_info_init
    
    [ Upstream commit a51e5d293dd1c2e7bf6f7be788466cd9b5d280fb ]
    
    If the returning value of SMB2_set_info_init is an error-value,
    exit the function.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 0967e5457954 ("cifs: use a compound for setting an xattr")
    
    Signed-off-by: Anastasia Belova <abelova@astralinux.ru>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0aeb0de528eccc2b7ff487390a68d2a2bb1083ba
Author: Yuan Can <yuancan@huawei.com>
Date:   Mon Nov 14 14:22:25 2022 +0000

    net: thunderbolt: Fix error handling in tbnet_init()
    
    [ Upstream commit f524b7289bbb0c8ffaa2ba3c34c146e43da54fb2 ]
    
    A problem about insmod thunderbolt-net failed is triggered with following
    log given while lsmod does not show thunderbolt_net:
    
     insmod: ERROR: could not insert module thunderbolt-net.ko: File exists
    
    The reason is that tbnet_init() returns tb_register_service_driver()
    directly without checking its return value, if tb_register_service_driver()
    failed, it returns without removing property directory, resulting the
    property directory can never be created later.
    
     tbnet_init()
       tb_register_property_dir() # register property directory
       tb_register_service_driver()
         driver_register()
           bus_add_driver()
             priv = kzalloc(...) # OOM happened
       # return without remove property directory
    
    Fix by remove property directory when tb_register_service_driver() returns
    error.
    
    Fixes: e69b6c02b4c3 ("net: Add support for networking over Thunderbolt cable")
    Signed-off-by: Yuan Can <yuancan@huawei.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e13ef43813ebf0584488df98e21eaa049f920d3d
Author: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Date:   Tue Nov 15 18:39:34 2022 +0800

    cifs: Fix wrong return value checking when GETFLAGS
    
    [ Upstream commit 92bbd67a55fee50743b42825d1c016e7fd5c79f9 ]
    
    The return value of CIFSGetExtAttr is negative, should be checked
    with -EOPNOTSUPP rather than EOPNOTSUPP.
    
    Fixes: 64a5cfa6db94 ("Allow setting per-file compression via SMB2/3")
    Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f00da9c866d506998bf0a3f699ec900730472da
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Mon Nov 14 11:05:19 2022 +0000

    net/x25: Fix skb leak in x25_lapb_receive_frame()
    
    [ Upstream commit 2929cceb2fcf0ded7182562e4888afafece82cce ]
    
    x25_lapb_receive_frame() using skb_copy() to get a private copy of
    skb, the new skb should be freed in the undersized/fragmented skb
    error handling path. Otherwise there is a memory leak.
    
    Fixes: cb101ed2c3c7 ("x25: Handle undersized/fragmented skbs")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Acked-by: Martin Schiller <ms@dev.tdt.de>
    Link: https://lore.kernel.org/r/20221114110519.514538-1-weiyongjun@huaweicloud.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 94822d23310a2718c4214f0a88fabe8a9fe977c6
Author: Liu Jian <liujian56@huawei.com>
Date:   Mon Nov 14 17:55:49 2022 +0800

    net: ag71xx: call phylink_disconnect_phy if ag71xx_hw_enable() fail in ag71xx_open()
    
    [ Upstream commit c9b895c6878bdb6789dc1d7af60fd10f4a9f1937 ]
    
    If ag71xx_hw_enable() fails, call phylink_disconnect_phy() to clean up.
    And if phylink_of_phy_connect() fails, nothing needs to be done.
    Compile tested only.
    
    Fixes: 892e09153fa3 ("net: ag71xx: port to phylink")
    Signed-off-by: Liu Jian <liujian56@huawei.com>
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/20221114095549.40342-1-liujian56@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3aeb13bc3db2400285eef9002af6e45f93f84d6a
Author: Anastasia Belova <abelova@astralinux.ru>
Date:   Tue Nov 15 17:27:01 2022 +0300

    cifs: add check for returning value of SMB2_close_init
    
    [ Upstream commit d520de6cb42e88a1d008b54f935caf9fc05951da ]
    
    If the returning value of SMB2_close_init is an error-value,
    exit the function.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 352d96f3acc6 ("cifs: multichannel: move channel selection above transport layer")
    
    Signed-off-by: Anastasia Belova <abelova@astralinux.ru>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c24013273ed4a09b1e99720f2a7c8d36dfeb6c2f
Author: Roger Pau Monné <roger.pau@citrix.com>
Date:   Thu Nov 10 17:31:44 2022 +0100

    platform/x86/intel: pmc: Don't unconditionally attach Intel PMC when virtualized
    
    [ Upstream commit 2dbfb3f33350e1e868d3d7ed4c176d8777150878 ]
    
    The current logic in the Intel PMC driver will forcefully attach it
    when detecting any CPU on the intel_pmc_core_platform_ids array,
    even if the matching ACPI device is not present.
    
    There's no checking in pmc_core_probe() to assert that the PMC device
    is present, and hence on virtualized environments the PMC device
    probes successfully, even if the underlying registers are not present.
    Before commit 21ae43570940 ("platform/x86: intel_pmc_core: Substitute PCI
    with CPUID enumeration") the driver would check for the presence of a
    specific PCI device, and that prevented the driver from attaching when
    running virtualized.
    
    Fix by only forcefully attaching the PMC device when not running
    virtualized.  Note that virtualized platforms can still get the device
    to load if the appropriate ACPI device is present on the tables
    provided to the VM.
    
    Make an exception for the Xen initial domain, which does have full
    hardware access, and hence can attach to the PMC if present.
    
    Fixes: 21ae43570940 ("platform/x86: intel_pmc_core: Substitute PCI with CPUID enumeration")
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: David E. Box <david.e.box@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20221110163145.80374-1-roger.pau@citrix.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 9ed51414aef6e59e832e2960f10766dce2d5b1a1
Author: Dan Carpenter <error27@gmail.com>
Date:   Tue Nov 15 16:16:43 2022 +0300

    drbd: use after free in drbd_create_device()
    
    [ Upstream commit a7a1598189228b5007369a9622ccdf587be0730f ]
    
    The drbd_destroy_connection() frees the "connection" so use the _safe()
    iterator to prevent a use after free.
    
    Fixes: b6f85ef9538b ("drbd: Iterate over all connections")
    Signed-off-by: Dan Carpenter <error27@gmail.com>
    Reviewed-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
    Link: https://lore.kernel.org/r/Y3Jd5iZRbNQ9w6gm@kili
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b23a4b252044e4fd23438930d452244818d7000
Author: Yuan Can <yuancan@huawei.com>
Date:   Mon Nov 14 02:56:59 2022 +0000

    net: ena: Fix error handling in ena_init()
    
    [ Upstream commit d349e9be5a2c2d7588a2c4e4bfa0bb3dc1226769 ]
    
    The ena_init() won't destroy workqueue created by
    create_singlethread_workqueue() when pci_register_driver() failed.
    Call destroy_workqueue() when pci_register_driver() failed to prevent the
    resource leak.
    
    Fixes: 1738cd3ed342 ("net: ena: Add a driver for Amazon Elastic Network Adapters (ENA)")
    Signed-off-by: Yuan Can <yuancan@huawei.com>
    Acked-by: Shay Agroskin <shayagr@amazon.com>
    Link: https://lore.kernel.org/r/20221114025659.124726-1-yuancan@huawei.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d5a495501352f3df1818c798b0e23bfe4d6e859
Author: Yuan Can <yuancan@huawei.com>
Date:   Sun Nov 13 09:29:29 2022 +0000

    net: ionic: Fix error handling in ionic_init_module()
    
    [ Upstream commit 280c0f7cd0aa4d190619b18243110e052a90775c ]
    
    A problem about ionic create debugfs failed is triggered with the
    following log given:
    
     [  415.799514] debugfs: Directory 'ionic' with parent '/' already present!
    
    The reason is that ionic_init_module() returns ionic_bus_register_driver()
    directly without checking its return value, if ionic_bus_register_driver()
    failed, it returns without destroy the newly created debugfs, resulting
    the debugfs of ionic can never be created later.
    
     ionic_init_module()
       ionic_debugfs_create() # create debugfs directory
       ionic_bus_register_driver()
         pci_register_driver()
           driver_register()
             bus_add_driver()
               priv = kzalloc(...) # OOM happened
       # return without destroy debugfs directory
    
    Fix by removing debugfs when ionic_bus_register_driver() returns error.
    
    Fixes: fbfb8031533c ("ionic: Add hardware init and device commands")
    Signed-off-by: Yuan Can <yuancan@huawei.com>
    Acked-by: Shannon Nelson <snelson@pensando.io>
    Link: https://lore.kernel.org/r/20221113092929.19161-1-yuancan@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb9924a6edd9d4a9ef83a5f337af60f8a7a68f98
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Thu Nov 10 23:24:41 2022 +0800

    xen/pcpu: fix possible memory leak in register_pcpu()
    
    [ Upstream commit da36a2a76b01b210ffaa55cdc2c99bc8783697c5 ]
    
    In device_add(), dev_set_name() is called to allocate name, if it returns
    error, the name need be freed. As comment of device_register() says, it
    should use put_device() to give up the reference in the error path. So fix
    this by calling put_device(), then the name can be freed in kobject_cleanup().
    
    Fixes: f65c9bb3fb72 ("xen/pcpu: Xen physical cpus online/offline sys interface")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20221110152441.401630-1-yangyingliang@huawei.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6a561bd4c53c5fc8cade48a555d3dc6acfb2c5b
Author: Gaosheng Cui <cuigaosheng1@huawei.com>
Date:   Fri Nov 11 15:04:33 2022 +0800

    bnxt_en: Remove debugfs when pci_register_driver failed
    
    [ Upstream commit 991aef4ee4f6eb999924f429b943441a32835c8f ]
    
    When pci_register_driver failed, we need to remove debugfs,
    which will caused a resource leak, fix it.
    
    Resource leak logs as follows:
    [   52.184456] debugfs: Directory 'bnxt_en' with parent '/' already present!
    
    Fixes: cabfb09d87bd ("bnxt_en: add debugfs support for DIM")
    Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Reviewed-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 389738f5dbc51f36ce735ee327f6d143b735a95f
Author: Zhengchao Shao <shaozhengchao@huawei.com>
Date:   Fri Nov 11 09:47:34 2022 +0800

    net: caif: fix double disconnect client in chnl_net_open()
    
    [ Upstream commit 8fbb53c8bfd8c56ecf1f78dc821778b58f505503 ]
    
    When connecting to client timeout, disconnect client for twice in
    chnl_net_open(). Remove one. Compile tested only.
    
    Fixes: 2aa40aef9deb ("caif: Use link layer MTU instead of fixed MTU")
    Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fb5ee1560babc51b3adb4a6239e79479838d71c6
Author: Chuang Wang <nashuiliang@gmail.com>
Date:   Fri Nov 11 09:41:30 2022 +0800

    net: macvlan: Use built-in RCU list checking
    
    [ Upstream commit 5df1341ea822292275c56744aab9c536d75c33be ]
    
    hlist_for_each_entry_rcu() has built-in RCU and lock checking.
    
    Pass cond argument to hlist_for_each_entry_rcu() to silence false
    lockdep warning when CONFIG_PROVE_RCU_LIST is enabled.
    
    Execute as follow:
    
     ip link add link eth0 type macvlan mode source macaddr add <MAC-ADDR>
    
    The rtnl_lock is held when macvlan_hash_lookup_source() or
    macvlan_fill_info_macaddr() are called in the non-RCU read side section.
    So, pass lockdep_rtnl_is_held() to silence false lockdep warning.
    
    Fixes: 79cf79abce71 ("macvlan: add source mode")
    Signed-off-by: Chuang Wang <nashuiliang@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 709aa1f73d3e9e9ea16e2c4e44f2874c5d2c382c
Author: Wang ShaoBo <bobo.shaobowang@huawei.com>
Date:   Thu Nov 10 19:38:23 2022 +0800

    mISDN: fix misuse of put_device() in mISDN_register_device()
    
    [ Upstream commit 2d25107e111a85c56f601a5470f1780ec054e6ac ]
    
    We should not release reference by put_device() before calling device_initialize().
    
    Fixes: e7d1d4d9ac0d ("mISDN: fix possible memory leak in mISDN_register_device()")
    Signed-off-by: Wang ShaoBo <bobo.shaobowang@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 417f2d2edf30a443189b8c6c820da991133f27cf
Author: Zhengchao Shao <shaozhengchao@huawei.com>
Date:   Thu Nov 10 18:30:37 2022 +0800

    net: liquidio: release resources when liquidio driver open failed
    
    [ Upstream commit 8979f428a4afc215e390006e5ea19fd4e22c7ca9 ]
    
    When liquidio driver open failed, it doesn't release resources. Compile
    tested only.
    
    Fixes: 5b07aee11227 ("liquidio: MSIX support for CN23XX")
    Fixes: dbc97bfd3918 ("net: liquidio: Add missing null pointer checks")
    Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4cba73f2d6fcda4d57e71f7966af5ac222cbad0d
Author: Yuan Can <yuancan@huawei.com>
Date:   Thu Nov 10 02:16:42 2022 +0000

    net: hinic: Fix error handling in hinic_module_init()
    
    [ Upstream commit 8eab9be56cc6b702a445d2b6d0256aa0992316b3 ]
    
    A problem about hinic create debugfs failed is triggered with the
    following log given:
    
     [  931.419023] debugfs: Directory 'hinic' with parent '/' already present!
    
    The reason is that hinic_module_init() returns pci_register_driver()
    directly without checking its return value, if pci_register_driver()
    failed, it returns without destroy the newly created debugfs, resulting
    the debugfs of hinic can never be created later.
    
     hinic_module_init()
       hinic_dbg_register_debugfs() # create debugfs directory
       pci_register_driver()
         driver_register()
           bus_add_driver()
             priv = kzalloc(...) # OOM happened
       # return without destroy debugfs directory
    
    Fix by removing debugfs when pci_register_driver() returns error.
    
    Fixes: 253ac3a97921 ("hinic: add support to query sq info")
    Signed-off-by: Yuan Can <yuancan@huawei.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Link: https://lore.kernel.org/r/20221110021642.80378-1-yuancan@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 083a2c9ef82e184bdf0b9f9a1e5fc38d32afbb47
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Wed Nov 9 21:28:32 2022 +0800

    mISDN: fix possible memory leak in mISDN_dsp_element_register()
    
    [ Upstream commit 98a2ac1ca8fd6eca6867726fe238d06e75eb1acd ]
    
    Afer commit 1fa5ae857bb1 ("driver core: get rid of struct device's
    bus_id string array"), the name of device is allocated dynamically,
    use put_device() to give up the reference, so that the name can be
    freed in kobject_cleanup() when the refcount is 0.
    
    The 'entry' is going to be freed in mISDN_dsp_dev_release(), so the
    kfree() is removed. list_del() is called in mISDN_dsp_dev_release(),
    so it need be initialized.
    
    Fixes: 1fa5ae857bb1 ("driver core: get rid of struct device's bus_id string array")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20221109132832.3270119-1-yangyingliang@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b23993d5bef1959926099b060c3e803e1caec6b
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Wed Nov 9 15:01:36 2022 +0000

    net: bgmac: Drop free_netdev() from bgmac_enet_remove()
    
    [ Upstream commit 6f928ab8ee9bfbcb0e631c47ea8a16c3d5116ff1 ]
    
    netdev is allocated in bgmac_alloc() with devm_alloc_etherdev() and will
    be auto released in ->remove and ->probe failure path. Using free_netdev()
    in bgmac_enet_remove() leads to double free.
    
    Fixes: 34a5102c3235 ("net: bgmac: allocate struct bgmac just once & don't copy it")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    
    Link: https://lore.kernel.org/r/20221109150136.2991171-1-weiyongjun@huaweicloud.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f6a73b25dabdd5e1bb4ca67bc0ee544de8fefd3
Author: Xu Kuohai <xukuohai@huawei.com>
Date:   Thu Nov 10 07:21:28 2022 -0500

    bpf: Initialize same number of free nodes for each pcpu_freelist
    
    [ Upstream commit 4b45cd81f737d79d0fbfc0d320a1e518e7f0bbf0 ]
    
    pcpu_freelist_populate() initializes nr_elems / num_possible_cpus() + 1
    free nodes for some CPUs, and then possibly one CPU with fewer nodes,
    followed by remaining cpus with 0 nodes. For example, when nr_elems == 256
    and num_possible_cpus() == 32, CPU 0~27 each gets 9 free nodes, CPU 28 gets
    4 free nodes, CPU 29~31 get 0 free nodes, while in fact each CPU should get
    8 nodes equally.
    
    This patch initializes nr_elems / num_possible_cpus() free nodes for each
    CPU firstly, then allocates the remaining free nodes by one for each CPU
    until no free nodes left.
    
    Fixes: e19494edab82 ("bpf: introduce percpu_freelist")
    Signed-off-by: Xu Kuohai <xukuohai@huawei.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20221110122128.105214-1-xukuohai@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef2ac07ab83163b9a53f45da20e14302591ad9cc
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Nov 8 21:40:04 2022 +0800

    ata: libata-transport: fix error handling in ata_tdev_add()
    
    [ Upstream commit 1ff36351309e3eadcff297480baf4785e726de9b ]
    
    In ata_tdev_add(), the return value of transport_add_device() is
    not checked. As a result, it causes null-ptr-deref while removing
    the module, because transport_remove_device() is called to remove
    the device that was not added.
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000000000000d0
    CPU: 13 PID: 13603 Comm: rmmod Kdump: loaded Tainted: G        W          6.1.0-rc3+ #36
    pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : device_del+0x48/0x3a0
    lr : device_del+0x44/0x3a0
    Call trace:
     device_del+0x48/0x3a0
     attribute_container_class_device_del+0x28/0x40
     transport_remove_classdev+0x60/0x7c
     attribute_container_device_trigger+0x118/0x120
     transport_remove_device+0x20/0x30
     ata_tdev_delete+0x24/0x50 [libata]
     ata_tlink_delete+0x40/0xa0 [libata]
     ata_tport_delete+0x2c/0x60 [libata]
     ata_port_detach+0x148/0x1b0 [libata]
     ata_pci_remove_one+0x50/0x80 [libata]
     ahci_remove_one+0x4c/0x8c [ahci]
    
    Fix this by checking and handling return value of transport_add_device()
    in ata_tdev_add(). In the error path, device_del() is called to delete
    the device which was added earlier in this function, and ata_tdev_free()
    is called to free ata_dev.
    
    Fixes: d9027470b886 ("[libata] Add ATA transport class")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7377a14598f6b04446c54bc4a50cd249470d6c6f
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Nov 8 21:40:03 2022 +0800

    ata: libata-transport: fix error handling in ata_tlink_add()
    
    [ Upstream commit cf0816f6322c5c37ee52655f928e91ecf32da103 ]
    
    In ata_tlink_add(), the return value of transport_add_device() is
    not checked. As a result, it causes null-ptr-deref while removing
    the module, because transport_remove_device() is called to remove
    the device that was not added.
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000000000000d0
    CPU: 33 PID: 13850 Comm: rmmod Kdump: loaded Tainted: G        W          6.1.0-rc3+ #12
    pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : device_del+0x48/0x39c
    lr : device_del+0x44/0x39c
    Call trace:
     device_del+0x48/0x39c
     attribute_container_class_device_del+0x28/0x40
     transport_remove_classdev+0x60/0x7c
     attribute_container_device_trigger+0x118/0x120
     transport_remove_device+0x20/0x30
     ata_tlink_delete+0x88/0xb0 [libata]
     ata_tport_delete+0x2c/0x60 [libata]
     ata_port_detach+0x148/0x1b0 [libata]
     ata_pci_remove_one+0x50/0x80 [libata]
     ahci_remove_one+0x4c/0x8c [ahci]
    
    Fix this by checking and handling return value of transport_add_device()
    in ata_tlink_add().
    
    Fixes: d9027470b886 ("[libata] Add ATA transport class")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b5362dc1634d8b8d5f30920f33ac11a3276b7ed9
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Nov 8 21:40:02 2022 +0800

    ata: libata-transport: fix error handling in ata_tport_add()
    
    [ Upstream commit 3613dbe3909dcc637fe6be00e4dc43b4aa0470ee ]
    
    In ata_tport_add(), the return value of transport_add_device() is
    not checked. As a result, it causes null-ptr-deref while removing
    the module, because transport_remove_device() is called to remove
    the device that was not added.
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000000000000d0
    CPU: 12 PID: 13605 Comm: rmmod Kdump: loaded Tainted: G        W          6.1.0-rc3+ #8
    pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : device_del+0x48/0x39c
    lr : device_del+0x44/0x39c
    Call trace:
     device_del+0x48/0x39c
     attribute_container_class_device_del+0x28/0x40
     transport_remove_classdev+0x60/0x7c
     attribute_container_device_trigger+0x118/0x120
     transport_remove_device+0x20/0x30
     ata_tport_delete+0x34/0x60 [libata]
     ata_port_detach+0x148/0x1b0 [libata]
     ata_pci_remove_one+0x50/0x80 [libata]
     ahci_remove_one+0x4c/0x8c [ahci]
    
    Fix this by checking and handling return value of transport_add_device()
    in ata_tport_add().
    
    Fixes: d9027470b886 ("[libata] Add ATA transport class")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac471468f7c16cda2525909946ca13ddbcd14000
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Nov 8 21:40:01 2022 +0800

    ata: libata-transport: fix double ata_host_put() in ata_tport_add()
    
    [ Upstream commit 8c76310740807ade5ecdab5888f70ecb6d35732e ]
    
    In the error path in ata_tport_add(), when calling put_device(),
    ata_tport_release() is called, it will put the refcount of 'ap->host'.
    
    And then ata_host_put() is called again, the refcount is decreased
    to 0, ata_host_release() is called, all ports are freed and set to
    null.
    
    When unbinding the device after failure, ata_host_stop() is called
    to release the resources, it leads a null-ptr-deref(), because all
    the ports all freed and null.
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
    CPU: 7 PID: 18671 Comm: modprobe Kdump: loaded Tainted: G            E      6.1.0-rc3+ #8
    pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : ata_host_stop+0x3c/0x84 [libata]
    lr : release_nodes+0x64/0xd0
    Call trace:
     ata_host_stop+0x3c/0x84 [libata]
     release_nodes+0x64/0xd0
     devres_release_all+0xbc/0x1b0
     device_unbind_cleanup+0x20/0x70
     really_probe+0x158/0x320
     __driver_probe_device+0x84/0x120
     driver_probe_device+0x44/0x120
     __driver_attach+0xb4/0x220
     bus_for_each_dev+0x78/0xdc
     driver_attach+0x2c/0x40
     bus_add_driver+0x184/0x240
     driver_register+0x80/0x13c
     __pci_register_driver+0x4c/0x60
     ahci_pci_driver_init+0x30/0x1000 [ahci]
    
    Fix this by removing redundant ata_host_put() in the error path.
    
    Fixes: 2623c7a5f279 ("libata: add refcounting to ata_host")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac4f404c250b3e3c0d350da6f7f834f371c5e9c1
Author: Marek Vasut <marex@denx.de>
Date:   Wed Nov 2 20:19:47 2022 +0100

    arm64: dts: imx8mn: Fix NAND controller size-cells
    
    [ Upstream commit 5468e93b5b1083eaa729f98e59da18c85d9c4126 ]
    
    The NAND controller size-cells should be 0 per DT bindings.
    Fix the following warning produces by DT bindings check:
    "
    nand-controller@33002000: #size-cells:0:0: 0 was expected
    nand-controller@33002000: Unevaluated properties are not allowed ('#address-cells', '#size-cells' were unexpected)
    "
    
    Fixes: 6c3debcbae47a ("arm64: dts: freescale: Add i.MX8MN dtsi support")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 30ece7dbeeca6b64c61441abbc2b99e356cced5a
Author: Marek Vasut <marex@denx.de>
Date:   Wed Nov 2 20:19:46 2022 +0100

    arm64: dts: imx8mm: Fix NAND controller size-cells
    
    [ Upstream commit 1610233bc2c2cae2dff9e101e6ea5ef69cceb0e9 ]
    
    The NAND controller size-cells should be 0 per DT bindings.
    Fix the following warning produces by DT bindings check:
    "
    nand-controller@33002000: #size-cells:0:0: 0 was expected
    nand-controller@33002000: Unevaluated properties are not allowed ('#address-cells', '#size-cells' were unexpected)
    "
    Fix the missing space in node name too.
    
    Fixes: a05ea40eb384e ("arm64: dts: imx: Add i.mx8mm dtsi support")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f68a9efd7895e2f951523323628377bcdd97d068
Author: Marek Vasut <marex@denx.de>
Date:   Wed Nov 2 20:19:45 2022 +0100

    ARM: dts: imx7: Fix NAND controller size-cells
    
    [ Upstream commit 753395ea1e45c724150070b5785900b6a44bd5fb ]
    
    The NAND controller size-cells should be 0 per DT bindings.
    Fix the following warning produces by DT bindings check:
    "
    nand-controller@33002000: #size-cells:0:0: 0 was expected
    nand-controller@33002000: Unevaluated properties are not allowed ('#address-cells', '#size-cells' were unexpected)
    "
    Fix the missing space in node name too.
    
    Fixes: e7495a45a76de ("ARM: dts: imx7: add GPMI NAND and APBH DMA")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d160dfb3fdf11ba9447e862c548447f91f4e74a
Author: Shang XiaoJing <shangxiaojing@huawei.com>
Date:   Tue Nov 1 15:07:16 2022 +0800

    drm: Fix potential null-ptr-deref in drm_vblank_destroy_worker()
    
    [ Upstream commit 4979524f5a2a8210e87fde2f642b0dc060860821 ]
    
    drm_vblank_init() call drmm_add_action_or_reset() with
    drm_vblank_init_release() as action. If __drmm_add_action() failed, will
    directly call drm_vblank_init_release() with the vblank whose worker is
    NULL. As the resule, a null-ptr-deref will happen in
    kthread_destroy_worker(). Add the NULL check before calling
    drm_vblank_destroy_worker().
    
    BUG: null-ptr-deref
    KASAN: null-ptr-deref in range [0x0000000000000068-0x000000000000006f]
    CPU: 5 PID: 961 Comm: modprobe Not tainted 6.0.0-11331-gd465bff130bf-dirty
    RIP: 0010:kthread_destroy_worker+0x25/0xb0
      Call Trace:
        <TASK>
        drm_vblank_init_release+0x124/0x220 [drm]
        ? drm_crtc_vblank_restore+0x8b0/0x8b0 [drm]
        __drmm_add_action_or_reset+0x41/0x50 [drm]
        drm_vblank_init+0x282/0x310 [drm]
        vkms_init+0x35f/0x1000 [vkms]
        ? 0xffffffffc4508000
        ? lock_is_held_type+0xd7/0x130
        ? __kmem_cache_alloc_node+0x1c2/0x2b0
        ? lock_is_held_type+0xd7/0x130
        ? 0xffffffffc4508000
        do_one_initcall+0xd0/0x4f0
        ...
        do_syscall_64+0x35/0x80
        entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    Fixes: 5e6c2b4f9161 ("drm/vblank: Add vblank works")
    Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20221101070716.9189-3-shangxiaojing@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c47a823ea186263ab69cfb665327b7f72cb5e779
Author: Shang XiaoJing <shangxiaojing@huawei.com>
Date:   Tue Nov 1 15:07:15 2022 +0800

    drm/drv: Fix potential memory leak in drm_dev_init()
    
    [ Upstream commit ff963634f7b2e0dc011349abb3fb81a0d074f443 ]
    
    drm_dev_init() will add drm_dev_init_release() as a callback. When
    drmm_add_action() failed, the release function won't be added. As the
    result, the ref cnt added by device_get() in drm_dev_init() won't be put
    by drm_dev_init_release(), which leads to the memleak. Use
    drmm_add_action_or_reset() instead of drmm_add_action() to prevent
    memleak.
    
    unreferenced object 0xffff88810bc0c800 (size 2048):
      comm "modprobe", pid 8322, jiffies 4305809845 (age 15.292s)
      hex dump (first 32 bytes):
        e8 cc c0 0b 81 88 ff ff ff ff ff ff 00 00 00 00  ................
        20 24 3c 0c 81 88 ff ff 18 c8 c0 0b 81 88 ff ff   $<.............
      backtrace:
        [<000000007251f72d>] __kmalloc+0x4b/0x1c0
        [<0000000045f21f26>] platform_device_alloc+0x2d/0xe0
        [<000000004452a479>] platform_device_register_full+0x24/0x1c0
        [<0000000089f4ea61>] 0xffffffffa0736051
        [<00000000235b2441>] do_one_initcall+0x7a/0x380
        [<0000000001a4a177>] do_init_module+0x5c/0x230
        [<000000002bf8a8e2>] load_module+0x227d/0x2420
        [<00000000637d6d0a>] __do_sys_finit_module+0xd5/0x140
        [<00000000c99fc324>] do_syscall_64+0x3f/0x90
        [<000000004d85aa77>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Fixes: 2cbf7fc6718b ("drm: Use drmm_ for drm_dev_init cleanup")
    Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20221101070716.9189-2-shangxiaojing@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c776a49d099cfc4fd9ccd49613ac03d4508d918d
Author: Aishwarya Kothari <aishwarya.kothari@toradex.com>
Date:   Wed Aug 31 16:16:22 2022 +0200

    drm/panel: simple: set bpc field for logic technologies displays
    
    [ Upstream commit 876153ab068b2507a19aa3ef481f5b00a2cc780f ]
    
    In case bpc is not set for a panel it then throws a WARN(). Add bpc to
    the panels logictechno_lt170410_2whc and logictechno_lt161010_2nh.
    
    Fixes: 5728fe7fa539 ("drm/panel: simple: add display timings for logic technologies displays")
    Signed-off-by: Aishwarya Kothari <aishwarya.kothari@toradex.com>
    Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220831141622.39605-1-francesco.dolcini@toradex.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 777430aa4ddccaa5accec6db90ffc1d47f00d471
Author: Zeng Heng <zengheng4@huawei.com>
Date:   Thu Nov 10 16:20:56 2022 +0800

    pinctrl: devicetree: fix null pointer dereferencing in pinctrl_dt_to_map
    
    [ Upstream commit 91d5c5060ee24fe8da88cd585bb43b843d2f0dce ]
    
    Here is the BUG report by KASAN about null pointer dereference:
    
    BUG: KASAN: null-ptr-deref in strcmp+0x2e/0x50
    Read of size 1 at addr 0000000000000000 by task python3/2640
    Call Trace:
     strcmp
     __of_find_property
     of_find_property
     pinctrl_dt_to_map
    
    kasprintf() would return NULL pointer when kmalloc() fail to allocate.
    So directly return ENOMEM, if kasprintf() return NULL pointer.
    
    Fixes: 57291ce295c0 ("pinctrl: core device tree mapping table parsing support")
    Signed-off-by: Zeng Heng <zengheng4@huawei.com>
    Link: https://lore.kernel.org/r/20221110082056.2014898-1-zengheng4@huawei.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bce3e6fe8ba7cc42d0111281f135204ce16e0d94
Author: Maciej W. Rozycki <macro@orcam.me.uk>
Date:   Fri Sep 23 19:52:08 2022 +0100

    parport_pc: Avoid FIFO port location truncation
    
    [ Upstream commit ab126f51c93a15093df604f661c9480854c005a3 ]
    
    Match the data type of a temporary holding a reference to the FIFO port
    with the type of the original reference coming from `struct parport',
    avoiding data truncation with LP64 ports such as SPARC64 that refer to
    PCI port I/O locations via their corresponding MMIO addresses and will
    therefore have non-zero bits in the high 32-bit part of the reference.
    And in any case it is cleaner to have the data types matching here.
    
    Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Link: https://lore.kernel.org/linux-pci/20220419033752.GA1101844@bhelgaas/
    Acked-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Link: https://lore.kernel.org/r/alpine.DEB.2.21.2209231912550.29493@angie.orcam.me.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a4b5423f88a17a36550ae8c16c46779b1ee42f4b
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Fri Nov 4 10:13:34 2022 +0800

    siox: fix possible memory leak in siox_device_add()
    
    [ Upstream commit 6e63153db50059fb78b8a8447b132664887d24e3 ]
    
    If device_register() returns error in siox_device_add(),
    the name allocated by dev_set_name() need be freed. As
    comment of device_register() says, it should use put_device()
    to give up the reference in the error path. So fix this
    by calling put_device(), then the name can be freed in
    kobject_cleanup(), and sdevice is freed in siox_device_release(),
    set it to null in error path.
    
    Fixes: bbecb07fa0af ("siox: new driver framework for eckelmann SIOX")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Reviewed-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/20221104021334.618189-1-yangyingliang@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0679f571d3de82a3f59a3d758a32c76506aaa464
Author: D Scott Phillips <scott@os.amperecomputing.com>
Date:   Wed Nov 2 09:01:06 2022 -0700

    arm64: Fix bit-shifting UB in the MIDR_CPU_MODEL() macro
    
    [ Upstream commit 8ec8490a1950efeccb00967698cf7cb2fcd25ca7 ]
    
    CONFIG_UBSAN_SHIFT with gcc-5 complains that the shifting of
    ARM_CPU_IMP_AMPERE (0xC0) into bits [31:24] by MIDR_CPU_MODEL() is
    undefined behavior. Well, sort of, it actually spells the error as:
    
     arch/arm64/kernel/proton-pack.c: In function 'spectre_bhb_loop_affected':
     arch/arm64/include/asm/cputype.h:44:2: error: initializer element is not constant
       (((imp)   << MIDR_IMPLEMENTOR_SHIFT) | \
       ^
    
    This isn't an issue for other Implementor codes, as all the other codes
    have zero in the top bit and so are representable as a signed int.
    
    Cast the implementor code to unsigned in MIDR_CPU_MODEL to remove the
    undefined behavior.
    
    Fixes: 0e5d5ae837c8 ("arm64: Add AMPERE1 to the Spectre-BHB affected list")
    Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: D Scott Phillips <scott@os.amperecomputing.com>
    Link: https://lore.kernel.org/r/20221102160106.1096948-1-scott@os.amperecomputing.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58636b5ff3f654fd348ad217f9ac7a18201d4164
Author: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Date:   Mon Nov 7 23:39:44 2022 +0300

    block: sed-opal: kmalloc the cmd/resp buffers
    
    [ Upstream commit f829230dd51974c1f4478900ed30bb77ba530b40 ]
    
    In accordance with [1] the DMA-able memory buffers must be
    cacheline-aligned otherwise the cache writing-back and invalidation
    performed during the mapping may cause the adjacent data being lost. It's
    specifically required for the DMA-noncoherent platforms [2]. Seeing the
    opal_dev.{cmd,resp} buffers are implicitly used for DMAs in the NVME and
    SCSI/SD drivers in framework of the nvme_sec_submit() and sd_sec_submit()
    methods respectively they must be cacheline-aligned to prevent the denoted
    problem. One of the option to guarantee that is to kmalloc the buffers
    [2]. Let's explicitly allocate them then instead of embedding into the
    opal_dev structure instance.
    
    Note this fix was inspired by the commit c94b7f9bab22 ("nvme-hwmon:
    kmalloc the NVME SMART log buffer").
    
    [1] Documentation/core-api/dma-api.rst
    [2] Documentation/core-api/dma-api-howto.rst
    
    Fixes: 455a7b238cd6 ("block: Add Sed-opal library")
    Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20221107203944.31686-1-Sergey.Semin@baikalelectronics.ru
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e27458b18b35caee4b27b37a4a9c503b93cae5cc
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Nov 4 17:45:16 2022 -0400

    sctp: clear out_curr if all frag chunks of current msg are pruned
    
    [ Upstream commit 2f201ae14ae0f91dbf1cffea7bb1e29e81d4d108 ]
    
    A crash was reported by Zhen Chen:
    
      list_del corruption, ffffa035ddf01c18->next is NULL
      WARNING: CPU: 1 PID: 250682 at lib/list_debug.c:49 __list_del_entry_valid+0x59/0xe0
      RIP: 0010:__list_del_entry_valid+0x59/0xe0
      Call Trace:
       sctp_sched_dequeue_common+0x17/0x70 [sctp]
       sctp_sched_fcfs_dequeue+0x37/0x50 [sctp]
       sctp_outq_flush_data+0x85/0x360 [sctp]
       sctp_outq_uncork+0x77/0xa0 [sctp]
       sctp_cmd_interpreter.constprop.0+0x164/0x1450 [sctp]
       sctp_side_effects+0x37/0xe0 [sctp]
       sctp_do_sm+0xd0/0x230 [sctp]
       sctp_primitive_SEND+0x2f/0x40 [sctp]
       sctp_sendmsg_to_asoc+0x3fa/0x5c0 [sctp]
       sctp_sendmsg+0x3d5/0x440 [sctp]
       sock_sendmsg+0x5b/0x70
    
    and in sctp_sched_fcfs_dequeue() it dequeued a chunk from stream
    out_curr outq while this outq was empty.
    
    Normally stream->out_curr must be set to NULL once all frag chunks of
    current msg are dequeued, as we can see in sctp_sched_dequeue_done().
    However, in sctp_prsctp_prune_unsent() as it is not a proper dequeue,
    sctp_sched_dequeue_done() is not called to do this.
    
    This patch is to fix it by simply setting out_curr to NULL when the
    last frag chunk of current msg is dequeued from out_curr stream in
    sctp_prsctp_prune_unsent().
    
    Fixes: 5bbbbe32a431 ("sctp: introduce stream scheduler foundations")
    Reported-by: Zhen Chen <chenzhen126@huawei.com>
    Tested-by: Caowangbao <caowangbao@huawei.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0b4c259b63eaab592987c47f41f32e4e2f5d4fbe
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Nov 4 17:45:15 2022 -0400

    sctp: remove the unnecessary sinfo_stream check in sctp_prsctp_prune_unsent
    
    [ Upstream commit 9f0b773210c27a8f5d98ddb2fc4ba60a42a3285f ]
    
    Since commit 5bbbbe32a431 ("sctp: introduce stream scheduler foundations"),
    sctp_stream_outq_migrate() has been called in sctp_stream_init/update to
    removes those chunks to streams higher than the new max. There is no longer
    need to do such check in sctp_prsctp_prune_unsent().
    
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 2f201ae14ae0 ("sctp: clear out_curr if all frag chunks of current msg are pruned")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7360e7c29d276631f2af15d68d138f7f9e72803a
Author: Chen Zhongjin <chenzhongjin@huawei.com>
Date:   Mon Oct 31 21:40:31 2022 +0800

    ASoC: soc-utils: Remove __exit for snd_soc_util_exit()
    
    [ Upstream commit 314d34fe7f0a5836cb0472950c1f17744b4efde8 ]
    
    snd_soc_util_exit() is called in __init snd_soc_init() for cleanup.
    Remove the __exit annotation for it to fix the build warning:
    
    WARNING: modpost: sound/soc/snd-soc-core.o: section mismatch in reference: init_module (section: .init.text) -> snd_soc_util_exit (section: .exit.text)
    
    Fixes: 6ec27c53886c ("ASoC: core: Fix use-after-free in snd_soc_exit()")
    Signed-off-by: Chen Zhongjin <chenzhongjin@huawei.com>
    Link: https://lore.kernel.org/r/20221031134031.256511-1-chenzhongjin@huawei.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e60f37a1d379c821c17b08f366412dce9ef3d99f
Author: Baisong Zhong <zhongbaisong@huawei.com>
Date:   Wed Nov 2 16:16:20 2022 +0800

    bpf, test_run: Fix alignment problem in bpf_prog_test_run_skb()
    
    [ Upstream commit d3fd203f36d46aa29600a72d57a1b61af80e4a25 ]
    
    We got a syzkaller problem because of aarch64 alignment fault
    if KFENCE enabled. When the size from user bpf program is an odd
    number, like 399, 407, etc, it will cause the struct skb_shared_info's
    unaligned access. As seen below:
    
      BUG: KFENCE: use-after-free read in __skb_clone+0x23c/0x2a0 net/core/skbuff.c:1032
    
      Use-after-free read at 0xffff6254fffac077 (in kfence-#213):
       __lse_atomic_add arch/arm64/include/asm/atomic_lse.h:26 [inline]
       arch_atomic_add arch/arm64/include/asm/atomic.h:28 [inline]
       arch_atomic_inc include/linux/atomic-arch-fallback.h:270 [inline]
       atomic_inc include/asm-generic/atomic-instrumented.h:241 [inline]
       __skb_clone+0x23c/0x2a0 net/core/skbuff.c:1032
       skb_clone+0xf4/0x214 net/core/skbuff.c:1481
       ____bpf_clone_redirect net/core/filter.c:2433 [inline]
       bpf_clone_redirect+0x78/0x1c0 net/core/filter.c:2420
       bpf_prog_d3839dd9068ceb51+0x80/0x330
       bpf_dispatcher_nop_func include/linux/bpf.h:728 [inline]
       bpf_test_run+0x3c0/0x6c0 net/bpf/test_run.c:53
       bpf_prog_test_run_skb+0x638/0xa7c net/bpf/test_run.c:594
       bpf_prog_test_run kernel/bpf/syscall.c:3148 [inline]
       __do_sys_bpf kernel/bpf/syscall.c:4441 [inline]
       __se_sys_bpf+0xad0/0x1634 kernel/bpf/syscall.c:4381
    
      kfence-#213: 0xffff6254fffac000-0xffff6254fffac196, size=407, cache=kmalloc-512
    
      allocated by task 15074 on cpu 0 at 1342.585390s:
       kmalloc include/linux/slab.h:568 [inline]
       kzalloc include/linux/slab.h:675 [inline]
       bpf_test_init.isra.0+0xac/0x290 net/bpf/test_run.c:191
       bpf_prog_test_run_skb+0x11c/0xa7c net/bpf/test_run.c:512
       bpf_prog_test_run kernel/bpf/syscall.c:3148 [inline]
       __do_sys_bpf kernel/bpf/syscall.c:4441 [inline]
       __se_sys_bpf+0xad0/0x1634 kernel/bpf/syscall.c:4381
       __arm64_sys_bpf+0x50/0x60 kernel/bpf/syscall.c:4381
    
    To fix the problem, we adjust @size so that (@size + @hearoom) is a
    multiple of SMP_CACHE_BYTES. So we make sure the struct skb_shared_info
    is aligned to a cache line.
    
    Fixes: 1cf1cae963c2 ("bpf: introduce BPF_PROG_TEST_RUN command")
    Signed-off-by: Baisong Zhong <zhongbaisong@huawei.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/bpf/20221102081620.1465154-1-zhongbaisong@huawei.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b8fe1a5aa7330590b9bc3a57d43f488711e14955
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Sun Oct 2 12:07:09 2022 +0800

    tty: n_gsm: fix sleep-in-atomic-context bug in gsm_control_send
    
    [ Upstream commit 7b7dfe4833c70a11cdfa51b38705103bd31eddaa ]
    
    The function gsm_dlci_t1() is a timer handler that runs in an
    atomic context, but it calls "kzalloc(..., GFP_KERNEL)" that
    may sleep. As a result, the sleep-in-atomic-context bug will
    happen. The process is shown below:
    
    gsm_dlci_t1()
     gsm_dlci_open()
      gsm_modem_update()
       gsm_modem_upd_via_msc()
        gsm_control_send()
         kzalloc(sizeof(.., GFP_KERNEL) //may sleep
    
    This patch changes the gfp_t parameter of kzalloc() from GFP_KERNEL to
    GFP_ATOMIC in order to mitigate the bug.
    
    Fixes: e1eaea46bb40 ("tty: n_gsm line discipline")
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Link: https://lore.kernel.org/r/20221002040709.27849-1-duoming@zju.edu.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a3160f4ffc70ee4bfa1521f698dace06e6091fd
Author: Shawn Guo <shawn.guo@linaro.org>
Date:   Wed Oct 12 20:13:53 2022 +0800

    serial: imx: Add missing .thaw_noirq hook
    
    [ Upstream commit 4561d8008a467cb05ac632a215391d6b787f40aa ]
    
    The following warning is seen with non-console UART instance when
    system hibernates.
    
    [   37.371969] ------------[ cut here ]------------
    [   37.376599] uart3_root_clk already disabled
    [   37.380810] WARNING: CPU: 0 PID: 296 at drivers/clk/clk.c:952 clk_core_disable+0xa4/0xb0
    ...
    [   37.506986] Call trace:
    [   37.509432]  clk_core_disable+0xa4/0xb0
    [   37.513270]  clk_disable+0x34/0x50
    [   37.516672]  imx_uart_thaw+0x38/0x5c
    [   37.520250]  platform_pm_thaw+0x30/0x6c
    [   37.524089]  dpm_run_callback.constprop.0+0x3c/0xd4
    [   37.528972]  device_resume+0x7c/0x160
    [   37.532633]  dpm_resume+0xe8/0x230
    [   37.536036]  hibernation_snapshot+0x288/0x430
    [   37.540397]  hibernate+0x10c/0x2e0
    [   37.543798]  state_store+0xc4/0xd0
    [   37.547203]  kobj_attr_store+0x1c/0x30
    [   37.550953]  sysfs_kf_write+0x48/0x60
    [   37.554619]  kernfs_fop_write_iter+0x118/0x1ac
    [   37.559063]  new_sync_write+0xe8/0x184
    [   37.562812]  vfs_write+0x230/0x290
    [   37.566214]  ksys_write+0x68/0xf4
    [   37.569529]  __arm64_sys_write+0x20/0x2c
    [   37.573452]  invoke_syscall.constprop.0+0x50/0xf0
    [   37.578156]  do_el0_svc+0x11c/0x150
    [   37.581648]  el0_svc+0x30/0x140
    [   37.584792]  el0t_64_sync_handler+0xe8/0xf0
    [   37.588976]  el0t_64_sync+0x1a0/0x1a4
    [   37.592639] ---[ end trace 56e22eec54676d75 ]---
    
    On hibernating, pm core calls into related hooks in sequence like:
    
        .freeze
        .freeze_noirq
        .thaw_noirq
        .thaw
    
    With .thaw_noirq hook being absent, the clock will be disabled in a
    unbalanced call which results the warning above.
    
        imx_uart_freeze()
            clk_prepare_enable()
        imx_uart_suspend_noirq()
            clk_disable()
        imx_uart_thaw
            clk_disable_unprepare()
    
    Adding the missing .thaw_noirq hook as imx_uart_resume_noirq() will have
    the call sequence corrected as below and thus fix the warning.
    
        imx_uart_freeze()
            clk_prepare_enable()
        imx_uart_suspend_noirq()
            clk_disable()
        imx_uart_resume_noirq()
            clk_enable()
        imx_uart_thaw
            clk_disable_unprepare()
    
    Fixes: 09df0b3464e5 ("serial: imx: fix endless loop during suspend")
    Reviewed-by: Martin Kaiser <martin@kaiser.cx>
    Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
    Link: https://lore.kernel.org/r/20221012121353.2346280-1-shawn.guo@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7e1f908e65c56b06c2ccdc1c8c8034bbb1e2de62
Author: Tony Lindgren <tony@atomide.com>
Date:   Fri Oct 28 14:00:44 2022 +0300

    serial: 8250: omap: Flush PM QOS work on remove
    
    [ Upstream commit d0b68629bd2fb61e0171a62f2e8da3db322f5cf6 ]
    
    Rebinding 8250_omap in a loop will at some point produce a warning for
    kernel/power/qos.c:296 cpu_latency_qos_update_request() with error
    "cpu_latency_qos_update_request called for unknown object". Let's flush
    the possibly pending PM QOS work scheduled from omap8250_runtime_suspend()
    before we disable runtime PM.
    
    Fixes: 61929cf0169d ("tty: serial: Add 8250-core based omap driver")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Link: https://lore.kernel.org/r/20221028110044.54719-1-tony@atomide.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d833cba201adf9237168e19f0d76e4d7aa69f303
Author: Tony Lindgren <tony@atomide.com>
Date:   Fri Oct 28 13:58:13 2022 +0300

    serial: 8250: omap: Fix unpaired pm_runtime_put_sync() in omap8250_remove()
    
    [ Upstream commit e3f0c638f428fd66b5871154b62706772045f91a ]
    
    On remove, we get an error for "Runtime PM usage count underflow!". I guess
    this driver is mostly built-in, and this issue has gone unnoticed for a
    while. Somehow I did not catch this issue with my earlier fix done with
    commit 4e0f5cc65098 ("serial: 8250_omap: Fix probe and remove for PM
    runtime").
    
    Fixes: 4e0f5cc65098 ("serial: 8250_omap: Fix probe and remove for PM runtime")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Depends-on: dd8088d5a896 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter")
    Link: https://lore.kernel.org/r/20221028105813.54290-1-tony@atomide.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b0b6ea651ecf1fc17d4841d42b37dede1195841b
Author: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Date:   Thu Oct 13 13:23:39 2022 +0200

    serial: 8250_omap: remove wait loop from Errata i202 workaround
    
    [ Upstream commit e828e56684d61b17317e0cfdef83791fa61cb76b ]
    
    We were occasionally seeing the "Errata i202: timedout" on an AM335x
    board when repeatedly opening and closing a UART connected to an active
    sender. As new input may arrive at any time, it is possible to miss the
    "RX FIFO empty" condition, forcing the loop to wait until it times out.
    
    Nothing in the i202 Advisory states that such a wait is even necessary;
    other FIFO clear functions like serial8250_clear_fifos() do not wait
    either. For this reason, it seems safe to remove the wait, fixing the
    mentioned issue.
    
    Fixes: 61929cf0169d ("tty: serial: Add 8250-core based omap driver")
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
    Link: https://lore.kernel.org/r/20221013112339.2540767-1-matthias.schiffer@ew.tq-group.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f14c312c2189a39b5b720da7ec783f9f1daf5112
Author: Tony Lindgren <tony@atomide.com>
Date:   Mon Oct 24 09:36:13 2022 +0300

    serial: 8250: omap: Fix missing PM runtime calls for omap8250_set_mctrl()
    
    [ Upstream commit 93810191f5d23652c0b8a1a9b3a4a89d6fd5063e ]
    
    There are cases where omap8250_set_mctrl() may get called after the
    UART has already autoidled causing an asynchronous external abort.
    
    This can happen on ttyport_open():
    
    mem_serial_in from omap8250_set_mctrl+0x38/0xa0
    omap8250_set_mctrl from uart_update_mctrl+0x4c/0x58
    uart_update_mctrl from uart_dtr_rts+0x60/0xa8
    uart_dtr_rts from tty_port_block_til_ready+0xd0/0x2a8
    tty_port_block_til_ready from uart_open+0x14/0x1c
    uart_open from ttyport_open+0x64/0x148
    
    And on ttyport_close():
    
    omap8250_set_mctrl from uart_update_mctrl+0x3c/0x48
    uart_update_mctrl from uart_dtr_rts+0x54/0x9c
    uart_dtr_rts from tty_port_shutdown+0x78/0x9c
    tty_port_shutdown from tty_port_close+0x3c/0x74
    tty_port_close from ttyport_close+0x40/0x58
    
    It can also happen on disassociate_ctty() calling uart_shutdown()
    that ends up calling omap8250_set_mctrl().
    
    Let's fix the issue by adding missing PM runtime calls to
    omap8250_set_mctrl(). To do this, we need to add __omap8250_set_mctrl()
    that can be called from both omap8250_set_mctrl(), and from runtime PM
    resume path when restoring the registers.
    
    Fixes: 61929cf0169d ("tty: serial: Add 8250-core based omap driver")
    Reported-by: Merlijn Wajer <merlijn@wizzup.org>
    Reported-by: Romain Naour <romain.naour@smile.fr>
    Reported-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
    Tested-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Depends-on: dd8088d5a896 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter")
    Link: https://lore.kernel.org/r/20221024063613.25943-1-tony@atomide.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 85cdbf04b435d40db127869afb6611f13df9a02c
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon Jun 6 13:04:33 2022 +0300

    serial: 8250: Remove serial_rs485 sanitization from em485
    
    [ Upstream commit 84f2faa7852e1f55d89bb0c99b3a672b87b11f87 ]
    
    Serial core handles serial_rs485 sanitization.
    
    When em485 init fails, there are two possible paths of entry:
    
      1) uart_rs485_config (init path) that fully clears port->rs485 on
         error.
    
      2) ioctl path with a pre-existing, valid port->rs485 unto which the
         kernel falls back on error and port->rs485 should therefore be
         kept untouched. The temporary rs485 struct is not returned to
         userspace in case of error so its flag don't matter.
    
    ...Thus SER_RS485_ENABLED clearing on error can/should be dropped.
    
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20220606100433.13793-37-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: 93810191f5d2 ("serial: 8250: omap: Fix missing PM runtime calls for omap8250_set_mctrl()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f5dedad4059b99ad3f6ce9f9c74c0cf1ea3cb1ea
Author: Martin Povišer <povik+lin@cutebit.org>
Date:   Thu Oct 27 11:57:59 2022 +0200

    ASoC: tas2764: Fix set_tdm_slot in case of single slot
    
    [ Upstream commit faac764ea1ea6898d93e46c403271fb105c0906e ]
    
    There's a special branch in the set_tdm_slot op for the case of nslots
    being 1, but:
    
     (1) That branch can never work (there's a check for tx_mask being
         non-zero, later there's another check for it *being* zero; one or
         the other always throws -EINVAL).
    
     (2) The intention of the branch seems to be what the general other
         branch reduces to in case of nslots being 1.
    
    For those reasons remove the 'nslots being 1' special case.
    
    Fixes: 827ed8a0fa50 ("ASoC: tas2764: Add the driver for the TAS2764")
    Suggested-by: Jos Dehaes <jos.dehaes@gmail.com>
    Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
    Link: https://lore.kernel.org/r/20221027095800.16094-2-povik+lin@cutebit.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9e82d78fbe54f5ca02e0397271a8b5207ccb07b5
Author: Martin Povišer <povik+lin@cutebit.org>
Date:   Thu Oct 27 11:57:58 2022 +0200

    ASoC: tas2770: Fix set_tdm_slot in case of single slot
    
    [ Upstream commit e59bf547a7dd366f93bfebb7487959580ca6c0ec ]
    
    There's a special branch in the set_tdm_slot op for the case of nslots
    being 1, but:
    
     (1) That branch can never work (there's a check for tx_mask being
         non-zero, later there's another check for it *being* zero; one or
         the other always throws -EINVAL).
    
     (2) The intention of the branch seems to be what the general other
         branch reduces to in case of nslots being 1.
    
    For those reasons remove the 'nslots being 1' special case.
    
    Fixes: 1a476abc723e ("tas2770: add tas2770 smart PA kernel driver")
    Suggested-by: Jos Dehaes <jos.dehaes@gmail.com>
    Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
    Link: https://lore.kernel.org/r/20221027095800.16094-1-povik+lin@cutebit.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d21554ec7680e9585fb852d933203c3db60dad1
Author: Chen Zhongjin <chenzhongjin@huawei.com>
Date:   Fri Oct 28 11:16:03 2022 +0800

    ASoC: core: Fix use-after-free in snd_soc_exit()
    
    [ Upstream commit 6ec27c53886c8963729885bcf2dd996eba2767a7 ]
    
    KASAN reports a use-after-free:
    
    BUG: KASAN: use-after-free in device_del+0xb5b/0xc60
    Read of size 8 at addr ffff888008655050 by task rmmod/387
    CPU: 2 PID: 387 Comm: rmmod
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996)
    Call Trace:
    <TASK>
    dump_stack_lvl+0x79/0x9a
    print_report+0x17f/0x47b
    kasan_report+0xbb/0xf0
    device_del+0xb5b/0xc60
    platform_device_del.part.0+0x24/0x200
    platform_device_unregister+0x2e/0x40
    snd_soc_exit+0xa/0x22 [snd_soc_core]
    __do_sys_delete_module.constprop.0+0x34f/0x5b0
    do_syscall_64+0x3a/0x90
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    ...
    </TASK>
    
    It's bacause in snd_soc_init(), snd_soc_util_init() is possble to fail,
    but its ret is ignored, which makes soc_dummy_dev unregistered twice.
    
    snd_soc_init()
        snd_soc_util_init()
            platform_device_register_simple(soc_dummy_dev)
            platform_driver_register() # fail
            platform_device_unregister(soc_dummy_dev)
        platform_driver_register() # success
    ...
    snd_soc_exit()
        snd_soc_util_exit()
        # soc_dummy_dev will be unregistered for second time
    
    To fix it, handle error and stop snd_soc_init() when util_init() fail.
    Also clean debugfs when util_init() or driver_register() fail.
    
    Fixes: fb257897bf20 ("ASoC: Work around allmodconfig failure")
    Signed-off-by: Chen Zhongjin <chenzhongjin@huawei.com>
    Link: https://lore.kernel.org/r/20221028031603.59416-1-chenzhongjin@huawei.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 38ca9bd336c8affd46a33b944ad2b33cecfbd476
Author: Marek Vasut <marex@denx.de>
Date:   Tue Oct 18 20:35:13 2022 +0200

    spi: stm32: Print summary 'callbacks suppressed' message
    
    [ Upstream commit 195583504be28df5d608a4677dd796117aea875f ]
    
    The original fix "spi: stm32: Rate-limit the 'Communication suspended' message"
    still leads to "stm32h7_spi_irq_thread: 1696 callbacks suppressed" spew in the
    kernel log. Since this 'Communication suspended' message is a debug print, add
    RATELIMIT_MSG_ON_RELEASE flag to inhibit the "callbacks suspended" part during
    normal operation and only print summary at the end.
    
    Fixes: ea8be08cc9358 ("spi: stm32: Rate-limit the 'Communication suspended' message")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Link: https://lore.kernel.org/r/20221018183513.206706-1-marex@denx.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a180da5564b5ad0270b28b85fc946b06c11058b5
Author: Guchun Chen <guchun.chen@amd.com>
Date:   Mon Nov 7 16:46:59 2022 +0800

    drm/amdgpu: disable BACO on special BEIGE_GOBY card
    
    [ Upstream commit 0c85c067c9d9d7a1b2cc2e01a236d5d0d4a872b5 ]
    
    Still avoid intermittent failure.
    
    Signed-off-by: Guchun Chen <guchun.chen@amd.com>
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Acked-by: Evan Quan <evan.quan@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3adf0adf306e82c343206f5cfa87cccf3ca6f82
Author: Guchun Chen <guchun.chen@amd.com>
Date:   Wed Sep 7 20:31:36 2022 +0800

    drm/amd/pm: disable BACO entry/exit completely on several sienna cichlid cards
    
    [ Upstream commit 7bb91228291aa95bfee3b9d5710887673711c74c ]
    
    To avoid hardware intermittent failures.
    
    Signed-off-by: Guchun Chen <guchun.chen@amd.com>
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 0c85c067c9d9 ("drm/amdgpu: disable BACO on special BEIGE_GOBY card")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b0faeff69a0a6829642b7d3bf06bcc103f8aae39
Author: Lijo Lazar <lijo.lazar@amd.com>
Date:   Fri Jun 4 15:33:48 2021 +0800

    drm/amd/pm: Read BIF STRAP also for BACO check
    
    [ Upstream commit 458020dd4f7109693d4857ed320398e662e8899a ]
    
    Avoid reading BIF STRAP each time for BACO capability. Read the STRAP
    value while checking BACO capability in PPTable.
    
    Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
    Reviewed-by: Evan Quan <evan.quan@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 0c85c067c9d9 ("drm/amdgpu: disable BACO on special BEIGE_GOBY card")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6958556285ec640e73fea18ed48b2514ebd2359e
Author: Evan Quan <evan.quan@amd.com>
Date:   Mon Dec 7 16:21:03 2020 +0800

    drm/amd/pm: support power source switch on Sienna Cichlid
    
    [ Upstream commit 18a4b3de5fc1c63c80e3be0673886431a56e4307 ]
    
    Enable power source switch on Sienna Cichlid.
    
    Signed-off-by: Evan Quan <evan.quan@amd.com>
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 0c85c067c9d9 ("drm/amdgpu: disable BACO on special BEIGE_GOBY card")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7daab001a6f618a1ac797a6ec40f231e8666d93e
Author: Haibo Chen <haibo.chen@nxp.com>
Date:   Tue Nov 8 15:45:03 2022 +0800

    mmc: sdhci-esdhc-imx: use the correct host caps for MMC_CAP_8_BIT_DATA
    
    [ Upstream commit f002f45a00ee14214d96b18b9a555fe2c56afb20 ]
    
    MMC_CAP_8_BIT_DATA belongs to struct mmc_host, not struct sdhci_host.
    So correct it here.
    
    Fixes: 1ed5c3b22fc7 ("mmc: sdhci-esdhc-imx: Propagate ESDHC_FLAG_HS400* only on 8bit bus")
    Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
    Cc: stable@vger.kernel.org
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Link: https://lore.kernel.org/r/1667893503-20583-1-git-send-email-haibo.chen@nxp.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65ac4d1807d2dd4a77833902b1d4c2e73edf7d37
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Tue Oct 25 09:28:00 2022 +0300

    spi: intel: Use correct mask for flash and protected regions
    
    [ Upstream commit 92a66cbf6b30eda5719fbdfb24cd15fb341bba32 ]
    
    The flash and protected region mask is actually 0x7fff (30:16 and 14:0)
    and not 0x3fff so fix this accordingly. While there use GENMASK() instead.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://lore.kernel.org/r/20221025062800.22357-1-mika.westerberg@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 23793518a7523887266769d9345c683e08c590e8
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Wed Feb 9 15:27:04 2022 +0300

    mtd: spi-nor: intel-spi: Disable write protection only if asked
    
    [ Upstream commit cd149eff8d2201a63c074a6d9d03e52926aa535d ]
    
    Currently the driver tries to disable the BIOS write protection
    automatically even if this is not what the user wants. For this reason
    modify the driver so that by default it does not touch the write
    protection. Only if specifically asked by the user (setting writeable=1
    command line parameter) the driver tries to disable the BIOS write
    protection.
    
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Mauro Lima <mauro.lima@eclypsium.com>
    Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com>
    Acked-by: Lee Jones <lee.jones@linaro.org>
    Link: https://lore.kernel.org/r/20220209122706.42439-2-mika.westerberg@linux.intel.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 92a66cbf6b30 ("spi: intel: Use correct mask for flash and protected regions")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a326fffdc78bc535152ea400beb811977a1da8d3
Author: Alexander Sergeyev <sergeev917@gmail.com>
Date:   Fri Jan 14 19:50:50 2022 +0300

    ALSA: hda/realtek: fix speakers and micmute on HP 855 G8
    
    [ Upstream commit 91502a9a0b0d5252cf3f32ebd898823c2f5aadab ]
    
    There are several PCI ids associated with HP EliteBook 855 G8 Notebook
    PC. Commit 0e68c4b11f1e6 ("ALSA: hda/realtek: fix mute/micmute LEDs for
    HP 855 G8") covers 0x103c:0x8896, while this commit covers 0x103c:0x8895
    which needs some additional work on top of the quirk from 0e68c4b11f1e6.
    
    Note that the device can boot up with working speakers and micmute LED
    without this patch, but the success rate would be quite low (order of
    16 working boots across 709 boots) at least for the built-in drivers
    scenario. This also means that there are some timing issues during early
    boot and this patch is a workaround.
    
    With this patch applied speakers and headphones are consistenly working,
    as well as mute/micmute LEDs and the internal microphone.
    
    Signed-off-by: Alexander Sergeyev <sergeev917@gmail.com>
    Link: https://lore.kernel.org/r/20220114165050.ouw2nknuspclynro@localhost.localdomain
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 24839d027c8352104c92f1fe5d2b8e59fca0c442
Author: Colin Ian King <colin.i.king@gmail.com>
Date:   Wed Oct 19 08:16:39 2022 +0100

    ASoC: codecs: jz4725b: Fix spelling mistake "Sourc" -> "Source", "Routee" -> "Route"
    
    [ Upstream commit df496157a5afa1b6d1f4c46ad6549c2c346d1e59 ]
    
    There are two spelling mistakes in codec routing description. Fix it.
    
    Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Acked-by: Paul Cercueil <paul@crapouillou.net>
    Link: https://lore.kernel.org/r/20221019071639.1003730-1-colin.i.king@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bd487932408d462ed86b10833da35c61f618f62f
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Mon Oct 31 16:10:33 2022 -0700

    Bluetooth: L2CAP: Fix l2cap_global_chan_by_psm
    
    [ Upstream commit f937b758a188d6fd328a81367087eddbb2fce50f ]
    
    l2cap_global_chan_by_psm shall not return fixed channels as they are not
    meant to be connected by (S)PSM.
    
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Reviewed-by: Tedd Ho-Jeong An <tedd.an@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce75e9085988e51dbf2f57fd7c49aa4457fa892e
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Nov 1 16:15:40 2022 +0000

    btrfs: remove pointless and double ulist frees in error paths of qgroup tests
    
    [ Upstream commit d0ea17aec12ea0f7b9d2ed727d8ef8169d1e7699 ]
    
    Several places in the qgroup self tests follow the pattern of freeing the
    ulist pointer they passed to btrfs_find_all_roots() if the call to that
    function returned an error. That is pointless because that function always
    frees the ulist in case it returns an error.
    
    Also In some places like at test_multiple_refs(), after a call to
    btrfs_qgroup_account_extent() we also leave "old_roots" and "new_roots"
    pointing to ulists that were freed, because btrfs_qgroup_account_extent()
    has freed those ulists, and if after that the next call to
    btrfs_find_all_roots() fails, we call ulist_free() on the "old_roots"
    ulist again, resulting in a double free.
    
    So remove those calls to reduce the code size and avoid double ulist
    free in case of an error.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16743c4bf3ef433cdd9babcd4d627b3387ad947d
Author: Nathan Huckleberry <nhuck@google.com>
Date:   Tue Sep 13 13:55:44 2022 -0700

    drm/imx: imx-tve: Fix return type of imx_tve_connector_mode_valid
    
    [ Upstream commit fc007fb815ab5395c3962c09b79a1630b0fbed9c ]
    
    The mode_valid field in drm_connector_helper_funcs is expected to be of
    type:
    enum drm_mode_status (* mode_valid) (struct drm_connector *connector,
                                         struct drm_display_mode *mode);
    
    The mismatched return type breaks forward edge kCFI since the underlying
    function definition does not match the function hook definition.
    
    The return type of imx_tve_connector_mode_valid should be changed from
    int to enum drm_mode_status.
    
    Reported-by: Dan Carpenter <error27@gmail.com>
    Link: https://github.com/ClangBuiltLinux/linux/issues/1703
    Cc: llvm@lists.linux.dev
    Signed-off-by: Nathan Huckleberry <nhuck@google.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220913205544.155106-1-nhuck@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df2747f295ac265dfa62889bdd07f5b7932b2d18
Author: Nam Cao <namcaov@gmail.com>
Date:   Thu Oct 6 16:54:40 2022 +0200

    i2c: i801: add lis3lv02d's I2C address for Vostro 5568
    
    [ Upstream commit d6643d7207c572c1b0305ed505101f15502c6c87 ]
    
    Dell Vostro 5568 laptop has lis3lv02d, but its i2c address is not known
    to the kernel. Add this address.
    
    Output of "cat /sys/devices/platform/lis3lv02d/position" on Dell Vostro
    5568 laptop:
        - Horizontal: (-18,0,1044)
        - Front elevated: (522,-18,1080)
        - Left elevated: (-18,-360,1080)
        - Upside down: (36,108,-1134)
    
    Signed-off-by: Nam Cao <namcaov@gmail.com>
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    Reviewed-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 959cb0fd6951406da4d25fd756a2c061bf89e88d
Author: Thierry Reding <treding@nvidia.com>
Date:   Thu Oct 20 16:39:33 2022 +0200

    i2c: tegra: Allocate DMA memory for DMA engine
    
    [ Upstream commit cdbf26251d3b35c4ccaea0c3a6de4318f727d3d2 ]
    
    When the I2C controllers are running in DMA mode, it is the DMA engine
    that performs the memory accesses rather than the I2C controller. Pass
    the DMA engine's struct device pointer to the DMA API to make sure the
    correct DMA operations are used.
    
    This fixes an issue where the DMA engine's SMMU stream ID needs to be
    misleadingly set for the I2C controllers in device tree.
    
    Suggested-by: Robin Murphy <robin.murphy@arm.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6cb657722e37561202194bb52ba387a82572ac3f
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Wed Oct 19 12:09:18 2022 -0400

    NFSv4: Retry LOCK on OLD_STATEID during delegation return
    
    [ Upstream commit f5ea16137a3fa2858620dc9084466491c128535f ]
    
    There's a small window where a LOCK sent during a delegation return can
    race with another OPEN on client, but the open stateid has not yet been
    updated.  In this case, the client doesn't handle the OLD_STATEID error
    from the server and will lose this lock, emitting:
    "NFS: nfs4_handle_delegation_recall_error: unhandled error -10024".
    
    Fix this by sending the task through the nfs4 error handling in
    nfs4_lock_done() when we may have to reconcile our stateid with what the
    server believes it to be.  For this case, the result is a retry of the
    LOCK operation with the updated stateid.
    
    Reported-by: Gonzalo Siero Humet <gsierohu@redhat.com>
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0187227e2b8a8377d6d3847b656099ed81e9f1a
Author: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Date:   Thu Oct 6 17:26:48 2022 -0400

    drm/amd/display: Remove wrong pipe control lock
    
    [ Upstream commit ca08a1725d0d78efca8d2dbdbce5ea70355da0f2 ]
    
    When using a device based on DCN32/321,
    we have an issue where a second
    4k@60Hz display does not light up,
    and the system becomes unresponsive
    for a few minutes. In the debug process,
    it was possible to see a hang
    in the function dcn20_post_unlock_program_front_end
    in this part:
    
    for (j = 0; j < TIMEOUT_FOR_PIPE_ENABLE_MS*1000
            && hubp->funcs->hubp_is_flip_pending(hubp); j++)
            mdelay(1);
    }
    
    The hubp_is_flip_pending always returns positive
    for waiting pending flips which is a symptom of
    pipe hang. Additionally, the dmesg log shows
    this message after a few minutes:
    
      BUG: soft lockup - CPU#4 stuck for 26s!
      ...
      [  +0.000003]  dcn20_post_unlock_program_front_end+0x112/0x340 [amdgpu]
      [  +0.000171]  dc_commit_state_no_check+0x63d/0xbf0 [amdgpu]
      [  +0.000155]  ? dc_validate_global_state+0x358/0x3d0 [amdgpu]
      [  +0.000154]  dc_commit_state+0xe2/0xf0 [amdgpu]
    
    This confirmed the hypothesis that we had a pipe
    hanging somewhere. Next, after checking the
    ftrace entries, we have the below weird
    sequence:
    
     [..]
      2)               |        dcn10_lock_all_pipes [amdgpu]() {
      2)   0.120 us    |          optc1_is_tg_enabled [amdgpu]();
      2)               |          dcn20_pipe_control_lock [amdgpu]() {
      2)               |            dc_dmub_srv_clear_inbox0_ack [amdgpu]() {
      2)   0.121 us    |              amdgpu_dm_dmub_reg_write [amdgpu]();
      2)   0.551 us    |            }
      2)               |            dc_dmub_srv_send_inbox0_cmd [amdgpu]() {
      2)   0.110 us    |              amdgpu_dm_dmub_reg_write [amdgpu]();
      2)   0.511 us    |            }
      2)               |            dc_dmub_srv_wait_for_inbox0_ack [amdgpu]() {
      2)   0.110 us    |              amdgpu_dm_dmub_reg_read [amdgpu]();
      2)   0.110 us    |              amdgpu_dm_dmub_reg_read [amdgpu]();
      2)   0.110 us    |              amdgpu_dm_dmub_reg_read [amdgpu]();
      2)   0.110 us    |              amdgpu_dm_dmub_reg_read [amdgpu]();
      2)   0.110 us    |              amdgpu_dm_dmub_reg_read [amdgpu]();
      2)   0.110 us    |              amdgpu_dm_dmub_reg_read [amdgpu]();
      2)   0.110 us    |              amdgpu_dm_dmub_reg_read [amdgpu]();
     [..]
    
    We are not expected to read from dmub register
    so many times and for so long. From the trace log,
    it was possible to identify that the function
    dcn20_pipe_control_lock was triggering the dmub
    operation when it was unnecessary and causing
    the hang issue. This commit drops the unnecessary
    dmub code and, consequently, fixes the second display not
    lighting up the issue.
    
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
    Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb3edbd09287e515fe289fbedbffed5661a0ebda
Author: Shuming Fan <shumingf@realtek.com>
Date:   Wed Oct 19 17:57:15 2022 +0800

    ASoC: rt1308-sdw: add the default value of some registers
    
    [ Upstream commit 75d8b1662ca5c20cf8365575222abaef18ff1f50 ]
    
    The driver missed the default value of register 0xc070/0xc360.
    This patch adds that default value to avoid invalid register access
    when the device doesn't be enumerated yet.
    BugLink: https://github.com/thesofproject/linux/issues/3924
    
    Signed-off-by: Shuming Fan <shumingf@realtek.com>
    Link: https://lore.kernel.org/r/20221019095715.31082-1-shumingf@realtek.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b1619f0307762526949f95c878119ca80e32149d
Author: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
Date:   Mon Oct 10 08:38:11 2022 +0200

    selftests/intel_pstate: fix build for ARCH=x86_64
    
    [ Upstream commit beb7d862ed4ac6aa14625418970f22a7d55b8615 ]
    
    Handle the scenario where the build is launched with the ARCH envvar
    defined as x86_64.
    
    Signed-off-by: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fdf6807606293aa148254510fa14d8f88e2a8984
Author: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
Date:   Mon Oct 10 08:37:02 2022 +0200

    selftests/futex: fix build for clang
    
    [ Upstream commit 03cab65a07e083b6c1010fbc8f9b817e9aca75d9 ]
    
    Don't use the test-specific header files as source files to force a
    target dependency, as clang will complain if more than one source file
    is used for a compile command with a single '-o' flag.
    
    Use the proper Makefile variables instead as defined in
    tools/testing/selftests/lib.mk.
    
    Signed-off-by: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
    Reviewed-by: André Almeida <andrealmeid@igalia.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c1f0defecbdcbce8dcd8b6e419e675f6bb2a3c0a
Author: Siarhei Volkau <lis8215@gmail.com>
Date:   Sun Oct 16 16:26:45 2022 +0300

    ASoC: codecs: jz4725b: fix capture selector naming
    
    [ Upstream commit 80852f8268769715db335a22305e81a0c4a38a84 ]
    
    At the moment Capture source selector appears on Playback
    tab in the alsamixer and has a senseless name.
    
    Let's fix that.
    
    Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
    Link: https://lore.kernel.org/r/20221016132648.3011729-5-lis8215@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aeb7e8bc0d3eb5fd416d28d42c38436ce469348d
Author: Siarhei Volkau <lis8215@gmail.com>
Date:   Sun Oct 16 16:26:44 2022 +0300

    ASoC: codecs: jz4725b: use right control for Capture Volume
    
    [ Upstream commit 1538e2c8c9b7e7a656effcc6e4e7cfe8c1b405fd ]
    
    Line In Bypass control is used as Master Capture at the moment
    this is completely incorrect.
    
    Current control routed to Mixer instead of ADC, thus can't affect
    Capture path. ADC control shall be used instead.
    
    ADC volume control parameters are different, so the patch fixes that
    as well. Manual says (16.6.3.2 Programmable input attenuation amplifier:
    PGATM) that gain varies in range 0dB..22.5dB with 1.5dB step.
    
    Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
    Link: https://lore.kernel.org/r/20221016132648.3011729-4-lis8215@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c87945c173853357288485208af5963ce83f01a2
Author: Siarhei Volkau <lis8215@gmail.com>
Date:   Sun Oct 16 16:26:43 2022 +0300

    ASoC: codecs: jz4725b: fix reported volume for Master ctl
    
    [ Upstream commit 088777bf65b98cfa4b5378119d0a7d49a58ece44 ]
    
    DAC volume control is the Master Playback Volume at the moment
    and it reports wrong levels in alsamixer and other alsa apps.
    
    The patch fixes that, as stated in manual on the jz4725b SoC
    (16.6.3.4 Programmable attenuation: GOD) the ctl range varies
    from -22.5dB to 0dB with 1.5dB step.
    
    Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
    Link: https://lore.kernel.org/r/20221016132648.3011729-3-lis8215@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9aae00961ab3a49ca453b918bd770f878e5318dd
Author: Siarhei Volkau <lis8215@gmail.com>
Date:   Sun Oct 16 16:26:42 2022 +0300

    ASoC: codecs: jz4725b: add missed Line In power control bit
    
    [ Upstream commit 1013999b431b4bcdc1f5ae47dd3338122751db31 ]
    
    Line In path stayed powered off during capturing or
    bypass to mixer.
    
    Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
    Link: https://lore.kernel.org/r/20221016132648.3011729-2-lis8215@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0b4d650f905cf332ef74ac95a4cd2edc4817913b
Author: Mauro Lima <mauro.lima@eclypsium.com>
Date:   Wed Oct 12 12:21:35 2022 -0300

    spi: intel: Fix the offset to get the 64K erase opcode
    
    [ Upstream commit 6a43cd02ddbc597dc9a1f82c1e433f871a2f6f06 ]
    
    According to documentation, the 64K erase opcode is located in VSCC
    range [16:23] instead of [8:15].
    Use the proper value to shift the mask over the correct range.
    
    Signed-off-by: Mauro Lima <mauro.lima@eclypsium.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://lore.kernel.org/r/20221012152135.28353-1-mauro.lima@eclypsium.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6910e7279f5d8db0521bb8bc5ff48c56be51c8e1
Author: Xiaolei Wang <xiaolei.wang@windriver.com>
Date:   Mon Oct 10 17:20:14 2022 +0800

    ASoC: wm8962: Add an event handler for TEMP_HP and TEMP_SPK
    
    [ Upstream commit ee1aa2ae3eaa96e70229fa61deee87ef4528ffdf ]
    
    In wm8962 driver, the WM8962_ADDITIONAL_CONTROL_4 is used as a volatile
    register, but this register mixes a bunch of volatile status bits and a
    bunch of non-volatile control bits. The dapm widgets TEMP_HP and
    TEMP_SPK leverages the control bits in this register. After the wm8962
    probe, the regmap will bet set to cache only mode, then a read error
    like below would be triggered when trying to read the initial power
    state of the dapm widgets TEMP_HP and TEMP_SPK.
      wm8962 0-001a: ASoC: error at soc_component_read_no_lock
      on wm8962.0-001a: -16
    
    In order to fix this issue, we add event handler to actually power
    up/down these widgets. With this change, we also need to explicitly
    power off these widgets in the wm8962 probe since they are enabled
    by default.
    
    Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com>
    Tested-by: Adam Ford <aford173@gmail.com>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20221010092014.2229246-1-xiaolei.wang@windriver.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7432616f6aac06a8055d083a779c2bedc8680e6
Author: Zhang Qilong <zhangqilong3@huawei.com>
Date:   Sat Oct 8 22:05:22 2022 +0800

    ASoC: mt6660: Keep the pm_runtime enables before component stuff in mt6660_i2c_probe
    
    [ Upstream commit c4ab29b0f3a6f1e167c5a627f7cd036c1d2b7d65 ]
    
    It would be better to keep the pm_runtime enables before the
    IRQ and component stuff. Both of those could start triggering
    PM runtime events.
    
    Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20221008140522.134912-1-zhangqilong3@huawei.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a47606064cc096c8e1d965f2267760168c6c97c4
Author: Zhang Qilong <zhangqilong3@huawei.com>
Date:   Mon Oct 10 19:48:52 2022 +0800

    ASoC: wm8997: Revert "ASoC: wm8997: Fix PM disable depth imbalance in wm8997_probe"
    
    [ Upstream commit 68ce83e3bb26feba0fcdd59667fde942b3a600a1 ]
    
    This reverts commit 41a736ac20602f64773e80f0f5b32cde1830a44a.
    
    The pm_runtime_disable is redundant when error returns in
    wm8997_probe, we just revert the old patch to fix it.
    
    Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20221010114852.88127-4-zhangqilong3@huawei.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8f254c8b50641b62894b511d4b9b49f3f70bb04
Author: Zhang Qilong <zhangqilong3@huawei.com>
Date:   Mon Oct 10 19:48:51 2022 +0800

    ASoC: wm5110: Revert "ASoC: wm5110: Fix PM disable depth imbalance in wm5110_probe"
    
    [ Upstream commit 7d4e966f4cd73ff69bf06934e8e14a33fb7ef447 ]
    
    This reverts commit 86b46bf1feb83898d89a2b4a8d08d21e9ea277a7.
    
    The pm_runtime_disable is redundant when error returns in
    wm5110_probe, we just revert the old patch to fix it.
    
    Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20221010114852.88127-3-zhangqilong3@huawei.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c73aa2cc41564670d13f79b6197331816aec66ff
Author: Zhang Qilong <zhangqilong3@huawei.com>
Date:   Mon Oct 10 19:48:50 2022 +0800

    ASoC: wm5102: Revert "ASoC: wm5102: Fix PM disable depth imbalance in wm5102_probe"
    
    [ Upstream commit de71d7567e358effd06dfc3e2a154b25f1331c10 ]
    
    This reverts commit fcbb60820cd3008bb44334a0395e5e57ccb77329.
    
    The pm_runtime_disable is redundant when error returns in
    wm5102_probe, we just revert the old patch to fix it.
    
    Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
    Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://lore.kernel.org/r/20221010114852.88127-2-zhangqilong3@huawei.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>