commit 707c48210a5384a72c82655a37895b7e822755f2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Feb 15 17:22:27 2023 +0100

    Linux 5.10.168
    
    Link: https://lore.kernel.org/r/20230213144745.696901179@linuxfoundation.org
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Link: https://lore.kernel.org/r/20230214172549.450713187@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a626e27f984dfbe96bd8e4fd08f20a2ede3ea23
Author: David Chen <david.chen@nutanix.com>
Date:   Thu Feb 9 17:48:28 2023 +0000

    Fix page corruption caused by racy check in __free_pages
    
    commit 462a8e08e0e6287e5ce13187257edbf24213ed03 upstream.
    
    When we upgraded our kernel, we started seeing some page corruption like
    the following consistently:
    
      BUG: Bad page state in process ganesha.nfsd  pfn:1304ca
      page:0000000022261c55 refcount:0 mapcount:-128 mapping:0000000000000000 index:0x0 pfn:0x1304ca
      flags: 0x17ffffc0000000()
      raw: 0017ffffc0000000 ffff8a513ffd4c98 ffffeee24b35ec08 0000000000000000
      raw: 0000000000000000 0000000000000001 00000000ffffff7f 0000000000000000
      page dumped because: nonzero mapcount
      CPU: 0 PID: 15567 Comm: ganesha.nfsd Kdump: loaded Tainted: P    B      O      5.10.158-1.nutanix.20221209.el7.x86_64 #1
      Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/05/2016
      Call Trace:
       dump_stack+0x74/0x96
       bad_page.cold+0x63/0x94
       check_new_page_bad+0x6d/0x80
       rmqueue+0x46e/0x970
       get_page_from_freelist+0xcb/0x3f0
       ? _cond_resched+0x19/0x40
       __alloc_pages_nodemask+0x164/0x300
       alloc_pages_current+0x87/0xf0
       skb_page_frag_refill+0x84/0x110
       ...
    
    Sometimes, it would also show up as corruption in the free list pointer
    and cause crashes.
    
    After bisecting the issue, we found the issue started from commit
    e320d3012d25 ("mm/page_alloc.c: fix freeing non-compound pages"):
    
            if (put_page_testzero(page))
                    free_the_page(page, order);
            else if (!PageHead(page))
                    while (order-- > 0)
                            free_the_page(page + (1 << order), order);
    
    So the problem is the check PageHead is racy because at this point we
    already dropped our reference to the page.  So even if we came in with
    compound page, the page can already be freed and PageHead can return
    false and we will end up freeing all the tail pages causing double free.
    
    Fixes: e320d3012d25 ("mm/page_alloc.c: fix freeing non-compound pages")
    Link: https://lore.kernel.org/lkml/BYAPR02MB448855960A9656EEA81141FC94D99@BYAPR02MB4488.namprd02.prod.outlook.com/
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Chunwei Chen <david.chen@nutanix.com>
    Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ef2490a876b47c1e2db84ea3f4f69c8aca165f2
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Feb 9 21:10:31 2023 +0100

    arm64: dts: meson-axg: Make mmc host controller interrupts level-sensitive
    
    commit d182bcf300772d8b2e5f43e47fa0ebda2b767cc4 upstream.
    
    The usage of edge-triggered interrupts lead to lost interrupts under load,
    see [0]. This was confirmed to be fixed by using level-triggered
    interrupts.
    The report was about SDIO. However, as the host controller is the same
    for SD and MMC, apply the change to all mmc controller instances.
    
    [0] https://www.spinics.net/lists/linux-mmc/msg73991.html
    
    Fixes: 221cf34bac54 ("ARM64: dts: meson-axg: enable the eMMC controller")
    Reported-by: Peter Suti <peter.suti@streamunlimited.com>
    Tested-by: Vyacheslav Bocharov <adeep@lexina.in>
    Tested-by: Peter Suti <peter.suti@streamunlimited.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/c00655d3-02f8-6f5f-4239-ca2412420cad@gmail.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5bfc8f09619a9c31f812d85efe13091afede97bc
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Feb 9 21:11:10 2023 +0100

    arm64: dts: meson-g12-common: Make mmc host controller interrupts level-sensitive
    
    commit ac8db4cceed218cca21c84f9d75ce88182d8b04f upstream.
    
    The usage of edge-triggered interrupts lead to lost interrupts under load,
    see [0]. This was confirmed to be fixed by using level-triggered
    interrupts.
    The report was about SDIO. However, as the host controller is the same
    for SD and MMC, apply the change to all mmc controller instances.
    
    [0] https://www.spinics.net/lists/linux-mmc/msg73991.html
    
    Fixes: 4759fd87b928 ("arm64: dts: meson: g12a: add mmc nodes")
    Tested-by: FUKAUMI Naoki <naoki@radxa.com>
    Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Tested-by: Jerome Brunet <jbrunet@baylibre.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/27d89baa-b8fa-baca-541b-ef17a97cde3c@gmail.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 809f4acb7f015e087c60ea74b935e24a16779b0a
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Feb 9 21:11:47 2023 +0100

    arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive
    
    commit 66e45351f7d6798751f98001d1fcd572024d87f0 upstream.
    
    The usage of edge-triggered interrupts lead to lost interrupts under load,
    see [0]. This was confirmed to be fixed by using level-triggered
    interrupts.
    The report was about SDIO. However, as the host controller is the same
    for SD and MMC, apply the change to all mmc controller instances.
    
    [0] https://www.spinics.net/lists/linux-mmc/msg73991.html
    
    Fixes: ef8d2ffedf18 ("ARM64: dts: meson-gxbb: add MMC support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/76e042e0-a610-5ed5-209f-c4d7f879df44@gmail.com
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8eee3521bca7104de4859b853d4358373291f681
Author: Guo Ren <guoren@kernel.org>
Date:   Thu Jan 26 22:53:06 2023 -0500

    riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte
    
    commit 950b879b7f0251317d26bae0687e72592d607532 upstream.
    
    In commit 588a513d3425 ("arm64: Fix race condition on PG_dcache_clean
    in __sync_icache_dcache()"), we found RISC-V has the same issue as the
    previous arm64. The previous implementation didn't guarantee the correct
    sequence of operations, which means flush_icache_all() hasn't been
    called when the PG_dcache_clean was set. That would cause a risk of page
    synchronization.
    
    Fixes: 08f051eda33b ("RISC-V: Flush I$ when making a dirty page executable")
    Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
    Signed-off-by: Guo Ren <guoren@kernel.org>
    Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
    Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
    Link: https://lore.kernel.org/r/20230127035306.1819561-1-guoren@kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ff8b48253926147e441b9d0c833ca6494707d0b
Author: Xiubo Li <xiubli@redhat.com>
Date:   Tue Feb 7 13:04:52 2023 +0800

    ceph: flush cap releases when the session is flushed
    
    commit e7d84c6a1296d059389f7342d9b4b7defb518d3a upstream.
    
    MDS expects the completed cap release prior to responding to the
    session flush for cache drop.
    
    Cc: stable@vger.kernel.org
    Link: http://tracker.ceph.com/issues/38009
    Signed-off-by: Xiubo Li <xiubli@redhat.com>
    Reviewed-by: Venky Shankar <vshankar@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f518a4a79bddfd1f87fe62a85bdece5ee809614
Author: Prashant Malani <pmalani@chromium.org>
Date:   Wed Feb 8 20:53:19 2023 +0000

    usb: typec: altmodes/displayport: Fix probe pin assign check
    
    commit 54e5c00a4eb0a4c663445b245f641bbfab142430 upstream.
    
    While checking Pin Assignments of the port and partner during probe, we
    don't take into account whether the peripheral is a plug or receptacle.
    
    This manifests itself in a mode entry failure on certain docks and
    dongles with captive cables. For instance, the Startech.com Type-C to DP
    dongle (Model #CDP2DP) advertises its DP VDO as 0x405. This would fail
    the Pin Assignment compatibility check, despite it supporting
    Pin Assignment C as a UFP.
    
    Update the check to use the correct DP Pin Assign macros that
    take the peripheral's receptacle bit into account.
    
    Fixes: c1e5c2f0cb8a ("usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles")
    Cc: stable@vger.kernel.org
    Reported-by: Diana Zigterman <dzigterman@chromium.org>
    Signed-off-by: Prashant Malani <pmalani@chromium.org>
    Link: https://lore.kernel.org/r/20230208205318.131385-1-pmalani@chromium.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f25fa93e52367d78ced6b33cfe97c8044b6724be
Author: Mark Pearson <mpearson-lenovo@squebb.ca>
Date:   Wed Feb 8 13:12:23 2023 -0500

    usb: core: add quirk for Alcor Link AK9563 smartcard reader
    
    commit 303e724d7b1e1a0a93daf0b1ab5f7c4f53543b34 upstream.
    
    The Alcor Link AK9563 smartcard reader used on some Lenovo platforms
    doesn't work. If LPM is enabled the reader will provide an invalid
    usb config descriptor. Added quirk to disable LPM.
    
    Verified fix on Lenovo P16 G1 and T14 G3
    
    Tested-by: Miroslav Zatko <mzatko@mirexoft.com>
    Tested-by: Dennis Wassenberg <dennis.wassenberg@secunet.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dennis Wassenberg <dennis.wassenberg@secunet.com>
    Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca>
    Link: https://lore.kernel.org/r/20230208181223.1092654-1-mpearson-lenovo@squebb.ca
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd965ad39de494de5f4cbe02c3090401cb915791
Author: Anand Jain <anand.jain@oracle.com>
Date:   Fri Jan 20 21:47:16 2023 +0800

    btrfs: free device in btrfs_close_devices for a single device filesystem
    
    commit 5f58d783fd7823b2c2d5954d1126e702f94bfc4c upstream.
    
    We have this check to make sure we don't accidentally add older devices
    that may have disappeared and re-appeared with an older generation from
    being added to an fs_devices (such as a replace source device). This
    makes sense, we don't want stale disks in our file system. However for
    single disks this doesn't really make sense.
    
    I've seen this in testing, but I was provided a reproducer from a
    project that builds btrfs images on loopback devices. The loopback
    device gets cached with the new generation, and then if it is re-used to
    generate a new file system we'll fail to mount it because the new fs is
    "older" than what we have in cache.
    
    Fix this by freeing the cache when closing the device for a single device
    filesystem. This will ensure that the mount command passed device path is
    scanned successfully during the next mount.
    
    CC: stable@vger.kernel.org # 5.10+
    Reported-by: Daan De Meyer <daandemeyer@fb.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Anand Jain <anand.jain@oracle.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1be271c52bf3554edcb8d124d1f8c7f777ee5727
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Feb 3 14:32:09 2023 -0500

    net: USB: Fix wrong-direction WARNING in plusb.c
    
    commit 811d581194f7412eda97acc03d17fc77824b561f upstream.
    
    The syzbot fuzzer detected a bug in the plusb network driver: A
    zero-length control-OUT transfer was treated as a read instead of a
    write.  In modern kernels this error provokes a WARNING:
    
    usb 1-1: BOGUS control dir, pipe 80000280 doesn't match bRequestType c0
    WARNING: CPU: 0 PID: 4645 at drivers/usb/core/urb.c:411
    usb_submit_urb+0x14a7/0x1880 drivers/usb/core/urb.c:411
    Modules linked in:
    CPU: 1 PID: 4645 Comm: dhcpcd Not tainted
    6.2.0-rc6-syzkaller-00050-g9f266ccaa2f5 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google
    01/12/2023
    RIP: 0010:usb_submit_urb+0x14a7/0x1880 drivers/usb/core/urb.c:411
    ...
    Call Trace:
     <TASK>
     usb_start_wait_urb+0x101/0x4b0 drivers/usb/core/message.c:58
     usb_internal_control_msg drivers/usb/core/message.c:102 [inline]
     usb_control_msg+0x320/0x4a0 drivers/usb/core/message.c:153
     __usbnet_read_cmd+0xb9/0x390 drivers/net/usb/usbnet.c:2010
     usbnet_read_cmd+0x96/0xf0 drivers/net/usb/usbnet.c:2068
     pl_vendor_req drivers/net/usb/plusb.c:60 [inline]
     pl_set_QuickLink_features drivers/net/usb/plusb.c:75 [inline]
     pl_reset+0x2f/0xf0 drivers/net/usb/plusb.c:85
     usbnet_open+0xcc/0x5d0 drivers/net/usb/usbnet.c:889
     __dev_open+0x297/0x4d0 net/core/dev.c:1417
     __dev_change_flags+0x587/0x750 net/core/dev.c:8530
     dev_change_flags+0x97/0x170 net/core/dev.c:8602
     devinet_ioctl+0x15a2/0x1d70 net/ipv4/devinet.c:1147
     inet_ioctl+0x33f/0x380 net/ipv4/af_inet.c:979
     sock_do_ioctl+0xcc/0x230 net/socket.c:1169
     sock_ioctl+0x1f8/0x680 net/socket.c:1286
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:870 [inline]
     __se_sys_ioctl fs/ioctl.c:856 [inline]
     __x64_sys_ioctl+0x197/0x210 fs/ioctl.c:856
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    The fix is to call usbnet_write_cmd() instead of usbnet_read_cmd() and
    remove the USB_DIR_IN flag.
    
    Reported-and-tested-by: syzbot+2a0e7abd24f1eb90ce25@syzkaller.appspotmail.com
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Fixes: 090ffa9d0e90 ("[PATCH] USB: usbnet (9/9) module for pl2301/2302 cables")
    CC: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/00000000000052099f05f3b3e298@google.com/
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b693fe3f760c87fd9768e759f6297f743a1b3b0
Author: ZhaoLong Wang <wangzhaolong1@huawei.com>
Date:   Mon Feb 6 09:10:09 2023 +0800

    cifs: Fix use-after-free in rdata->read_into_pages()
    
    commit aa5465aeca3c66fecdf7efcf554aed79b4c4b211 upstream.
    
    When the network status is unstable, use-after-free may occur when
    read data from the server.
    
      BUG: KASAN: use-after-free in readpages_fill_pages+0x14c/0x7e0
    
      Call Trace:
       <TASK>
       dump_stack_lvl+0x38/0x4c
       print_report+0x16f/0x4a6
       kasan_report+0xb7/0x130
       readpages_fill_pages+0x14c/0x7e0
       cifs_readv_receive+0x46d/0xa40
       cifs_demultiplex_thread+0x121c/0x1490
       kthread+0x16b/0x1a0
       ret_from_fork+0x2c/0x50
       </TASK>
    
      Allocated by task 2535:
       kasan_save_stack+0x22/0x50
       kasan_set_track+0x25/0x30
       __kasan_kmalloc+0x82/0x90
       cifs_readdata_direct_alloc+0x2c/0x110
       cifs_readdata_alloc+0x2d/0x60
       cifs_readahead+0x393/0xfe0
       read_pages+0x12f/0x470
       page_cache_ra_unbounded+0x1b1/0x240
       filemap_get_pages+0x1c8/0x9a0
       filemap_read+0x1c0/0x540
       cifs_strict_readv+0x21b/0x240
       vfs_read+0x395/0x4b0
       ksys_read+0xb8/0x150
       do_syscall_64+0x3f/0x90
       entry_SYSCALL_64_after_hwframe+0x72/0xdc
    
      Freed by task 79:
       kasan_save_stack+0x22/0x50
       kasan_set_track+0x25/0x30
       kasan_save_free_info+0x2e/0x50
       __kasan_slab_free+0x10e/0x1a0
       __kmem_cache_free+0x7a/0x1a0
       cifs_readdata_release+0x49/0x60
       process_one_work+0x46c/0x760
       worker_thread+0x2a4/0x6f0
       kthread+0x16b/0x1a0
       ret_from_fork+0x2c/0x50
    
      Last potentially related work creation:
       kasan_save_stack+0x22/0x50
       __kasan_record_aux_stack+0x95/0xb0
       insert_work+0x2b/0x130
       __queue_work+0x1fe/0x660
       queue_work_on+0x4b/0x60
       smb2_readv_callback+0x396/0x800
       cifs_abort_connection+0x474/0x6a0
       cifs_reconnect+0x5cb/0xa50
       cifs_readv_from_socket.cold+0x22/0x6c
       cifs_read_page_from_socket+0xc1/0x100
       readpages_fill_pages.cold+0x2f/0x46
       cifs_readv_receive+0x46d/0xa40
       cifs_demultiplex_thread+0x121c/0x1490
       kthread+0x16b/0x1a0
       ret_from_fork+0x2c/0x50
    
    The following function calls will cause UAF of the rdata pointer.
    
    readpages_fill_pages
     cifs_read_page_from_socket
      cifs_readv_from_socket
       cifs_reconnect
        __cifs_reconnect
         cifs_abort_connection
          mid->callback() --> smb2_readv_callback
           queue_work(&rdata->work)  # if the worker completes first,
                                     # the rdata is freed
              cifs_readv_complete
                kref_put
                  cifs_readdata_release
                    kfree(rdata)
     return rdata->...               # UAF in readpages_fill_pages()
    
    Similarly, this problem also occurs in the uncache_fill_pages().
    
    Fix this by adjusts the order of condition judgment in the return
    statement.
    
    Signed-off-by: ZhaoLong Wang <wangzhaolong1@huawei.com>
    Cc: stable@vger.kernel.org
    Acked-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbc850904457567e5e3bf431e38dd039742887aa
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Mon Feb 6 16:15:59 2023 +0200

    pinctrl: intel: Restore the pins that used to be in Direct IRQ mode
    
    [ Upstream commit a8520be3ffef3d25b53bf171a7ebe17ee0154175 ]
    
    If the firmware mangled the register contents too much,
    check the saved value for the Direct IRQ mode. If it
    matches, we will restore the pin state.
    
    Reported-by: Jim Minter <jimminter@microsoft.com>
    Fixes: 6989ea4881c8 ("pinctrl: intel: Save and restore pins in "direct IRQ" mode")
    Tested-by: Jim Minter <jimminter@microsoft.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Link: https://lore.kernel.org/r/20230206141558.20916-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4863f46ddaf9ceca8acd0cb9d2f02a2c8e9c55ad
Author: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Date:   Fri Jan 13 21:59:42 2023 +0300

    spi: dw: Fix wrong FIFO level setting for long xfers
    
    [ Upstream commit c63b8fd14a7db719f8252038a790638728c4eb66 ]
    
    Due to using the u16 type in the min_t() macros the SPI transfer length
    will be cast to word before participating in the conditional statement
    implied by the macro. Thus if the transfer length is greater than 64KB the
    Tx/Rx FIFO threshold level value will be determined by the leftover of the
    truncated after the type-case length. In the worst case it will cause the
    dramatical performance drop due to the "Tx FIFO Empty" or "Rx FIFO Full"
    interrupts triggered on each xfer word sent/received to/from the bus.
    
    The problem can be easily fixed by specifying the unsigned int type in the
    min_t() macros thus preventing the possible data loss.
    
    Fixes: ea11370fffdf ("spi: dw: get TX level without an additional variable")
    Reported-by: Sergey Nazarov <Sergey.Nazarov@baikalelectronics.ru>
    Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20230113185942.2516-1-Sergey.Semin@baikalelectronics.ru
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e2a0521e4e84a2698f2da3950fb5c5496a4d208
Author: Maxim Korotkov <korotkov.maxim.s@gmail.com>
Date:   Fri Nov 18 13:43:32 2022 +0300

    pinctrl: single: fix potential NULL dereference
    
    [ Upstream commit d2d73e6d4822140445ad4a7b1c6091e0f5fe703b ]
    
    Added checking of pointer "function" in pcs_set_mux().
    pinmux_generic_get_function() can return NULL and the pointer
    "function" was dereferenced without checking against NULL.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 571aec4df5b7 ("pinctrl: single: Use generic pinmux helpers for managing functions")
    Signed-off-by: Maxim Korotkov <korotkov.maxim.s@gmail.com>
    Reviewed-by: Tony Lindgren <tony@atomide.com>
    Link: https://lore.kernel.org/r/20221118104332.943-1-korotkov.maxim.s@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 61f8a493c0760883f73565d7a23af5a18f2077b2
Author: Joel Stanley <joel@jms.id.au>
Date:   Fri Jan 20 09:48:56 2023 +1030

    pinctrl: aspeed: Fix confusing types in return value
    
    [ Upstream commit 287a344a11f1ebd31055cf9b22c88d7005f108d7 ]
    
    The function signature is int, but we return a bool. Instead return a
    negative errno as the kerneldoc suggests.
    
    Fixes: 4d3d0e4272d8 ("pinctrl: Add core support for Aspeed SoCs")
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
    Link: https://lore.kernel.org/r/20230119231856.52014-1-joel@jms.id.au
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef3edede7b732395db145735bf4feaa960573995
Author: Dan Carpenter <error27@gmail.com>
Date:   Tue Jan 31 13:02:13 2023 +0300

    ALSA: pci: lx6464es: fix a debug loop
    
    [ Upstream commit 5dac9f8dc25fefd9d928b98f6477ff3daefd73e3 ]
    
    This loop accidentally reuses the "i" iterator for both the inside and
    the outside loop.  The value of MAX_STREAM_BUFFER is 5.  I believe that
    chip->rmh.stat_len is in the 2-12 range.  If the value of .stat_len is
    4 or more then it will loop exactly one time, but if it's less then it
    is a forever loop.
    
    It looks like it was supposed to combined into one loop where
    conditions are checked.
    
    Fixes: 8e6320064c33 ("ALSA: lx_core: Remove useless #if 0 .. #endif")
    Signed-off-by: Dan Carpenter <error27@gmail.com>
    Link: https://lore.kernel.org/r/Y9jnJTis/mRFJAQp@kili
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3914b71dad5a5527819f82f1d085f0087583bdeb
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Wed Feb 8 11:21:10 2023 +0800

    selftests: forwarding: lib: quote the sysctl values
    
    [ Upstream commit 3a082086aa200852545cf15159213582c0c80eba ]
    
    When set/restore sysctl value, we should quote the value as some keys
    may have multi values, e.g. net.ipv4.ping_group_range
    
    Fixes: f5ae57784ba8 ("selftests: forwarding: lib: Add sysctl_set(), sysctl_restore()")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Link: https://lore.kernel.org/r/20230208032110.879205-1-liuhangbin@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c53f34ec3fbf3e9f67574118a6bb35ae1146f7ca
Author: Pietro Borrello <borrello@diag.uniroma1.it>
Date:   Tue Feb 7 18:26:34 2023 +0000

    rds: rds_rm_zerocopy_callback() use list_first_entry()
    
    [ Upstream commit f753a68980cf4b59a80fe677619da2b1804f526d ]
    
    rds_rm_zerocopy_callback() uses list_entry() on the head of a list
    causing a type confusion.
    Use list_first_entry() to actually access the first element of the
    rs_zcookie_queue list.
    
    Fixes: 9426bbc6de99 ("rds: use list structure to track information for zerocopy completion notification")
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: Pietro Borrello <borrello@diag.uniroma1.it>
    Link: https://lore.kernel.org/r/20230202-rds-zerocopy-v3-1-83b0df974f9a@diag.uniroma1.it
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3eb04ef27811e334987cbf3de3dbad97cfe3a74d
Author: Shay Drory <shayd@nvidia.com>
Date:   Wed Jan 25 17:39:36 2023 +0200

    net/mlx5: fw_tracer, Zero consumer index when reloading the tracer
    
    [ Upstream commit 184e1e4474dbcfebc4dbd1fa823a329978f25506 ]
    
    When tracer is reloaded, the device will log the traces at the
    beginning of the log buffer. Also, driver is reading the log buffer in
    chunks in accordance to the consumer index.
    Hence, zero consumer index when reloading the tracer.
    
    Fixes: 4383cfcc65e7 ("net/mlx5: Add devlink reload")
    Signed-off-by: Shay Drory <shayd@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fac1fb80088ab9f6cae5a0480236d1d03fcfe002
Author: Shay Drory <shayd@nvidia.com>
Date:   Mon Jan 9 15:27:40 2023 +0200

    net/mlx5: fw_tracer, Clear load bit when freeing string DBs buffers
    
    [ Upstream commit db561fed6b8fa3878e74d5df6512a4a38152b63e ]
    
    Whenever the driver is reading the string DBs into buffers, the driver
    is setting the load bit, but the driver never clears this bit.
    As a result, in case load bit is on and the driver query the device for
    new string DBs, the driver won't read again the string DBs.
    Fix it by clearing the load bit when query the device for new string
    DBs.
    
    Fixes: 2d69356752ff ("net/mlx5: Add support for fw live patch event")
    Signed-off-by: Shay Drory <shayd@nvidia.com>
    Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 703c3efa4b0b50a9c6a3726026c0f528857db812
Author: Dragos Tatulea <dtatulea@nvidia.com>
Date:   Mon Jan 23 16:06:32 2023 +0200

    net/mlx5e: IPoIB, Show unknown speed instead of error
    
    [ Upstream commit 8aa5f171d51c1cb69e5e3106df4dd1a446102823 ]
    
    ethtool is returning an error for unknown speeds for the IPoIB interface:
    
    $ ethtool ib0
    netlink error: failed to retrieve link settings
    netlink error: Invalid argument
    netlink error: failed to retrieve link settings
    netlink error: Invalid argument
    Settings for ib0:
    Link detected: no
    
    After this change, ethtool will return success and show "unknown speed":
    
    $ ethtool ib0
    Settings for ib0:
    Supported ports: [  ]
    Supported link modes:   Not reported
    Supported pause frame use: No
    Supports auto-negotiation: No
    Supported FEC modes: Not reported
    Advertised link modes:  Not reported
    Advertised pause frame use: No
    Advertised auto-negotiation: No
    Advertised FEC modes: Not reported
    Speed: Unknown!
    Duplex: Full
    Auto-negotiation: off
    Port: Other
    PHYAD: 0
    Transceiver: internal
    Link detected: no
    
    Fixes: eb234ee9d541 ("net/mlx5e: IPoIB, Add support for get_link_ksettings in ethtool")
    Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
    Reviewed-by: Gal Pressman <gal@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 896bd85688b40e7242562b68b0fd13e4d29048b8
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Sun Feb 5 21:24:08 2023 +0200

    net: mscc: ocelot: fix VCAP filters not matching on MAC with "protocol 802.1Q"
    
    [ Upstream commit f964f8399df29d3e3ced77177cf35131cd2491bf ]
    
    Alternative short title: don't instruct the hardware to match on
    EtherType with "protocol 802.1Q" flower filters. It doesn't work for the
    reasons detailed below.
    
    With a command such as the following:
    
    tc filter add dev $swp1 ingress chain $(IS1 2) pref 3 \
            protocol 802.1Q flower skip_sw vlan_id 200 src_mac $h1_mac \
            action vlan modify id 300 \
            action goto chain $(IS2 0 0)
    
    the created filter is set by ocelot_flower_parse_key() to be of type
    OCELOT_VCAP_KEY_ETYPE, and etype is set to {value=0x8100, mask=0xffff}.
    This gets propagated all the way to is1_entry_set() which commits it to
    hardware (the VCAP_IS1_HK_ETYPE field of the key). Compare this to the
    case where src_mac isn't specified - the key type is OCELOT_VCAP_KEY_ANY,
    and is1_entry_set() doesn't populate VCAP_IS1_HK_ETYPE.
    
    The problem is that for VLAN-tagged frames, the hardware interprets the
    ETYPE field as holding the encapsulated VLAN protocol. So the above
    filter will only match those packets which have an encapsulated protocol
    of 0x8100, rather than all packets with VLAN ID 200 and the given src_mac.
    
    The reason why this is allowed to occur is because, although we have a
    block of code in ocelot_flower_parse_key() which sets "match_protocol"
    to false when VLAN keys are present, that code executes too late.
    There is another block of code, which executes for Ethernet addresses,
    and has a "goto finished_key_parsing" and skips the VLAN header parsing.
    By skipping it, "match_protocol" remains with the value it was
    initialized with, i.e. "true", and "proto" is set to f->common.protocol,
    or 0x8100.
    
    The concept of ignoring some keys rather than erroring out when they are
    present but can't be offloaded is dubious in itself, but is present
    since the initial commit fe3490e6107e ("net: mscc: ocelot: Hardware
    ofload for tc flower filter"), and it's outside of the scope of this
    patch to change that.
    
    The problem was introduced when the driver started to interpret the
    flower filter's protocol, and populate the VCAP filter's ETYPE field
    based on it.
    
    To fix this, it is sufficient to move the code that parses the VLAN keys
    earlier than the "goto finished_key_parsing" instruction. This will
    ensure that if we have a flower filter with both VLAN and Ethernet
    address keys, it won't match on ETYPE 0x8100, because the VLAN key
    parsing sets "match_protocol = false".
    
    Fixes: 86b956de119c ("net: mscc: ocelot: support matching on EtherType")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Link: https://lore.kernel.org/r/20230205192409.1796428-1-vladimir.oltean@nxp.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ad4112c9fcf0bc08222b2b1614fba52ffd12255
Author: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Date:   Mon Jan 30 14:06:40 2023 -0800

    ice: Do not use WQ_MEM_RECLAIM flag for workqueue
    
    [ Upstream commit 4d159f7884f78b1aacb99b4fc37d1e3cb1194e39 ]
    
    When both ice and the irdma driver are loaded, a warning in
    check_flush_dependency is being triggered. This is due to ice driver
    workqueue being allocated with the WQ_MEM_RECLAIM flag and the irdma one
    is not.
    
    According to kernel documentation, this flag should be set if the
    workqueue will be involved in the kernel's memory reclamation flow.
    Since it is not, there is no need for the ice driver's WQ to have this
    flag set so remove it.
    
    Example trace:
    
    [  +0.000004] workqueue: WQ_MEM_RECLAIM ice:ice_service_task [ice] is flushing !WQ_MEM_RECLAIM infiniband:0x0
    [  +0.000139] WARNING: CPU: 0 PID: 728 at kernel/workqueue.c:2632 check_flush_dependency+0x178/0x1a0
    [  +0.000011] Modules linked in: bonding tls xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_reject_ipv4 nft_compat nft_cha
    in_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables nfnetlink bridge stp llc rfkill vfat fat intel_rapl_msr intel
    _rapl_common isst_if_common skx_edac nfit libnvdimm x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct1
    0dif_pclmul crc32_pclmul ghash_clmulni_intel rapl intel_cstate rpcrdma sunrpc rdma_ucm ib_srpt ib_isert iscsi_target_mod target_
    core_mod ib_iser libiscsi scsi_transport_iscsi rdma_cm ib_cm iw_cm iTCO_wdt iTCO_vendor_support ipmi_ssif irdma mei_me ib_uverbs
    ib_core intel_uncore joydev pcspkr i2c_i801 acpi_ipmi mei lpc_ich i2c_smbus intel_pch_thermal ioatdma ipmi_si acpi_power_meter
    acpi_pad xfs libcrc32c sd_mod t10_pi crc64_rocksoft crc64 sg ahci ixgbe libahci ice i40e igb crc32c_intel mdio i2c_algo_bit liba
    ta dca wmi dm_mirror dm_region_hash dm_log dm_mod ipmi_devintf ipmi_msghandler fuse
    [  +0.000161]  [last unloaded: bonding]
    [  +0.000006] CPU: 0 PID: 728 Comm: kworker/0:2 Tainted: G S                 6.2.0-rc2_next-queue-13jan-00458-gc20aabd57164 #1
    [  +0.000006] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.02.01.0010.010620200716 01/06/2020
    [  +0.000003] Workqueue: ice ice_service_task [ice]
    [  +0.000127] RIP: 0010:check_flush_dependency+0x178/0x1a0
    [  +0.000005] Code: 89 8e 02 01 e8 49 3d 40 00 49 8b 55 18 48 8d 8d d0 00 00 00 48 8d b3 d0 00 00 00 4d 89 e0 48 c7 c7 e0 3b 08
    9f e8 bb d3 07 01 <0f> 0b e9 be fe ff ff 80 3d 24 89 8e 02 00 0f 85 6b ff ff ff e9 06
    [  +0.000004] RSP: 0018:ffff88810a39f990 EFLAGS: 00010282
    [  +0.000005] RAX: 0000000000000000 RBX: ffff888141bc2400 RCX: 0000000000000000
    [  +0.000004] RDX: 0000000000000001 RSI: dffffc0000000000 RDI: ffffffffa1213a80
    [  +0.000003] RBP: ffff888194bf3400 R08: ffffed117b306112 R09: ffffed117b306112
    [  +0.000003] R10: ffff888bd983088b R11: ffffed117b306111 R12: 0000000000000000
    [  +0.000003] R13: ffff888111f84d00 R14: ffff88810a3943ac R15: ffff888194bf3400
    [  +0.000004] FS:  0000000000000000(0000) GS:ffff888bd9800000(0000) knlGS:0000000000000000
    [  +0.000003] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  +0.000003] CR2: 000056035b208b60 CR3: 000000017795e005 CR4: 00000000007706f0
    [  +0.000003] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  +0.000003] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  +0.000002] PKRU: 55555554
    [  +0.000003] Call Trace:
    [  +0.000002]  <TASK>
    [  +0.000003]  __flush_workqueue+0x203/0x840
    [  +0.000006]  ? mutex_unlock+0x84/0xd0
    [  +0.000008]  ? __pfx_mutex_unlock+0x10/0x10
    [  +0.000004]  ? __pfx___flush_workqueue+0x10/0x10
    [  +0.000006]  ? mutex_lock+0xa3/0xf0
    [  +0.000005]  ib_cache_cleanup_one+0x39/0x190 [ib_core]
    [  +0.000174]  __ib_unregister_device+0x84/0xf0 [ib_core]
    [  +0.000094]  ib_unregister_device+0x25/0x30 [ib_core]
    [  +0.000093]  irdma_ib_unregister_device+0x97/0xc0 [irdma]
    [  +0.000064]  ? __pfx_irdma_ib_unregister_device+0x10/0x10 [irdma]
    [  +0.000059]  ? up_write+0x5c/0x90
    [  +0.000005]  irdma_remove+0x36/0x90 [irdma]
    [  +0.000062]  auxiliary_bus_remove+0x32/0x50
    [  +0.000007]  device_release_driver_internal+0xfa/0x1c0
    [  +0.000005]  bus_remove_device+0x18a/0x260
    [  +0.000007]  device_del+0x2e5/0x650
    [  +0.000005]  ? __pfx_device_del+0x10/0x10
    [  +0.000003]  ? mutex_unlock+0x84/0xd0
    [  +0.000004]  ? __pfx_mutex_unlock+0x10/0x10
    [  +0.000004]  ? _raw_spin_unlock+0x18/0x40
    [  +0.000005]  ice_unplug_aux_dev+0x52/0x70 [ice]
    [  +0.000160]  ice_service_task+0x1309/0x14f0 [ice]
    [  +0.000134]  ? __pfx___schedule+0x10/0x10
    [  +0.000006]  process_one_work+0x3b1/0x6c0
    [  +0.000008]  worker_thread+0x69/0x670
    [  +0.000005]  ? __kthread_parkme+0xec/0x110
    [  +0.000007]  ? __pfx_worker_thread+0x10/0x10
    [  +0.000005]  kthread+0x17f/0x1b0
    [  +0.000005]  ? __pfx_kthread+0x10/0x10
    [  +0.000004]  ret_from_fork+0x29/0x50
    [  +0.000009]  </TASK>
    
    Fixes: 940b61af02f4 ("ice: Initialize PF and setup miscellaneous interrupt")
    Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    Signed-off-by: Marcin Szycik <marcin.szycik@linux.intel.com>
    Tested-by: Jakub Andrysiak <jakub.andrysiak@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34a5af788ed405992f829d33dbd818b8cca85681
Author: Herton R. Krzesinski <herton@redhat.com>
Date:   Fri Feb 3 13:04:48 2023 -0300

    uapi: add missing ip/ipv6 header dependencies for linux/stddef.h
    
    [ Upstream commit 03702d4d29be4e2510ec80b248dbbde4e57030d9 ]
    
    Since commit 58e0be1ef6118 ("net: use struct_group to copy ip/ipv6
    header addresses"), ip and ipv6 headers started to use the __struct_group
    definition, which is defined at include/uapi/linux/stddef.h. However,
    linux/stddef.h isn't explicitly included in include/uapi/linux/{ip,ipv6}.h,
    which breaks build of xskxceiver bpf selftest if you install the uapi
    headers in the system:
    
    $ make V=1 xskxceiver -C tools/testing/selftests/bpf
    ...
    make: Entering directory '(...)/tools/testing/selftests/bpf'
    gcc -g -O0 -rdynamic -Wall -Werror (...)
    In file included from xskxceiver.c:79:
    /usr/include/linux/ip.h:103:9: error: expected specifier-qualifier-list before ‘__struct_group’
      103 |         __struct_group(/* no tag */, addrs, /* no attrs */,
          |         ^~~~~~~~~~~~~~
    ...
    
    Include the missing <linux/stddef.h> dependency in ip.h and do the
    same for the ipv6.h header.
    
    Fixes: 58e0be1ef611 ("net: use struct_group to copy ip/ipv6 header addresses")
    Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
    Tested-by: Carlos O'Donell <carlos@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4259a40827728a1749bffa46441ef75ca138961b
Author: Neel Patel <neel.patel@amd.com>
Date:   Thu Feb 2 13:55:35 2023 -0800

    ionic: clean interrupt before enabling queue to avoid credit race
    
    [ Upstream commit e8797a058466b60fc5a3291b92430c93ba90eaff ]
    
    Clear the interrupt credits before enabling the queue rather
    than after to be sure that the enabled queue starts at 0 and
    that we don't wipe away possible credits after enabling the
    queue.
    
    Fixes: 0f3154e6bcb3 ("ionic: Add Tx and Rx handling")
    Signed-off-by: Neel Patel <neel.patel@amd.com>
    Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 07097ad30b36b79ae23826291978a1775fb14f94
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Feb 2 21:45:36 2023 +0100

    net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY
    
    [ Upstream commit 69ff53e4a4c9498eeed7d1441f68a1481dc69251 ]
    
    Jerome provided the information that also the GXL internal PHY doesn't
    support MMD register access and EEE. MMD reads return 0xffff, what
    results in e.g. completely wrong ethtool --show-eee output.
    Therefore use the MMD dummy stubs.
    
    Fixes: d853d145ea3e ("net: phy: add an option to disable EEE advertisement")
    Suggested-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/84432fe4-0be4-bc82-4e5c-557206b40f56@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cafa2ad4f1d71a0cc6e079f04ca2f786314fd7cc
Author: Qi Zheng <zhengqi.arch@bytedance.com>
Date:   Thu Feb 2 17:32:55 2023 +0800

    bonding: fix error checking in bond_debug_reregister()
    
    [ Upstream commit cbe83191d40d8925b7a99969d037d2a0caf69294 ]
    
    Since commit ff9fb72bc077 ("debugfs: return error values,
    not NULL") changed return value of debugfs_rename() in
    error cases from %NULL to %ERR_PTR(-ERROR), we should
    also check error values instead of NULL.
    
    Fixes: ff9fb72bc077 ("debugfs: return error values, not NULL")
    Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
    Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Link: https://lore.kernel.org/r/20230202093256.32458-1-zhengqi.arch@bytedance.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 30fdf660356f708917b722a9aa01d70d27d96280
Author: Christian Hopps <chopps@chopps.org>
Date:   Thu Jan 26 11:33:50 2023 -0500

    xfrm: fix bug with DSCP copy to v6 from v4 tunnel
    
    [ Upstream commit 6028da3f125fec34425dbd5fec18e85d372b2af6 ]
    
    When copying the DSCP bits for decap-dscp into IPv6 don't assume the
    outer encap is always IPv6. Instead, as with the inner IPv4 case, copy
    the DSCP bits from the correctly saved "tos" value in the control block.
    
    Fixes: 227620e29509 ("[IPSEC]: Separate inner/outer mode processing on input")
    Signed-off-by: Christian Hopps <chopps@chopps.org>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 491b7a5fc8e28ceb0688191d611fe8037905f0fb
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Sun Jan 29 17:37:57 2023 +0800

    RDMA/usnic: use iommu_map_atomic() under spin_lock()
    
    [ Upstream commit b7e08a5a63a11627601915473c3b569c1f6c6c06 ]
    
    usnic_uiom_map_sorted_intervals() is called under spin_lock(), iommu_map()
    might sleep, use iommu_map_atomic() to avoid potential sleep in atomic
    context.
    
    Fixes: e3cf00d0a87f ("IB/usnic: Add Cisco VIC low-level hardware driver")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20230129093757.637354-1-yangyingliang@huawei.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b1afb666c32931667c15ad1b58e7203f0119dcaf
Author: Dragos Tatulea <dtatulea@nvidia.com>
Date:   Tue Jan 24 20:24:18 2023 +0200

    IB/IPoIB: Fix legacy IPoIB due to wrong number of queues
    
    [ Upstream commit e632291a2dbce45a24cddeb5fe28fe71d724ba43 ]
    
    The cited commit creates child PKEY interfaces over netlink will
    multiple tx and rx queues, but some devices doesn't support more than 1
    tx and 1 rx queues. This causes to a crash when traffic is sent over the
    PKEY interface due to the parent having a single queue but the child
    having multiple queues.
    
    This patch fixes the number of queues to 1 for legacy IPoIB at the
    earliest possible point in time.
    
    BUG: kernel NULL pointer dereference, address: 000000000000036b
    PGD 0 P4D 0
    Oops: 0000 [#1] SMP
    CPU: 4 PID: 209665 Comm: python3 Not tainted 6.1.0_for_upstream_min_debug_2022_12_12_17_02 #1
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
    RIP: 0010:kmem_cache_alloc+0xcb/0x450
    Code: ce 7e 49 8b 50 08 49 83 78 10 00 4d 8b 28 0f 84 cb 02 00 00 4d 85 ed 0f 84 c2 02 00 00 41 8b 44 24 28 48 8d 4a
    01 49 8b 3c 24 <49> 8b 5c 05 00 4c 89 e8 65 48 0f c7 0f 0f 94 c0 84 c0 74 b8 41 8b
    RSP: 0018:ffff88822acbbab8 EFLAGS: 00010202
    RAX: 0000000000000070 RBX: ffff8881c28e3e00 RCX: 00000000064f8dae
    RDX: 00000000064f8dad RSI: 0000000000000a20 RDI: 0000000000030d00
    RBP: 0000000000000a20 R08: ffff8882f5d30d00 R09: ffff888104032f40
    R10: ffff88810fade828 R11: 736f6d6570736575 R12: ffff88810081c000
    R13: 00000000000002fb R14: ffffffff817fc865 R15: 0000000000000000
    FS:  00007f9324ff9700(0000) GS:ffff8882f5d00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000000000000036b CR3: 00000001125af004 CR4: 0000000000370ea0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     skb_clone+0x55/0xd0
     ip6_finish_output2+0x3fe/0x690
     ip6_finish_output+0xfa/0x310
     ip6_send_skb+0x1e/0x60
     udp_v6_send_skb+0x1e5/0x420
     udpv6_sendmsg+0xb3c/0xe60
     ? ip_mc_finish_output+0x180/0x180
     ? __switch_to_asm+0x3a/0x60
     ? __switch_to_asm+0x34/0x60
     sock_sendmsg+0x33/0x40
     __sys_sendto+0x103/0x160
     ? _copy_to_user+0x21/0x30
     ? kvm_clock_get_cycles+0xd/0x10
     ? ktime_get_ts64+0x49/0xe0
     __x64_sys_sendto+0x25/0x30
     do_syscall_64+0x3d/0x90
     entry_SYSCALL_64_after_hwframe+0x46/0xb0
    RIP: 0033:0x7f9374f1ed14
    Code: 42 41 f8 ff 44 8b 4c 24 2c 4c 8b 44 24 20 89 c5 44 8b 54 24 28 48 8b 54 24 18 b8 2c 00 00 00 48 8b 74 24 10 8b
    7c 24 08 0f 05 <48> 3d 00 f0 ff ff 77 34 89 ef 48 89 44 24 08 e8 68 41 f8 ff 48 8b
    RSP: 002b:00007f9324ff7bd0 EFLAGS: 00000293 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00007f9324ff7cc8 RCX: 00007f9374f1ed14
    RDX: 00000000000002fb RSI: 00007f93000052f0 RDI: 0000000000000030
    RBP: 0000000000000000 R08: 00007f9324ff7d40 R09: 000000000000001c
    R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
    R13: 000000012a05f200 R14: 0000000000000001 R15: 00007f9374d57bdc
     </TASK>
    
    Fixes: dbc94a0fb817 ("IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces")
    Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
    Link: https://lore.kernel.org/r/95eb6b74c7cf49fa46281f9d056d685c9fa11d38.1674584576.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a893cc644812728e86e9aff517fd5698812ecef0
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jan 20 13:02:49 2023 +0000

    xfrm/compat: prevent potential spectre v1 gadget in xfrm_xlate32_attr()
    
    [ Upstream commit b6ee896385380aa621102e8ea402ba12db1cabff ]
    
      int type = nla_type(nla);
    
      if (type > XFRMA_MAX) {
                return -EOPNOTSUPP;
      }
    
    @type is then used as an array index and can be used
    as a Spectre v1 gadget.
    
      if (nla_len(nla) < compat_policy[type].len) {
    
    array_index_nospec() can be used to prevent leaking
    content of kernel memory to malicious users.
    
    Fixes: 5106f4a8acff ("xfrm/compat: Add 32=>64-bit messages translator")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Dmitry Safonov <dima@arista.com>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Reviewed-by: Dmitry Safonov <dima@arista.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79b595d9591426156a9e0635a5b5115508a36fef
Author: Dean Luick <dean.luick@cornelisnetworks.com>
Date:   Thu Jan 12 13:16:02 2023 -0500

    IB/hfi1: Restore allocated resources on failed copyout
    
    [ Upstream commit 6601fc0d15ffc20654e39486f9bef35567106d68 ]
    
    Fix a resource leak if an error occurs.
    
    Fixes: f404ca4c7ea8 ("IB/hfi1: Refactor hfi_user_exp_rcv_setup() IOCTL")
    Signed-off-by: Dean Luick <dean.luick@cornelisnetworks.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Link: https://lore.kernel.org/r/167354736291.2132367.10894218740150168180.stgit@awfm-02.cornelisnetworks.com
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3797e94c1992c92038911df5efdab2b4496bb1e9
Author: Anastasia Belova <abelova@astralinux.ru>
Date:   Tue Jan 10 12:14:50 2023 +0300

    xfrm: compat: change expression for switch in xfrm_xlate64
    
    [ Upstream commit eb6c59b735aa6cca77cdbb59cc69d69a0d63d986 ]
    
    Compare XFRM_MSG_NEWSPDINFO (value from netlink
    configuration messages enum) with nlh_src->nlmsg_type
    instead of nlh_src->nlmsg_type - XFRM_MSG_BASE.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 4e9505064f58 ("net/xfrm/compat: Copy xfrm_spdattr_type_t atributes")
    Signed-off-by: Anastasia Belova <abelova@astralinux.ru>
    Acked-by: Dmitry Safonov <0x7f454c46@gmail.com>
    Tested-by: Dmitry Safonov <0x7f454c46@gmail.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc9771cd63981c42b674abda1ab6f35181eb8be0
Author: Devid Antonio Filoni <devid.filoni@egluetechnologies.com>
Date:   Fri Nov 25 18:04:18 2022 +0100

    can: j1939: do not wait 250 ms if the same addr was already claimed
    
    commit 4ae5e1e97c44f4654516c1d41591a462ed62fa7b upstream.
    
    The ISO 11783-5 standard, in "4.5.2 - Address claim requirements", states:
      d) No CF shall begin, or resume, transmission on the network until 250
         ms after it has successfully claimed an address except when
         responding to a request for address-claimed.
    
    But "Figure 6" and "Figure 7" in "4.5.4.2 - Address-claim
    prioritization" show that the CF begins the transmission after 250 ms
    from the first AC (address-claimed) message even if it sends another AC
    message during that time window to resolve the address contention with
    another CF.
    
    As stated in "4.4.2.3 - Address-claimed message":
      In order to successfully claim an address, the CF sending an address
      claimed message shall not receive a contending claim from another CF
      for at least 250 ms.
    
    As stated in "4.4.3.2 - NAME management (NM) message":
      1) A commanding CF can
         d) request that a CF with a specified NAME transmit the address-
            claimed message with its current NAME.
      2) A target CF shall
         d) send an address-claimed message in response to a request for a
            matching NAME
    
    Taking the above arguments into account, the 250 ms wait is requested
    only during network initialization.
    
    Do not restart the timer on AC message if both the NAME and the address
    match and so if the address has already been claimed (timer has expired)
    or the AC message has been sent to resolve the contention with another
    CF (timer is still running).
    
    Signed-off-by: Devid Antonio Filoni <devid.filoni@egluetechnologies.com>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Link: https://lore.kernel.org/all/20221125170418.34575-1-devid.filoni@egluetechnologies.com
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Cc: stable@vger.kernel.org
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit edaf5c718314386f8ac4fd083538963bd984afa9
Author: Mark Brown <broonie@kernel.org>
Date:   Sat Jan 28 17:47:50 2023 +0000

    of/address: Return an error when no valid dma-ranges are found
    
    commit f6933c01e42d2fc83b9133ed755609e4aac6eadd upstream.
    
    Commit 7a8b64d17e35 ("of/address: use range parser for of_dma_get_range")
    converted the parsing of dma-range properties to use code shared with the
    PCI range parser. The intent was to introduce no functional changes however
    in the case where we fail to translate the first resource instead of
    returning -EINVAL the new code we return 0. Restore the previous behaviour
    by returning an error if we find no valid ranges, the original code only
    handled the first range but subsequently support for parsing all supplied
    ranges was added.
    
    This avoids confusing code using the parsed ranges which doesn't expect to
    successfully parse ranges but have only a list terminator returned, this
    fixes breakage with so far as I can tell all DMA for on SoC devices on the
    Socionext Synquacer platform which has a firmware supplied DT. A bisect
    identified the original conversion as triggering the issues there.
    
    Fixes: 7a8b64d17e35 ("of/address: use range parser for of_dma_get_range")
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: Luca Di Stefano <luca.distefano@linaro.org>
    Cc: 993612@bugs.debian.org
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20230126-synquacer-boot-v2-1-cb80fd23c4e2@kernel.org
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7d5fa8052ad9278d21115db43950c01c92e4059
Author: Shiju Jose <shiju.jose@huawei.com>
Date:   Thu Feb 2 18:23:09 2023 +0000

    tracing: Fix poll() and select() do not work on per_cpu trace_pipe and trace_pipe_raw
    
    commit 3e46d910d8acf94e5360126593b68bf4fee4c4a1 upstream.
    
    poll() and select() on per_cpu trace_pipe and trace_pipe_raw do not work
    since kernel 6.1-rc6. This issue is seen after the commit
    42fb0a1e84ff525ebe560e2baf9451ab69127e2b ("tracing/ring-buffer: Have
    polling block on watermark").
    
    This issue is firstly detected and reported, when testing the CXL error
    events in the rasdaemon and also erified using the test application for poll()
    and select().
    
    This issue occurs for the per_cpu case, when calling the ring_buffer_poll_wait(),
    in kernel/trace/ring_buffer.c, with the buffer_percent > 0 and then wait until the
    percentage of pages are available. The default value set for the buffer_percent is 50
    in the kernel/trace/trace.c.
    
    As a fix, allow userspace application could set buffer_percent as 0 through
    the buffer_percent_fops, so that the task will wake up as soon as data is added
    to any of the specific cpu buffer.
    
    Link: https://lore.kernel.org/linux-trace-kernel/20230202182309.742-2-shiju.jose@huawei.com
    
    Cc: <mhiramat@kernel.org>
    Cc: <mchehab@kernel.org>
    Cc: <linux-edac@vger.kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: 42fb0a1e84ff5 ("tracing/ring-buffer: Have polling block on watermark")
    Signed-off-by: Shiju Jose <shiju.jose@huawei.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35452bf986ab016b368d80e91e5ee1b339a4fd8f
Author: Guillaume Pinot <texitoi@texitoi.eu>
Date:   Sun Jan 29 18:13:38 2023 +0100

    ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro 360
    
    commit bd401fd730cbcb0717bbc5438f15084db10f9259 upstream.
    
    Samsung Galaxy Book2 Pro 360 (13" 2022 NP930QED-KA1FR) with codec SSID
    144d:ca03 requires the same workaround for enabling the speaker amp
    like other Samsung models with ALC298 codec.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Guillaume Pinot <texitoi@texitoi.eu>
    Link: https://lore.kernel.org/r/20230129171338.17249-1-texitoi@texitoi.eu
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1646e2be9561469ff26c11295ad14b6c32e670f
Author: Artemii Karasev <karasev@ispras.ru>
Date:   Tue Feb 7 18:20:26 2023 +0500

    ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control()
    
    commit 6a32425f953b955b4ff82f339d01df0b713caa5d upstream.
    
    snd_emux_xg_control() can be called with an argument 'param' greater
    than size of 'control' array. It may lead to accessing 'control'
    array at a wrong index.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Artemii Karasev <karasev@ispras.ru>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230207132026.2870-1-karasev@ispras.ru
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c657623990666a4f4117640a12b41fb29cd9575
Author: Edson Juliano Drosdeck <edson.drosdeck@gmail.com>
Date:   Tue Feb 7 15:37:20 2023 -0300

    ALSA: hda/realtek: Add Positivo N14KP6-TG
    
    commit 88d18b8896bd98e636b632f805b7e84e61458255 upstream.
    
    Positivo N14KP6-TG (1c6c:1251)
    require quirk for enabling headset-mic
    
    Signed-off-by: Edson Juliano Drosdeck <edson.drosdeck@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20230207183720.2519-1-edson.drosdeck@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1fd16cd975397e8998660b4413d73280afabfe3
Author: Alexander Potapenko <glider@google.com>
Date:   Tue Jan 24 12:32:34 2023 +0100

    btrfs: zlib: zero-initialize zlib workspace
    
    commit eadd7deca0ad8a83edb2b894d8326c78e78635d6 upstream.
    
    KMSAN reports uses of uninitialized memory in zlib's longest_match()
    called on memory originating from zlib_alloc_workspace().
    This issue is known by zlib maintainers and is claimed to be harmless,
    but to be on the safe side we'd better initialize the memory.
    
    Link: https://zlib.net/zlib_faq.html#faq36
    Reported-by: syzbot+14d9e7602ebdf7ec0a60@syzkaller.appspotmail.com
    CC: stable@vger.kernel.org # 5.4+
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1406d5aa39361b4f62edde1dfd8f86e1bdf1323
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Jan 18 16:35:13 2023 -0500

    btrfs: limit device extents to the device size
    
    commit 3c538de0f2a74d50aff7278c092f88ae59cee688 upstream.
    
    There was a recent regression in btrfs/177 that started happening with
    the size class patches ("btrfs: introduce size class to block group
    allocator").  This however isn't a regression introduced by those
    patches, but rather the bug was uncovered by a change in behavior in
    these patches.  The patches triggered more chunk allocations in the
    ^free-space-tree case, which uncovered a race with device shrink.
    
    The problem is we will set the device total size to the new size, and
    use this to find a hole for a device extent.  However during shrink we
    may have device extents allocated past this range, so we could
    potentially find a hole in a range past our new shrink size.  We don't
    actually limit our found extent to the device size anywhere, we assume
    that we will not find a hole past our device size.  This isn't true with
    shrink as we're relocating block groups and thus creating holes past the
    device size.
    
    Fix this by making sure we do not search past the new device size, and
    if we wander into any device extents that start after our device size
    simply break from the loop and use whatever hole we've already found.
    
    CC: stable@vger.kernel.org # 4.14+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dbe5a11954d8537ea0a0dc14f175353755b7eab0
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Thu Jan 26 14:27:21 2023 -0800

    migrate: hugetlb: check for hugetlb shared PMD in node migration
    
    [ Upstream commit 73bdf65ea74857d7fb2ec3067a3cec0e261b1462 ]
    
    migrate_pages/mempolicy semantics state that CAP_SYS_NICE is required to
    move pages shared with another process to a different node.  page_mapcount
    > 1 is being used to determine if a hugetlb page is shared.  However, a
    hugetlb page will have a mapcount of 1 if mapped by multiple processes via
    a shared PMD.  As a result, hugetlb pages shared by multiple processes and
    mapped with a shared PMD can be moved by a process without CAP_SYS_NICE.
    
    To fix, check for a shared PMD if mapcount is 1.  If a shared PMD is found
    consider the page shared.
    
    Link: https://lkml.kernel.org/r/20230126222721.222195-3-mike.kravetz@oracle.com
    Fixes: e2d8cf405525 ("migrate: add hugepage migration code to migrate_pages()")
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Acked-by: Peter Xu <peterx@redhat.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: James Houghton <jthoughton@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev>
    Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 97a5104d640da5867dd55243b8300a3867da90a9
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Mon May 30 19:30:15 2022 +0800

    mm/migration: return errno when isolate_huge_page failed
    
    [ Upstream commit 7ce82f4c3f3ead13a9d9498768e3b1a79975c4d8 ]
    
    We might fail to isolate huge page due to e.g.  the page is under
    migration which cleared HPageMigratable.  We should return errno in this
    case rather than always return 1 which could confuse the user, i.e.  the
    caller might think all of the memory is migrated while the hugetlb page is
    left behind.  We make the prototype of isolate_huge_page consistent with
    isolate_lru_page as suggested by Huang Ying and rename isolate_huge_page
    to isolate_hugetlb as suggested by Muchun to improve the readability.
    
    Link: https://lkml.kernel.org/r/20220530113016.16663-4-linmiaohe@huawei.com
    Fixes: e8db67eb0ded ("mm: migrate: move_pages() supports thp migration")
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Suggested-by: Huang Ying <ying.huang@intel.com>
    Reported-by: kernel test robot <lkp@intel.com> (build error)
    Cc: Alistair Popple <apopple@nvidia.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Peter Xu <peterx@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Stable-dep-of: 73bdf65ea748 ("migrate: hugetlb: check for hugetlb shared PMD in node migration")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 91ad3104b211e57842dc2289d2716589ced1affc
Author: Andreas Kemnade <andreas@kemnade.info>
Date:   Sat Dec 17 23:13:05 2022 +0100

    iio:adc:twl6030: Enable measurement of VAC
    
    [ Upstream commit bffb7d9d1a3dbd09e083b88aefd093b3b10abbfb ]
    
    VAC needs to be wired up to produce proper measurements,
    without this change only near zero values are reported.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Reported-by: Julia Lawall <julia.lawall@lip6.fr>
    Fixes: 1696f36482e7 ("iio: twl6030-gpadc: TWL6030, TWL6032 GPADC driver")
    Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
    Link: https://lore.kernel.org/r/20221217221305.671117-1-andreas@kemnade.info
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e4c3ea9b6045912d87de83f616c50a0a0fc74b86
Author: Martin KaFai Lau <kafai@fb.com>
Date:   Mon Nov 1 23:45:35 2021 -0700

    bpf: Do not reject when the stack read size is different from the tracked scalar size
    
    [ Upstream commit f30d4968e9aee737e174fc97942af46cfb49b484 ]
    
    Below is a simplified case from a report in bcc [0]:
    
      r4 = 20
      *(u32 *)(r10 -4) = r4
      *(u32 *)(r10 -8) = r4  /* r4 state is tracked */
      r4 = *(u64 *)(r10 -8)  /* Read more than the tracked 32bit scalar.
                              * verifier rejects as 'corrupted spill memory'.
                              */
    
    After commit 354e8f1970f8 ("bpf: Support <8-byte scalar spill and refill"),
    the 8-byte aligned 32bit spill is also tracked by the verifier and the
    register state is stored.
    
    However, if 8 bytes are read from the stack instead of the tracked 4 byte
    scalar, then verifier currently rejects the program as "corrupted spill
    memory". This patch fixes this case by allowing it to read but marks the
    register as unknown.
    
    Also note that, if the prog is trying to corrupt/leak an earlier spilled
    pointer by spilling another <8 bytes register on top, this has already
    been rejected in the check_stack_write_fixed_off().
    
      [0] https://github.com/iovisor/bcc/pull/3683
    
    Fixes: 354e8f1970f8 ("bpf: Support <8-byte scalar spill and refill")
    Reported-by: Hengqi Chen <hengqi.chen@gmail.com>
    Reported-by: Yonghong Song <yhs@gmail.com>
    Signed-off-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Tested-by: Hengqi Chen <hengqi.chen@gmail.com>
    Acked-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20211102064535.316018-1-kafai@fb.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34ec4c7831c416ac56619477f1701986634a7efc
Author: Christophe Kerello <christophe.kerello@foss.st.com>
Date:   Sun Feb 20 15:14:31 2022 +0000

    nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property
    
    [ Upstream commit f6c052afe6f802d87c74153b7a57c43b2e9faf07 ]
    
    Wp-gpios property can be used on NVMEM nodes and the same property can
    be also used on MTD NAND nodes. In case of the wp-gpios property is
    defined at NAND level node, the GPIO management is done at NAND driver
    level. Write protect is disabled when the driver is probed or resumed
    and is enabled when the driver is released or suspended.
    
    When no partitions are defined in the NAND DT node, then the NAND DT node
    will be passed to NVMEM framework. If wp-gpios property is defined in
    this node, the GPIO resource is taken twice and the NAND controller
    driver fails to probe.
    
    It would be possible to set config->wp_gpio at MTD level before calling
    nvmem_register function but NVMEM framework will toggle this GPIO on
    each write when this GPIO should only be controlled at NAND level driver
    to ensure that the Write Protect has not been enabled.
    
    A way to fix this conflict is to add a new boolean flag in nvmem_config
    named ignore_wp. In case ignore_wp is set, the GPIO resource will
    be managed by the provider.
    
    Fixes: 2a127da461a9 ("nvmem: add support for the write-protect pin")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe Kerello <christophe.kerello@foss.st.com>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20220220151432.16605-2-srinivas.kandagatla@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: ab3428cfd9aa ("nvmem: core: fix registration vs use race")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2e412879595821ff1b5545cbed5f108fba7f5b6
Author: Minsuk Kang <linuxlovemin@yonsei.ac.kr>
Date:   Wed Nov 16 23:29:52 2022 +0900

    wifi: brcmfmac: Check the count value of channel spec to prevent out-of-bounds reads
    
    commit 4920ab131b2dbae7464b72bdcac465d070254209 upstream.
    
    This patch fixes slab-out-of-bounds reads in brcmfmac that occur in
    brcmf_construct_chaninfo() and brcmf_enable_bw40_2g() when the count
    value of channel specifications provided by the device is greater than
    the length of 'list->element[]', decided by the size of the 'list'
    allocated with kzalloc(). The patch adds checks that make the functions
    free the buffer and return -EINVAL if that is the case. Note that the
    negative return is handled by the caller, brcmf_setup_wiphybands() or
    brcmf_cfg80211_attach().
    
    Found by a modified version of syzkaller.
    
    Crash Report from brcmf_construct_chaninfo():
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in brcmf_setup_wiphybands+0x1238/0x1430
    Read of size 4 at addr ffff888115f24600 by task kworker/0:2/1896
    
    CPU: 0 PID: 1896 Comm: kworker/0:2 Tainted: G        W  O      5.14.0+ #132
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
    Workqueue: usb_hub_wq hub_event
    Call Trace:
     dump_stack_lvl+0x57/0x7d
     print_address_description.constprop.0.cold+0x93/0x334
     kasan_report.cold+0x83/0xdf
     brcmf_setup_wiphybands+0x1238/0x1430
     brcmf_cfg80211_attach+0x2118/0x3fd0
     brcmf_attach+0x389/0xd40
     brcmf_usb_probe+0x12de/0x1690
     usb_probe_interface+0x25f/0x710
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_set_configuration+0x984/0x1770
     usb_generic_driver_probe+0x69/0x90
     usb_probe_device+0x9c/0x220
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_new_device.cold+0x463/0xf66
     hub_event+0x10d5/0x3330
     process_one_work+0x873/0x13e0
     worker_thread+0x8b/0xd10
     kthread+0x379/0x450
     ret_from_fork+0x1f/0x30
    
    Allocated by task 1896:
     kasan_save_stack+0x1b/0x40
     __kasan_kmalloc+0x7c/0x90
     kmem_cache_alloc_trace+0x19e/0x330
     brcmf_setup_wiphybands+0x290/0x1430
     brcmf_cfg80211_attach+0x2118/0x3fd0
     brcmf_attach+0x389/0xd40
     brcmf_usb_probe+0x12de/0x1690
     usb_probe_interface+0x25f/0x710
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_set_configuration+0x984/0x1770
     usb_generic_driver_probe+0x69/0x90
     usb_probe_device+0x9c/0x220
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_new_device.cold+0x463/0xf66
     hub_event+0x10d5/0x3330
     process_one_work+0x873/0x13e0
     worker_thread+0x8b/0xd10
     kthread+0x379/0x450
     ret_from_fork+0x1f/0x30
    
    The buggy address belongs to the object at ffff888115f24000
     which belongs to the cache kmalloc-2k of size 2048
    The buggy address is located 1536 bytes inside of
     2048-byte region [ffff888115f24000, ffff888115f24800)
    
    Memory state around the buggy address:
     ffff888115f24500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff888115f24580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    >ffff888115f24600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                       ^
     ffff888115f24680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff888115f24700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    ==================================================================
    
    Crash Report from brcmf_enable_bw40_2g():
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in brcmf_cfg80211_attach+0x3d11/0x3fd0
    Read of size 4 at addr ffff888103787600 by task kworker/0:2/1896
    
    CPU: 0 PID: 1896 Comm: kworker/0:2 Tainted: G        W  O      5.14.0+ #132
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
    Workqueue: usb_hub_wq hub_event
    Call Trace:
     dump_stack_lvl+0x57/0x7d
     print_address_description.constprop.0.cold+0x93/0x334
     kasan_report.cold+0x83/0xdf
     brcmf_cfg80211_attach+0x3d11/0x3fd0
     brcmf_attach+0x389/0xd40
     brcmf_usb_probe+0x12de/0x1690
     usb_probe_interface+0x25f/0x710
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_set_configuration+0x984/0x1770
     usb_generic_driver_probe+0x69/0x90
     usb_probe_device+0x9c/0x220
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_new_device.cold+0x463/0xf66
     hub_event+0x10d5/0x3330
     process_one_work+0x873/0x13e0
     worker_thread+0x8b/0xd10
     kthread+0x379/0x450
     ret_from_fork+0x1f/0x30
    
    Allocated by task 1896:
     kasan_save_stack+0x1b/0x40
     __kasan_kmalloc+0x7c/0x90
     kmem_cache_alloc_trace+0x19e/0x330
     brcmf_cfg80211_attach+0x3302/0x3fd0
     brcmf_attach+0x389/0xd40
     brcmf_usb_probe+0x12de/0x1690
     usb_probe_interface+0x25f/0x710
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_set_configuration+0x984/0x1770
     usb_generic_driver_probe+0x69/0x90
     usb_probe_device+0x9c/0x220
     really_probe+0x1be/0xa90
     __driver_probe_device+0x2ab/0x460
     driver_probe_device+0x49/0x120
     __device_attach_driver+0x18a/0x250
     bus_for_each_drv+0x123/0x1a0
     __device_attach+0x207/0x330
     bus_probe_device+0x1a2/0x260
     device_add+0xa61/0x1ce0
     usb_new_device.cold+0x463/0xf66
     hub_event+0x10d5/0x3330
     process_one_work+0x873/0x13e0
     worker_thread+0x8b/0xd10
     kthread+0x379/0x450
     ret_from_fork+0x1f/0x30
    
    The buggy address belongs to the object at ffff888103787000
     which belongs to the cache kmalloc-2k of size 2048
    The buggy address is located 1536 bytes inside of
     2048-byte region [ffff888103787000, ffff888103787800)
    
    Memory state around the buggy address:
     ffff888103787500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff888103787580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    >ffff888103787600: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                       ^
     ffff888103787680: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff888103787700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    ==================================================================
    
    Reported-by: Dokyung Song <dokyungs@yonsei.ac.kr>
    Reported-by: Jisoo Jang <jisoo.jang@yonsei.ac.kr>
    Reported-by: Minsuk Kang <linuxlovemin@yonsei.ac.kr>
    Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Minsuk Kang <linuxlovemin@yonsei.ac.kr>
    Signed-off-by: Kalle Valo <kvalo@kernel.org>
    Link: https://lore.kernel.org/r/20221116142952.518241-1-linuxlovemin@yonsei.ac.kr
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 914e38f02a490dafd980ff0f39cccedc074deb29
Author: Chao Yu <chao@kernel.org>
Date:   Tue Nov 15 00:08:47 2022 +0800

    f2fs: fix to do sanity check on i_extra_isize in is_alive()
    
    commit d3b7b4afd6b2c344eabf9cc26b8bfa903c164c7c upstream.
    
    syzbot found a f2fs bug:
    
    BUG: KASAN: slab-out-of-bounds in data_blkaddr fs/f2fs/f2fs.h:2891 [inline]
    BUG: KASAN: slab-out-of-bounds in is_alive fs/f2fs/gc.c:1117 [inline]
    BUG: KASAN: slab-out-of-bounds in gc_data_segment fs/f2fs/gc.c:1520 [inline]
    BUG: KASAN: slab-out-of-bounds in do_garbage_collect+0x386a/0x3df0 fs/f2fs/gc.c:1734
    Read of size 4 at addr ffff888076557568 by task kworker/u4:3/52
    
    CPU: 1 PID: 52 Comm: kworker/u4:3 Not tainted 6.1.0-rc4-syzkaller-00362-gfef7fd48922d #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
    Workqueue: writeback wb_workfn (flush-7:0)
    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:284 [inline]
    print_report+0x15e/0x45d mm/kasan/report.c:395
    kasan_report+0xbb/0x1f0 mm/kasan/report.c:495
    data_blkaddr fs/f2fs/f2fs.h:2891 [inline]
    is_alive fs/f2fs/gc.c:1117 [inline]
    gc_data_segment fs/f2fs/gc.c:1520 [inline]
    do_garbage_collect+0x386a/0x3df0 fs/f2fs/gc.c:1734
    f2fs_gc+0x88c/0x20a0 fs/f2fs/gc.c:1831
    f2fs_balance_fs+0x544/0x6b0 fs/f2fs/segment.c:410
    f2fs_write_inode+0x57e/0xe20 fs/f2fs/inode.c:753
    write_inode fs/fs-writeback.c:1440 [inline]
    __writeback_single_inode+0xcfc/0x1440 fs/fs-writeback.c:1652
    writeback_sb_inodes+0x54d/0xf90 fs/fs-writeback.c:1870
    wb_writeback+0x2c5/0xd70 fs/fs-writeback.c:2044
    wb_do_writeback fs/fs-writeback.c:2187 [inline]
    wb_workfn+0x2dc/0x12f0 fs/fs-writeback.c:2227
    process_one_work+0x9bf/0x1710 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
    
    The root cause is that we forgot to do sanity check on .i_extra_isize
    in below path, result in accessing invalid address later, fix it.
    - gc_data_segment
     - is_alive
      - data_blkaddr
       - offset_in_addr
    
    Reported-by: syzbot+f8f3dfa4abc489e768a1@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/linux-f2fs-devel/0000000000003cb3c405ed5c17f9@google.com/T/#u
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3931014367ef31d26af65386a4ca496f50f0cfdf
Author: Dongliang Mu <dzm91@hust.edu.cn>
Date:   Fri Nov 11 13:49:49 2022 +0800

    fbdev: smscufx: fix error handling code in ufx_usb_probe
    
    commit b76449ee75e21acfe9fa4c653d8598f191ed7d68 upstream.
    
    The current error handling code in ufx_usb_probe have many unmatching
    issues, e.g., missing ufx_free_usb_list, destroy_modedb label should
    only include framebuffer_release, fb_dealloc_cmap only matches
    fb_alloc_cmap.
    
    My local syzkaller reports a memory leak bug:
    
    memory leak in ufx_usb_probe
    
    BUG: memory leak
    unreferenced object 0xffff88802f879580 (size 128):
      comm "kworker/0:7", pid 17416, jiffies 4295067474 (age 46.710s)
      hex dump (first 32 bytes):
        80 21 7c 2e 80 88 ff ff 18 d0 d0 0c 80 88 ff ff  .!|.............
        00 d0 d0 0c 80 88 ff ff e0 ff ff ff 0f 00 00 00  ................
      backtrace:
        [<ffffffff814c99a0>] kmalloc_trace+0x20/0x90 mm/slab_common.c:1045
        [<ffffffff824d219c>] kmalloc include/linux/slab.h:553 [inline]
        [<ffffffff824d219c>] kzalloc include/linux/slab.h:689 [inline]
        [<ffffffff824d219c>] ufx_alloc_urb_list drivers/video/fbdev/smscufx.c:1873 [inline]
        [<ffffffff824d219c>] ufx_usb_probe+0x11c/0x15a0 drivers/video/fbdev/smscufx.c:1655
        [<ffffffff82d17927>] usb_probe_interface+0x177/0x370 drivers/usb/core/driver.c:396
        [<ffffffff82712f0d>] call_driver_probe drivers/base/dd.c:560 [inline]
        [<ffffffff82712f0d>] really_probe+0x12d/0x390 drivers/base/dd.c:639
        [<ffffffff8271322f>] __driver_probe_device+0xbf/0x140 drivers/base/dd.c:778
        [<ffffffff827132da>] driver_probe_device+0x2a/0x120 drivers/base/dd.c:808
        [<ffffffff82713c27>] __device_attach_driver+0xf7/0x150 drivers/base/dd.c:936
        [<ffffffff82710137>] bus_for_each_drv+0xb7/0x100 drivers/base/bus.c:427
        [<ffffffff827136b5>] __device_attach+0x105/0x2d0 drivers/base/dd.c:1008
        [<ffffffff82711d36>] bus_probe_device+0xc6/0xe0 drivers/base/bus.c:487
        [<ffffffff8270e242>] device_add+0x642/0xdc0 drivers/base/core.c:3517
        [<ffffffff82d14d5f>] usb_set_configuration+0x8ef/0xb80 drivers/usb/core/message.c:2170
        [<ffffffff82d2576c>] usb_generic_driver_probe+0x8c/0xc0 drivers/usb/core/generic.c:238
        [<ffffffff82d16ffc>] usb_probe_device+0x5c/0x140 drivers/usb/core/driver.c:293
        [<ffffffff82712f0d>] call_driver_probe drivers/base/dd.c:560 [inline]
        [<ffffffff82712f0d>] really_probe+0x12d/0x390 drivers/base/dd.c:639
        [<ffffffff8271322f>] __driver_probe_device+0xbf/0x140 drivers/base/dd.c:778
    
    Fix this bug by rewriting the error handling code in ufx_usb_probe.
    
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Tested-by: Dongliang Mu <dzm91@hust.edu.cn>
    Signed-off-by: Dongliang Mu <dzm91@hust.edu.cn>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c8a2c67a9d6de379b23aa3bbf4d8081dc014bd8
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon Jan 30 13:48:41 2023 +0200

    serial: 8250_dma: Fix DMA Rx rearm race
    
    commit 57e9af7831dcf211c5c689c2a6f209f4abdf0bce upstream.
    
    As DMA Rx can be completed from two places, it is possible that DMA Rx
    completes before DMA completion callback had a chance to complete it.
    Once the previous DMA Rx has been completed, a new one can be started
    on the next UART interrupt. The following race is possible
    (uart_unlock_and_check_sysrq_irqrestore() replaced with
    spin_unlock_irqrestore() for simplicity/clarity):
    
    CPU0                                    CPU1
                                            dma_rx_complete()
    serial8250_handle_irq()
      spin_lock_irqsave(&port->lock)
      handle_rx_dma()
        serial8250_rx_dma_flush()
          __dma_rx_complete()
            dma->rx_running = 0
            // Complete DMA Rx
      spin_unlock_irqrestore(&port->lock)
    
    serial8250_handle_irq()
      spin_lock_irqsave(&port->lock)
      handle_rx_dma()
        serial8250_rx_dma()
          dma->rx_running = 1
          // Setup a new DMA Rx
      spin_unlock_irqrestore(&port->lock)
    
                                              spin_lock_irqsave(&port->lock)
                                              // sees dma->rx_running = 1
                                              __dma_rx_complete()
                                                dma->rx_running = 0
                                                // Incorrectly complete
                                                // running DMA Rx
    
    This race seems somewhat theoretical to occur for real but handle it
    correctly regardless. Check what is the DMA status before complething
    anything in __dma_rx_complete().
    
    Reported-by: Gilles BULOZ <gilles.buloz@kontron.com>
    Tested-by: Gilles BULOZ <gilles.buloz@kontron.com>
    Fixes: 9ee4b83e51f7 ("serial: 8250: Add support for dmaengine")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20230130114841.25749-3-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 967e726e57c3bd0cd3b618d9cf81d91c21f764a6
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Mon Jan 30 13:48:40 2023 +0200

    serial: 8250_dma: Fix DMA Rx completion race
    
    commit 31352811e13dc2313f101b890fd4b1ce760b5fe7 upstream.
    
    __dma_rx_complete() is called from two places:
      - Through the DMA completion callback dma_rx_complete()
      - From serial8250_rx_dma_flush() after IIR_RLSI or IIR_RX_TIMEOUT
    The former does not hold port's lock during __dma_rx_complete() which
    allows these two to race and potentially insert the same data twice.
    
    Extend port's lock coverage in dma_rx_complete() to prevent the race
    and check if the DMA Rx is still pending completion before calling
    into __dma_rx_complete().
    
    Reported-by: Gilles BULOZ <gilles.buloz@kontron.com>
    Tested-by: Gilles BULOZ <gilles.buloz@kontron.com>
    Fixes: 9ee4b83e51f7 ("serial: 8250: Add support for dmaengine")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20230130114841.25749-2-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fd7a6a579687fc55e9c5c8cfe787533ee07b2d5
Author: Michael Walle <michael@walle.cc>
Date:   Fri Jan 27 10:40:13 2023 +0000

    nvmem: core: fix cell removal on error
    
    commit db3546d58b5a0fa581d9c9f2bdc2856fa6c5e43e upstream.
    
    nvmem_add_cells() could return an error after some cells are already
    added to the provider. In this case, the added cells are not removed.
    Remove any registered cells if nvmem_add_cells() fails.
    
    Fixes: fa72d847d68d7 ("nvmem: check the return value of nvmem_add_cells()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230127104015.23839-9-srinivas.kandagatla@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb875f0a34e775500f74bfaedf72e049733d9211
Author: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Date:   Fri Jan 27 10:40:08 2023 +0000

    nvmem: core: initialise nvmem->id early
    
    commit 3bd747c7ea13cb145f0d84444e00df928b0842d9 upstream.
    
    The error path for wp_gpio attempts to free the IDA nvmem->id, but
    this has yet to be assigned, so will always be zero - leaking the
    ID allocated by ida_alloc(). Fix this by moving the initialisation
    of nvmem->id earlier.
    
    Fixes: f7d8d7dcd978 ("nvmem: fix memory leak in error path")
    Cc: stable@vger.kernel.org
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230127104015.23839-4-srinivas.kandagatla@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b591abac78e25269b12e3d7170c99463f8c5cb02
Author: Rob Clark <robdclark@chromium.org>
Date:   Fri Jan 27 12:05:31 2023 -0800

    drm/i915: Fix potential bit_17 double-free
    
    commit 7057a8f126f14f14b040faecfa220fd27c6c2f85 upstream.
    
    A userspace with multiple threads racing I915_GEM_SET_TILING to set the
    tiling to I915_TILING_NONE could trigger a double free of the bit_17
    bitmask.  (Or conversely leak memory on the transition to tiled.)  Move
    allocation/free'ing of the bitmask within the section protected by the
    obj lock.
    
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Fixes: 2850748ef876 ("drm/i915: Pull i915_vma_pin under the vm->mutex")
    Cc: <stable@vger.kernel.org> # v5.5+
    [tursulin: Correct fixes tag and added cc stable.]
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230127200550.3531984-1-robdclark@gmail.com
    (cherry picked from commit 10e0cbaaf1104f449d695c80bcacf930dcd3c42e)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c4d4a83bf1a862d80c1efff1c6e3ce33b501e2e
Author: Phillip Lougher <phillip@squashfs.org.uk>
Date:   Fri Jan 27 06:18:42 2023 +0000

    Squashfs: fix handling and sanity checking of xattr_ids count
    
    commit f65c4bbbd682b0877b669828b4e033b8d5d0a2dc upstream.
    
    A Sysbot [1] corrupted filesystem exposes two flaws in the handling and
    sanity checking of the xattr_ids count in the filesystem.  Both of these
    flaws cause computation overflow due to incorrect typing.
    
    In the corrupted filesystem the xattr_ids value is 4294967071, which
    stored in a signed variable becomes the negative number -225.
    
    Flaw 1 (64-bit systems only):
    
    The signed integer xattr_ids variable causes sign extension.
    
    This causes variable overflow in the SQUASHFS_XATTR_*(A) macros.  The
    variable is first multiplied by sizeof(struct squashfs_xattr_id) where the
    type of the sizeof operator is "unsigned long".
    
    On a 64-bit system this is 64-bits in size, and causes the negative number
    to be sign extended and widened to 64-bits and then become unsigned.  This
    produces the very large number 18446744073709548016 or 2^64 - 3600.  This
    number when rounded up by SQUASHFS_METADATA_SIZE - 1 (8191 bytes) and
    divided by SQUASHFS_METADATA_SIZE overflows and produces a length of 0
    (stored in len).
    
    Flaw 2 (32-bit systems only):
    
    On a 32-bit system the integer variable is not widened by the unsigned
    long type of the sizeof operator (32-bits), and the signedness of the
    variable has no effect due it always being treated as unsigned.
    
    The above corrupted xattr_ids value of 4294967071, when multiplied
    overflows and produces the number 4294963696 or 2^32 - 3400.  This number
    when rounded up by SQUASHFS_METADATA_SIZE - 1 (8191 bytes) and divided by
    SQUASHFS_METADATA_SIZE overflows again and produces a length of 0.
    
    The effect of the 0 length computation:
    
    In conjunction with the corrupted xattr_ids field, the filesystem also has
    a corrupted xattr_table_start value, where it matches the end of
    filesystem value of 850.
    
    This causes the following sanity check code to fail because the
    incorrectly computed len of 0 matches the incorrect size of the table
    reported by the superblock (0 bytes).
    
        len = SQUASHFS_XATTR_BLOCK_BYTES(*xattr_ids);
        indexes = SQUASHFS_XATTR_BLOCKS(*xattr_ids);
    
        /*
         * The computed size of the index table (len bytes) should exactly
         * match the table start and end points
        */
        start = table_start + sizeof(*id_table);
        end = msblk->bytes_used;
    
        if (len != (end - start))
                return ERR_PTR(-EINVAL);
    
    Changing the xattr_ids variable to be "usigned int" fixes the flaw on a
    64-bit system.  This relies on the fact the computation is widened by the
    unsigned long type of the sizeof operator.
    
    Casting the variable to u64 in the above macro fixes this flaw on a 32-bit
    system.
    
    It also means 64-bit systems do not implicitly rely on the type of the
    sizeof operator to widen the computation.
    
    [1] https://lore.kernel.org/lkml/000000000000cd44f005f1a0f17f@google.com/
    
    Link: https://lkml.kernel.org/r/20230127061842.10965-1-phillip@squashfs.org.uk
    Fixes: 506220d2ba21 ("squashfs: add more sanity checks in xattr id lookup")
    Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
    Reported-by: <syzbot+082fa4af80a5bb1a9843@syzkaller.appspotmail.com>
    Cc: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Cc: Fedor Pchelkin <pchelkin@ispras.ru>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30187be29052bba9203b0ae2bdd815e0bc2faaab
Author: Longlong Xia <xialonglong1@huawei.com>
Date:   Sat Jan 28 09:47:57 2023 +0000

    mm/swapfile: add cond_resched() in get_swap_pages()
    
    commit 7717fc1a12f88701573f9ed897cc4f6699c661e3 upstream.
    
    The softlockup still occurs in get_swap_pages() under memory pressure.  64
    CPU cores, 64GB memory, and 28 zram devices, the disksize of each zram
    device is 50MB with same priority as si.  Use the stress-ng tool to
    increase memory pressure, causing the system to oom frequently.
    
    The plist_for_each_entry_safe() loops in get_swap_pages() could reach tens
    of thousands of times to find available space (extreme case:
    cond_resched() is not called in scan_swap_map_slots()).  Let's add
    cond_resched() into get_swap_pages() when failed to find available space
    to avoid softlockup.
    
    Link: https://lkml.kernel.org/r/20230128094757.1060525-1-xialonglong1@huawei.com
    Signed-off-by: Longlong Xia <xialonglong1@huawei.com>
    Reviewed-by: "Huang, Ying" <ying.huang@intel.com>
    Cc: Chen Wandun <chenwandun@huawei.com>
    Cc: Huang Ying <ying.huang@intel.com>
    Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Nanyong Sun <sunnanyong@huawei.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 639b40007a480ee880228bfa4ee10f4c6f695ab7
Author: Zheng Yongjun <zhengyongjun3@huawei.com>
Date:   Sat Nov 26 07:14:30 2022 +0000

    fpga: stratix10-soc: Fix return value check in s10_ops_write_init()
    
    commit 65ea840afd508194b0ee903256162aa87e46ec30 upstream.
    
    In case of error, the function stratix10_svc_allocate_memory()
    returns ERR_PTR() and never returns NULL. The NULL test in the
    return value check should be replaced with IS_ERR().
    
    Fixes: e7eef1d7633a ("fpga: add intel stratix10 soc fpga manager driver")
    Signed-off-by: Zheng Yongjun <zhengyongjun3@huawei.com>
    Reviewed-by: Russ Weight <russell.h.weight@intel.com>
    Cc: stable@vger.kernel.org
    Acked-by: Xu Yilun <yilun.xu@intel.com>
    Link: https://lore.kernel.org/r/20221126071430.19540-1-zhengyongjun3@huawei.com
    Signed-off-by: Xu Yilun <yilun.xu@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0139d61d28a229a60572ae3494a845c42925be95
Author: Joerg Roedel <jroedel@suse.de>
Date:   Tue Jan 31 09:57:18 2023 +0100

    x86/debug: Fix stack recursion caused by wrongly ordered DR7 accesses
    
    commit 9d2c7203ffdb846399b82b0660563c89e918c751 upstream.
    
    In kernels compiled with CONFIG_PARAVIRT=n, the compiler re-orders the
    DR7 read in exc_nmi() to happen before the call to sev_es_ist_enter().
    
    This is problematic when running as an SEV-ES guest because in this
    environment the DR7 read might cause a #VC exception, and taking #VC
    exceptions is not safe in exc_nmi() before sev_es_ist_enter() has run.
    
    The result is stack recursion if the NMI was caused on the #VC IST
    stack, because a subsequent #VC exception in the NMI handler will
    overwrite the stack frame of the interrupted #VC handler.
    
    As there are no compiler barriers affecting the ordering of DR7
    reads/writes, make the accesses to this register volatile, forbidding
    the compiler to re-order them.
    
      [ bp: Massage text, make them volatile too, to make sure some
      aggressive compiler optimization pass doesn't discard them. ]
    
    Fixes: 315562c9af3d ("x86/sev-es: Adjust #VC IST Stack on entering NMI handler")
    Reported-by: Alexey Kardashevskiy <aik@amd.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20230127035616.508966-1-aik@amd.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 556959327b190a4efcfccc4ed311a08f6ea520ed
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Thu Jan 26 14:27:20 2023 -0800

    mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps
    
    commit 3489dbb696d25602aea8c3e669a6d43b76bd5358 upstream.
    
    Patch series "Fixes for hugetlb mapcount at most 1 for shared PMDs".
    
    This issue of mapcount in hugetlb pages referenced by shared PMDs was
    discussed in [1].  The following two patches address user visible behavior
    caused by this issue.
    
    [1] https://lore.kernel.org/linux-mm/Y9BF+OCdWnCSilEu@monkey/
    
    
    This patch (of 2):
    
    A hugetlb page will have a mapcount of 1 if mapped by multiple processes
    via a shared PMD.  This is because only the first process increases the
    map count, and subsequent processes just add the shared PMD page to their
    page table.
    
    page_mapcount is being used to decide if a hugetlb page is shared or
    private in /proc/PID/smaps.  Pages referenced via a shared PMD were
    incorrectly being counted as private.
    
    To fix, check for a shared PMD if mapcount is 1.  If a shared PMD is found
    count the hugetlb page as shared.  A new helper to check for a shared PMD
    is added.
    
    [akpm@linux-foundation.org: simplification, per David]
    [akpm@linux-foundation.org: hugetlb.h: include page_ref.h for page_count()]
    Link: https://lkml.kernel.org/r/20230126222721.222195-2-mike.kravetz@oracle.com
    Fixes: 25ee01a2fca0 ("mm: hugetlb: proc: add hugetlb-related fields to /proc/PID/smaps")
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Acked-by: Peter Xu <peterx@redhat.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: James Houghton <jthoughton@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Naoya Horiguchi <naoya.horiguchi@linux.dev>
    Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50d31309c999fba1879e2581abc313eabbed744b
Author: Andreas Schwab <schwab@suse.de>
Date:   Wed Feb 1 10:29:45 2023 +0100

    riscv: disable generation of unwind tables
    
    commit 2f394c0e7d1129a35156e492bc8f445fb20f43ac upstream.
    
    GCC 13 will enable -fasynchronous-unwind-tables by default on riscv.  In
    the kernel, we don't have any use for unwind tables yet, so disable them.
    More importantly, the .eh_frame section brings relocations
    (R_RISC_32_PCREL, R_RISCV_SET{6,8,16}, R_RISCV_SUB{6,8,16}) into modules
    that we are not prepared to handle.
    
    Signed-off-by: Andreas Schwab <schwab@suse.de>
    Link: https://lore.kernel.org/r/mvmzg9xybqu.fsf@suse.de
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71a4f39f99e85cf6bb140af6322a4364e81cf1f6
Author: Helge Deller <deller@gmx.de>
Date:   Wed Feb 1 16:41:54 2023 +0100

    parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case
    
    commit 316f1f42b5cc1d95124c1f0387c867c1ba7b6d0e upstream.
    
    Wire up the missing ptrace requests PTRACE_GETREGS, PTRACE_SETREGS,
    PTRACE_GETFPREGS and PTRACE_SETFPREGS when running 32-bit applications
    on 64-bit kernels.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: stable@vger.kernel.org # 4.7+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2982b473d764b4d02a40c84246a2d576d411427d
Author: Helge Deller <deller@gmx.de>
Date:   Mon Dec 19 20:56:36 2022 +0100

    parisc: Fix return code of pdc_iodc_print()
    
    commit 5d1335dabb3c493a3d6d5b233953b6ac7b6c1ff2 upstream.
    
    There is an off-by-one if the printed string includes a new-line
    char.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 170e1cc3c00fae434c40edd5535d2665c7afeb11
Author: Johan Hovold <johan+linaro@kernel.org>
Date:   Fri Jan 27 10:40:15 2023 +0000

    nvmem: qcom-spmi-sdam: fix module autoloading
    
    commit 1ca7fca349316231bbaa68d16f819a08d683c5a7 upstream.
    
    Add the missing module device table so that the driver can be autoloaded
    when built as a module.
    
    Fixes: 40ce9798794f ("nvmem: add QTI SDAM driver")
    Cc: stable@vger.kernel.org      # 5.6
    Reviewed-by: Bjorn Andersson <andersson@kernel.org>
    Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20230127104015.23839-11-srinivas.kandagatla@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f11330b7ba51613d0a660ee1cde35abb9cef6abb
Author: Carlos Song <carlos.song@nxp.com>
Date:   Wed Jan 18 15:42:27 2023 +0800

    iio: imu: fxos8700: fix MAGN sensor scale and unit
    
    commit 2acd031347f645871959a799238a7caf6803aa18 upstream.
    
    +/-1200uT is a MAGN sensor full measurement range. Magnetometer scale
    is the magnetic sensitivity parameter. It is referenced as 0.1uT
    according to datasheet and magnetometer channel unit is Gauss in
    sysfs-bus-iio documentation. Gauss and uTesla unit conversion
    relationship as follows: 0.1uT = 0.001Gs.
    
    Set magnetometer scale and available magnetometer scale as fixed 0.001Gs.
    
    Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Link: https://lore.kernel.org/r/20230118074227.1665098-5-carlos.song@nxp.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 5b30998c7f05a07fc64ddc78180009bfddf4c040
Author: Carlos Song <carlos.song@nxp.com>
Date:   Wed Jan 18 15:42:26 2023 +0800

    iio: imu: fxos8700: remove definition FXOS8700_CTRL_ODR_MIN
    
    commit ff5e2cd92ffda9a25ffa2cbdb3a0cf17650172a6 upstream.
    
    FXOS8700_CTRL_ODR_MIN is not used but value is probably wrong.
    
    Remove it for a good readability.
    
    Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Link: https://lore.kernel.org/r/20230118074227.1665098-4-carlos.song@nxp.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 42e34a08394a4fa469bbfccdf590b515bf45c03f
Author: Carlos Song <carlos.song@nxp.com>
Date:   Wed Jan 18 15:42:25 2023 +0800

    iio: imu: fxos8700: fix failed initialization ODR mode assignment
    
    commit eb6d8f8705bc19141bac81d8161461f9e256948a upstream.
    
    The absence of correct offset leads a failed initialization ODR mode
    assignment.
    
    Select MAX ODR mode as the initialization ODR mode by field mask and
    FIELD_PREP.
    
    Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Link: https://lore.kernel.org/r/20230118074227.1665098-3-carlos.song@nxp.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 ab976ecd0430fd5c3072f4f99470ae845cb95715
Author: Carlos Song <carlos.song@nxp.com>
Date:   Wed Jan 18 15:42:24 2023 +0800

    iio: imu: fxos8700: fix incorrect ODR mode readback
    
    commit 78ad6864e9e012cdba7c353d044d21ffcfd5f34b upstream.
    
    The absence of a correct offset leads an incorrect ODR mode
    readback after use a hexadecimal number to mark the value from
    FXOS8700_CTRL_REG1.
    
    Get ODR mode by field mask and FIELD_GET clearly and conveniently.
    And attach other additional fix for keeping the original code logic
    and a good readability.
    
    Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Link: https://lore.kernel.org/r/20230118074227.1665098-2-carlos.song@nxp.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 9d6502ed6314fd62ba7df569df7ee1f682ccda9e
Author: Carlos Song <carlos.song@nxp.com>
Date:   Thu Dec 8 15:19:06 2022 +0800

    iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback
    
    commit c68b44bc7d9b1469774a1c985ee71d2cbc5ebef5 upstream.
    
    Because ACCEL and MAGN channels data register base address is
    swapped the accelerometer and magnetometer channels readback is
    swapped.
    
    Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Link: https://lore.kernel.org/r/20221208071911.2405922-3-carlos.song@nxp.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 aff4add609988bb047f39a34f87f2a586f0b4257
Author: Carlos Song <carlos.song@nxp.com>
Date:   Thu Dec 8 15:19:05 2022 +0800

    iio: imu: fxos8700: fix map label of channel type to MAGN sensor
    
    commit 429e1e8ec696e0e7a0742904e3dc2f83b7b23dfb upstream.
    
    FXOS8700 is an IMU sensor with ACCEL sensor and MAGN sensor.
    Sensor type is indexed by corresponding channel type in a switch.
    IIO_ANGL_VEL channel type mapped to MAGN sensor has caused confusion.
    
    Fix the mapping label of "IIO_MAGN" channel type instead of
    "IIO_ANGL_VEL" channel type to MAGN sensor.
    
    Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Link: https://lore.kernel.org/r/20221208071911.2405922-2-carlos.song@nxp.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 9545ce720ab1998d657bf0be870a0ac8e444d86e
Author: Carlos Song <carlos.song@nxp.com>
Date:   Thu Dec 8 15:19:08 2022 +0800

    iio: imu: fxos8700: fix IMU data bits returned to user space
    
    commit a53f945879c0cb9de3a4c05a665f5157884b5208 upstream.
    
    ACCEL output data registers contain the X-axis, Y-axis, and Z-axis
    14-bit left-justified sample data and MAGN output data registers
    contain the X-axis, Y-axis, and Z-axis 16-bit sample data. The ACCEL
    raw register output data should be divided by 4 before sent to
    userspace.
    
    Apply a 2 bits signed right shift to the raw data from ACCEL output
    data register but keep that from MAGN sensor as the origin.
    
    Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Link: https://lore.kernel.org/r/20221208071911.2405922-5-carlos.song@nxp.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 6d43eddc567bfe424b37bd1bf59ef72c10146168
Author: Carlos Song <carlos.song@nxp.com>
Date:   Thu Dec 8 15:19:07 2022 +0800

    iio: imu: fxos8700: fix incomplete ACCEL and MAGN channels readback
    
    commit 37a94d86d7050665d6d01378b2c916c28e454f10 upstream.
    
    The length of ACCEL and MAGN 3-axis channels output data is 6 byte
    individually. However block only read 3 bytes data into buffer from
    ACCEL or MAGN output data registers every time. It causes an incomplete
    ACCEL and MAGN channels readback.
    
    Set correct value count for regmap_bulk_read to get 6 bytes ACCEL and
    MAGN channels readback.
    
    Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Link: https://lore.kernel.org/r/20221208071911.2405922-4-carlos.song@nxp.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 f7d996c953bffe82d3360f17b52220a1596d1b25
Author: Carlos Song <carlos.song@nxp.com>
Date:   Thu Dec 8 15:19:09 2022 +0800

    iio: imu: fxos8700: fix ACCEL measurement range selection
    
    commit 9d61c1820598a5ea474576ed55318a6dadee37ed upstream.
    
    When device is in active mode, it fails to set an ACCEL full-scale
    range(2g/4g/8g) in FXOS8700_XYZ_DATA_CFG. This is not align with the
    datasheet, but it is a fxos8700 chip behavior.
    
    Keep the device in standby mode before setting ACCEL full-scale range
    into FXOS8700_XYZ_DATA_CFG in chip initialization phase and setting
    scale phase.
    
    Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
    Signed-off-by: Carlos Song <carlos.song@nxp.com>
    Link: https://lore.kernel.org/r/20221208071911.2405922-6-carlos.song@nxp.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 11ac43f7631e45a75d0e764b0659469c351cd8ff
Author: Andreas Kemnade <andreas@kemnade.info>
Date:   Thu Dec 1 19:16:35 2022 +0100

    iio:adc:twl6030: Enable measurements of VUSB, VBAT and others
    
    commit f804bd0dc28683a93a60f271aaefb2fc5b0853dd upstream.
    
    Some inputs need to be wired up to produce proper measurements,
    without this change only near zero values are reported.
    
    Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
    Fixes: 1696f36482e70 ("iio: twl6030-gpadc: TWL6030, TWL6032 GPADC driver")
    Link: https://lore.kernel.org/r/20221201181635.3522962-1-andreas@kemnade.info
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5602f6a244ab8c80d3c1b860cb5ba056b118d445
Author: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Date:   Tue Nov 29 10:03:16 2022 +0800

    iio: adc: berlin2-adc: Add missing of_node_put() in error path
    
    commit cbd3a0153cd18a2cbef6bf3cf31bb406c3fc9f55 upstream.
    
    of_get_parent() will return a device_node pointer with refcount
    incremented. We need to use of_node_put() on it when done. Add the
    missing of_node_put() in the error path of berlin2_adc_probe();
    
    Fixes: 70f1937911ca ("iio: adc: add support for Berlin")
    Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
    Link: https://lore.kernel.org/r/20221129020316.191731-1-wangxiongfeng2@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 33483172b35c984537415b9cb29fe2eb8032fe46
Author: Dmitry Perchanov <dmitry.perchanov@intel.com>
Date:   Wed Jan 11 14:22:10 2023 +0200

    iio: hid: fix the retval in accel_3d_capture_sample
    
    commit f7b23d1c35d8b8de1425bdfccaefd01f3b7c9d1c upstream.
    
    Return value should be zero for success. This was forgotten for timestamp
    feature. Verified on RealSense cameras.
    
    Fixes: a96cd0f901ee ("iio: accel: hid-sensor-accel-3d: Add timestamp")
    Signed-off-by: Dmitry Perchanov <dmitry.perchanov@intel.com>
    Link: https://lore.kernel.org/r/a6dc426498221c81fa71045b41adf782ebd42136.camel@intel.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 55cf65461b2090ee541e77664080c05cd2a03bbd
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Thu Feb 2 18:30:06 2023 +0100

    efi: Accept version 2 of memory attributes table
    
    commit 636ab417a7aec4ee993916e688eb5c5977570836 upstream.
    
    UEFI v2.10 introduces version 2 of the memory attributes table, which
    turns the reserved field into a flags field, but is compatible with
    version 1 in all other respects. So let's not complain about version 2
    if we encounter it.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fb515c8b127c852bbbc23738e27c7a08e79b9fd
Author: Victor Shyba <victor1984@riseup.net>
Date:   Mon Jan 23 19:21:29 2023 -0300

    ALSA: hda/realtek: Add Acer Predator PH315-54
    
    commit 6a28a25d358079b7d0d144689f850aecacf63cba upstream.
    
    Same issue as SP513-54N: Headset microphone does not work without
    ALC255_FIXUP_ACER_MIC_NO_PRESENCE fixup.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=211853
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Victor Shyba <victor1984@riseup.net>
    Link: https://lore.kernel.org/r/20230123222129.17589-1-victor1984@riseup.net
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 192fd121d04f79ce9ac7d53dd44189f010133d0f
Author: Alexander Egorenkov <egorenar@linux.ibm.com>
Date:   Fri Jan 27 14:52:42 2023 +0100

    watchdog: diag288_wdt: fix __diag288() inline assembly
    
    commit 32e40f9506b9e32917eb73154f93037b443124d1 upstream.
    
    The DIAG 288 statement consumes an EBCDIC string the address of which is
    passed in a register. Use a "memory" clobber to tell the compiler that
    memory is accessed within the inline assembly.
    
    Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5bcdcf437d3f7ecd9103adc2b60af8f27c70301d
Author: Alexander Egorenkov <egorenar@linux.ibm.com>
Date:   Fri Jan 27 14:52:41 2023 +0100

    watchdog: diag288_wdt: do not use stack buffers for hardware data
    
    commit fe8973a3ad0905cb9ba2d42db42ed51de14737df upstream.
    
    With CONFIG_VMAP_STACK=y the stack is allocated from the vmalloc space.
    Data passed to a hardware or a hypervisor interface that
    requires V=R can no longer be allocated on the stack.
    
    Use kmalloc() to get memory for a diag288 command.
    
    Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c76eddc1f89c52e197f43a5827a51b36af38c36
Author: Natalia Petrova <n.petrova@fintech.ru>
Date:   Wed Jan 25 16:48:31 2023 +0300

    net: qrtr: free memory on error path in radix_tree_insert()
    
    commit 29de68c2b32ce58d64dea496d281e25ad0f551bd upstream.
    
    Function radix_tree_insert() returns errors if the node hasn't
    been initialized and added to the tree.
    
    "kfree(node)" and return value "NULL" of node_get() help
    to avoid using unclear node in other calls.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Cc: <stable@vger.kernel.org> # 5.7
    Fixes: 0c2204a4ad71 ("net: qrtr: Migrate nameservice to kernel from userspace")
    Signed-off-by: Natalia Petrova <n.petrova@fintech.ru>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
    Link: https://lore.kernel.org/r/20230125134831.8090-1-n.petrova@fintech.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28d190882ba55cbcee1db8e4ae90c149178dcf64
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Sun Jan 29 16:17:40 2023 +0100

    fbcon: Check font dimension limits
    
    commit 2b09d5d364986f724f17001ccfe4126b9b43a0be upstream.
    
    blit_x and blit_y are u32, so fbcon currently cannot support fonts
    larger than 32x32.
    
    The 32x32 case also needs shifting an unsigned int, to properly set bit
    31, otherwise we get "UBSAN: shift-out-of-bounds in fbcon_set_font",
    as reported on:
    
    http://lore.kernel.org/all/IA1PR07MB98308653E259A6F2CE94A4AFABCE9@IA1PR07MB9830.namprd07.prod.outlook.com
    Kernel Branch: 6.2.0-rc5-next-20230124
    Kernel config: https://drive.google.com/file/d/1F-LszDAizEEH0ZX0HcSR06v5q8FPl2Uv/view?usp=sharing
    Reproducer: https://drive.google.com/file/d/1mP1jcLBY7vWCNM60OMf-ogw-urQRjNrm/view?usp=sharing
    
    Reported-by: Sanan Hasanov <sanan.hasanov@Knights.ucf.edu>
    Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Fixes: 2d2699d98492 ("fbcon: font setting should check limitation of driver")
    Cc: stable@vger.kernel.org
    Tested-by: Miko Larsson <mikoxyzzz@gmail.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 658e0d99dbfb39be4bbd1c1c6bff2b3eda3ee8e6
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Tue Jan 10 14:45:24 2023 +0100

    Input: i8042 - add Clevo PCX0DX to i8042 quirk table
    
    [ Upstream commit 9c445d2637c938a800fcc8b5f0b10e60c94460c7 ]
    
    The Clevo PCX0DX/TUXEDO XP1511, need quirks for the keyboard to not be
    occasionally unresponsive after resume.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
    Link: https://lore.kernel.org/r/20230110134524.553620-1-wse@tuxedocomputers.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a82d49360496c489cddd6629a2865049208fa9bc
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Wed Jun 29 17:38:52 2022 -0700

    Input: i8042 - add TUXEDO devices to i8042 quirk tables
    
    [ Upstream commit a6a87c36165e6791eeaed88025cde270536c3198 ]
    
    A lot of modern Clevo barebones have touchpad and/or keyboard issues after
    suspend fixable with nomux + reset + noloop + nopnp. Luckily, none of them
    have an external PS/2 port so this can safely be set for all of them.
    
    I'm not entirely sure if every device listed really needs all four quirks,
    but after testing and production use. No negative effects could be
    observed when setting all four.
    
    The list is quite massive as neither the TUXEDO nor the Clevo dmi strings
    have been very consistent historically. I tried to keep the list as short
    as possible without risking on missing an affected device.
    
    This is revision 3. The Clevo N150CU barebone is still removed as it might
    have problems with the fix and needs further investigations. The
    SchenkerTechnologiesGmbH System-/Board-Vendor string variations are
    added. This is now based in the quirk table refactor. This now also
    includes the additional noaux flag for the NS7xMU.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220629112725.12922-5-wse@tuxedocomputers.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Stable-dep-of: 9c445d2637c9 ("Input: i8042 - add Clevo PCX0DX to i8042 quirk table")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04d99a0a966a4f3b901e3fa762114895aa994ea3
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Wed Jun 29 17:38:07 2022 -0700

    Input: i8042 - merge quirk tables
    
    [ Upstream commit ff946268a0813c35b790dfbe07c3bfaa7bfb869c ]
    
    Merge i8042 quirk tables to reduce code duplication for devices that need
    more than one quirk. Before every quirk had its own table with devices
    needing that quirk. If a new quirk needed to be added a new table had to
    be created. When a device needed multiple quirks, it appeared in multiple
    tables. Now only one table called i8042_dmi_quirk_table exists. In it every
    device has one entry and required quirks are coded in the .driver_data
    field of the struct dmi_system_id used by this table. Multiple quirks for
    one device can be applied by bitwise-or of the new SERIO_QUIRK_* defines.
    
    Also align quirkable options with command line parameters and make vendor
    wide quirks per device overwriteable on a per device basis. The first match
    is honored while following matches are ignored. So when a vendor wide quirk
    is defined in the table, a device can inserted before and therefore
    ignoring the vendor wide define.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220629112725.12922-3-wse@tuxedocomputers.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Stable-dep-of: 9c445d2637c9 ("Input: i8042 - add Clevo PCX0DX to i8042 quirk table")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab85074c308fdbf5d48c0b235412960f07ff788f
Author: Werner Sembach <wse@tuxedocomputers.com>
Date:   Wed Jun 29 17:34:42 2022 -0700

    Input: i8042 - move __initconst to fix code styling warning
    
    [ Upstream commit 95a9916c909f0b1d95e24b4232b4bc38ff755415 ]
    
    Move __intconst from before i8042_dmi_laptop_table[] to after it for
    consistent code styling.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20220629112725.12922-2-wse@tuxedocomputers.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Stable-dep-of: 9c445d2637c9 ("Input: i8042 - add Clevo PCX0DX to i8042 quirk table")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55515d7d8743b71b80bfe68e89eb9d92630626ab
Author: George Kennedy <george.kennedy@oracle.com>
Date:   Tue Jan 24 11:16:54 2023 -0500

    vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF
    
    [ Upstream commit 226fae124b2dac217ea5436060d623ff3385bc34 ]
    
    After a call to console_unlock() in vcs_read() the vc_data struct can be
    freed by vc_deallocate(). Because of that, the struct vc_data pointer
    load must be done at the top of while loop in vcs_read() to avoid a UAF
    when vcs_size() is called.
    
    Syzkaller reported a UAF in vcs_size().
    
    BUG: KASAN: use-after-free in vcs_size (drivers/tty/vt/vc_screen.c:215)
    Read of size 4 at addr ffff8881137479a8 by task 4a005ed81e27e65/1537
    
    CPU: 0 PID: 1537 Comm: 4a005ed81e27e65 Not tainted 6.2.0-rc5 #1
    Hardware name: Red Hat KVM, BIOS 1.15.0-2.module
    Call Trace:
      <TASK>
    __asan_report_load4_noabort (mm/kasan/report_generic.c:350)
    vcs_size (drivers/tty/vt/vc_screen.c:215)
    vcs_read (drivers/tty/vt/vc_screen.c:415)
    vfs_read (fs/read_write.c:468 fs/read_write.c:450)
    ...
      </TASK>
    
    Allocated by task 1191:
    ...
    kmalloc_trace (mm/slab_common.c:1069)
    vc_allocate (./include/linux/slab.h:580 ./include/linux/slab.h:720
         drivers/tty/vt/vt.c:1128 drivers/tty/vt/vt.c:1108)
    con_install (drivers/tty/vt/vt.c:3383)
    tty_init_dev (drivers/tty/tty_io.c:1301 drivers/tty/tty_io.c:1413
         drivers/tty/tty_io.c:1390)
    tty_open (drivers/tty/tty_io.c:2080 drivers/tty/tty_io.c:2126)
    chrdev_open (fs/char_dev.c:415)
    do_dentry_open (fs/open.c:883)
    vfs_open (fs/open.c:1014)
    ...
    
    Freed by task 1548:
    ...
    kfree (mm/slab_common.c:1021)
    vc_port_destruct (drivers/tty/vt/vt.c:1094)
    tty_port_destructor (drivers/tty/tty_port.c:296)
    tty_port_put (drivers/tty/tty_port.c:312)
    vt_disallocate_all (drivers/tty/vt/vt_ioctl.c:662 (discriminator 2))
    vt_ioctl (drivers/tty/vt/vt_ioctl.c:903)
    tty_ioctl (drivers/tty/tty_io.c:2776)
    ...
    
    The buggy address belongs to the object at ffff888113747800
      which belongs to the cache kmalloc-1k of size 1024
    The buggy address is located 424 bytes inside of
      1024-byte region [ffff888113747800, ffff888113747c00)
    
    The buggy address belongs to the physical page:
    page:00000000b3fe6c7c refcount:1 mapcount:0 mapping:0000000000000000
         index:0x0 pfn:0x113740
    head:00000000b3fe6c7c order:3 compound_mapcount:0 subpages_mapcount:0
         compound_pincount:0
    anon flags: 0x17ffffc0010200(slab|head|node=0|zone=2|lastcpupid=0x1fffff)
    raw: 0017ffffc0010200 ffff888100042dc0 0000000000000000 dead000000000001
    raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
      ffff888113747880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff888113747900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    > ffff888113747980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                       ^
      ffff888113747a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ffff888113747a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ==================================================================
    Disabling lock debugging due to kernel taint
    
    Fixes: ac751efa6a0d ("console: rename acquire/release_console_sem() to console_lock/unlock()")
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Suggested-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: George Kennedy <george.kennedy@oracle.com>
    Link: https://lore.kernel.org/r/1674577014-12374-1-git-send-email-george.kennedy@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 434a36ed64ac399b567174075b75d59d916dadfc
Author: Udipto Goswami <quic_ugoswami@quicinc.com>
Date:   Tue Jan 24 14:41:49 2023 +0530

    usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait
    
    [ Upstream commit 921deb9da15851425ccbb6ee409dc2fd8fbdfe6b ]
    
    __ffs_ep0_queue_wait executes holding the spinlock of &ffs->ev.waitq.lock
    and unlocks it after the assignments to usb_request are done.
    However in the code if the request is already NULL we bail out returning
    -EINVAL but never unlocked the spinlock.
    
    Fix this by adding spin_unlock_irq &ffs->ev.waitq.lock before returning.
    
    Fixes: 6a19da111057 ("usb: gadget: f_fs: Prevent race during ffs_ep0_queue_wait")
    Reviewed-by: John Keeping <john@metanate.com>
    Signed-off-by: Udipto Goswami <quic_ugoswami@quicinc.com>
    Link: https://lore.kernel.org/r/20230124091149.18647-1-quic_ugoswami@quicinc.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e5565aa004741646df73255e3823b59b216c3af
Author: Neil Armstrong <neil.armstrong@linaro.org>
Date:   Tue Jan 24 09:31:21 2023 +0100

    usb: dwc3: qcom: enable vbus override when in OTG dr-mode
    
    [ Upstream commit eb320f76e31dc835b9f57f04af1a2353b13bb7d8 ]
    
    With vbus override enabled when in OTG dr_mode, Host<->Peripheral
    switch now works on SM8550, otherwise the DWC3 seems to be stuck
    in Host mode only.
    
    Fixes: a4333c3a6ba9 ("usb: dwc3: Add Qualcomm DWC3 glue driver")
    Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
    Link: https://lore.kernel.org/r/20230123-topic-sm8550-upstream-dwc3-qcom-otg-v2-1-2d400e598463@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ca8629505fdea93bf0c9c99055e3cd0fa2350a3
Author: Wesley Cheng <wcheng@codeaurora.org>
Date:   Sun Jul 4 02:33:12 2021 +0100

    usb: dwc3: dwc3-qcom: Fix typo in the dwc3 vbus override API
    
    [ Upstream commit 8e6cb5d27e8246d9c986ec162d066a502d2b602b ]
    
    There was an extra character in the dwc3_qcom_vbus_override_enable()
    function.  Removed the extra character.
    
    Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20210704013314.200951-2-bryan.odonoghue@linaro.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: eb320f76e31d ("usb: dwc3: qcom: enable vbus override when in OTG dr-mode")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 30d0e2cf9900efe2b96ba0a8d879e24cfe5ad7cb
Author: Olivier Moysan <olivier.moysan@foss.st.com>
Date:   Fri Dec 2 16:28:48 2022 +0100

    iio: adc: stm32-dfsdm: fill module aliases
    
    [ Upstream commit cc3304052a89ab6ac887ed9224420a27e3d354e1 ]
    
    When STM32 DFSDM driver is built as module, no modalias information
    is available. This prevents module to be loaded by udev.
    Add MODULE_DEVICE_TABLE() to fill module aliases.
    
    Fixes: e2e6771c6462 ("IIO: ADC: add STM32 DFSDM sigma delta ADC support")
    Signed-off-by: Olivier Moysan <olivier.moysan@foss.st.com>
    Link: https://lore.kernel.org/r/20221202152848.45585-1-olivier.moysan@foss.st.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4bbc34401d9792c8b21d3ffb149f2a22d6036ab0
Author: Hyunwoo Kim <v4bel@theori.io>
Date:   Mon Jan 23 11:43:23 2023 -0800

    net/x25: Fix to not accept on connected socket
    
    [ Upstream commit f2b0b5210f67c56a3bcdf92ff665fb285d6e0067 ]
    
    When listen() and accept() are called on an x25 socket
    that connect() succeeds, accept() succeeds immediately.
    This is because x25_connect() queues the skb to
    sk->sk_receive_queue, and x25_accept() dequeues it.
    
    This creates a child socket with the sk of the parent
    x25 socket, which can cause confusion.
    
    Fix x25_listen() to return -EINVAL if the socket has
    already been successfully connect()ed to avoid this issue.
    
    Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b1e8e20b9840041439bbe1e70475bd5b611b5b1
Author: Koba Ko <koba.ko@canonical.com>
Date:   Tue Jan 17 20:34:36 2023 +0800

    platform/x86: dell-wmi: Add a keymap for KEY_MUTE in type 0x0010 table
    
    [ Upstream commit 83bcf3e52e9cfc727df33f1055ef0618c91719d0 ]
    
    Some platforms send the speaker-mute key from EC. dell-wmi can't
    recognize it.
    
    Add a new keymap for KEY_MUTE in type 0x0010 table.
    
    Signed-off-by: Koba Ko <koba.ko@canonical.com>
    Link: https://lore.kernel.org/r/20230117123436.200440-1-koba.ko@canonical.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 ac4d9c86e9f5dafc21af50d24d915a63f1cc0c97
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Thu Jan 12 22:38:05 2023 -0800

    i2c: rk3x: fix a bunch of kernel-doc warnings
    
    [ Upstream commit 0582d984793d30442da88fe458674502bad1ad29 ]
    
    Fix multiple W=1 kernel-doc warnings in i2c-rk3x.c:
    
    drivers/i2c/busses/i2c-rk3x.c:83: warning: missing initial short description on line:
     * struct i2c_spec_values:
    drivers/i2c/busses/i2c-rk3x.c:139: warning: missing initial short description on line:
     * struct rk3x_i2c_calced_timings:
    drivers/i2c/busses/i2c-rk3x.c:162: warning: missing initial short description on line:
     * struct rk3x_i2c_soc_data:
    drivers/i2c/busses/i2c-rk3x.c:242: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Generate a START condition, which triggers a REG_INT_START interrupt.
    drivers/i2c/busses/i2c-rk3x.c:261: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Generate a STOP condition, which triggers a REG_INT_STOP interrupt.
    drivers/i2c/busses/i2c-rk3x.c:304: warning: expecting prototype for Setup a read according to i2c(). Prototype was for rk3x_i2c_prepare_read() instead
    drivers/i2c/busses/i2c-rk3x.c:335: warning: expecting prototype for Fill the transmit buffer with data from i2c(). Prototype was for rk3x_i2c_fill_transmit_buf() instead
    drivers/i2c/busses/i2c-rk3x.c:535: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Get timing values of I2C specification
    drivers/i2c/busses/i2c-rk3x.c:552: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Calculate divider values for desired SCL frequency
    drivers/i2c/busses/i2c-rk3x.c:713: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Calculate timing values for desired SCL frequency
    drivers/i2c/busses/i2c-rk3x.c:963: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
     * Setup I2C registers for an I2C operation specified by msgs, num.
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9758ffe1c07b86aefd7ca8e40d9a461293427ca0
Author: Mike Christie <michael.christie@oracle.com>
Date:   Tue Jan 17 13:39:37 2023 -0600

    scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress
    
    [ Upstream commit f484a794e4ee2a9ce61f52a78e810ac45f3fe3b3 ]
    
    If during iscsi_sw_tcp_session_create() iscsi_tcp_r2tpool_alloc() fails,
    userspace could be accessing the host's ipaddress attr. If we then free the
    session via iscsi_session_teardown() while userspace is still accessing the
    session we will hit a use after free bug.
    
    Set the tcp_sw_host->session after we have completed session creation and
    can no longer fail.
    
    Link: https://lore.kernel.org/r/20230117193937.21244-3-michael.christie@oracle.com
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Acked-by: Ding Hui <dinghui@sangfor.com.cn>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1b28bf868fceba7e1260d87cfe5a3e5069546bad
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Tue Jan 10 13:53:10 2023 +0100

    scsi: target: core: Fix warning on RT kernels
    
    [ Upstream commit 84ed64b1a7a7fcd507598dee7708c1f225123711 ]
    
    Calling spin_lock_irqsave() does not disable the interrupts on realtime
    kernels, remove the warning and replace assert_spin_locked() with
    lockdep_assert_held().
    
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20230110125310.55884-1-mlombard@redhat.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e66ba3cfb4fd353bac7f6675f7a9a51386e7a4b
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Sat Jan 7 13:32:29 2023 +0100

    i2c: mxs: suppress probe-deferral error message
    
    [ Upstream commit 78a4471fa1a76a8bef4919105de67660a89a1e9b ]
    
    During boot of I2SE Duckbill the kernel log contains a
    confusing error:
    
      Failed to request dma
    
    This is caused by i2c-mxs tries to request a not yet available DMA
    channel (-EPROBE_DEFER). So suppress this message by using
    dev_err_probe().
    
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d09b0bf9ffd37e66ce74787b2076d83e938253e8
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Wed Jan 25 08:48:57 2023 +0100

    qede: execute xdp_do_flush() before napi_complete_done()
    
    [ Upstream commit 2ccce20d51faa0178086163ccb6c84a099a87ab4 ]
    
    Make sure that xdp_do_flush() is always executed before
    napi_complete_done(). This is important for two reasons. First, a
    redirect to an XSKMAP assumes that a call to xdp_do_redirect() from
    napi context X on CPU Y will be followed by a xdp_do_flush() from the
    same napi context and CPU. This is not guaranteed if the
    napi_complete_done() is executed before xdp_do_flush(), as it tells
    the napi logic that it is fine to schedule napi context X on another
    CPU. Details from a production system triggering this bug using the
    veth driver can be found following the first link below.
    
    The second reason is that the XDP_REDIRECT logic in itself relies on
    being inside a single NAPI instance through to the xdp_do_flush() call
    for RCU protection of all in-kernel data structures. Details can be
    found in the second link below.
    
    Fixes: d1b25b79e162b ("qede: add .ndo_xdp_xmit() and XDP_REDIRECT support")
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Link: https://lore.kernel.org/r/20221220185903.1105011-1-sbohrer@cloudflare.com
    Link: https://lore.kernel.org/all/20210624160609.292325-1-toke@redhat.com/
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8aba483f70344aaeca03630d4e8b8de31febcddd
Author: Bhaskar Upadhaya <bupadhaya@marvell.com>
Date:   Wed Feb 10 12:28:29 2021 -0800

    qede: add netpoll support for qede driver
    
    [ Upstream commit 961aa716235f58088e99acafbe66027d678061ce ]
    
    handle netpoll case when qede_poll is called by
    netpoll layer with budget 0
    
    Signed-off-by: Bhaskar Upadhaya <bupadhaya@marvell.com>
    Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
    Signed-off-by: Ariel Elior <aelior@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Stable-dep-of: 2ccce20d51fa ("qede: execute xdp_do_flush() before napi_complete_done()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 87d4ff18738fd71e7e3c10827c80257da6283697
Author: Anton Gusev <aagusev@ispras.ru>
Date:   Fri Feb 3 16:22:13 2023 +0300

    efi: fix potential NULL deref in efi_mem_reserve_persistent
    
    [ Upstream commit 966d47e1f27c45507c5df82b2a2157e5a4fd3909 ]
    
    When iterating on a linked list, a result of memremap is dereferenced
    without checking it for NULL.
    
    This patch adds a check that falls back on allocating a new page in
    case memremap doesn't succeed.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 18df7577adae ("efi/memreserve: deal with memreserve entries in unmapped memory")
    Signed-off-by: Anton Gusev <aagusev@ispras.ru>
    [ardb: return -ENOMEM instead of breaking out of the loop]
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 70154489f531587996f3e9d7cceeee65cff0001d
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Thu Feb 2 00:02:18 2023 +0300

    net: openvswitch: fix flow memory leak in ovs_flow_cmd_new
    
    [ Upstream commit 0c598aed445eb45b0ee7ba405f7ece99ee349c30 ]
    
    Syzkaller reports a memory leak of new_flow in ovs_flow_cmd_new() as it is
    not freed when an allocation of a key fails.
    
    BUG: memory leak
    unreferenced object 0xffff888116668000 (size 632):
      comm "syz-executor231", pid 1090, jiffies 4294844701 (age 18.871s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<00000000defa3494>] kmem_cache_zalloc include/linux/slab.h:654 [inline]
        [<00000000defa3494>] ovs_flow_alloc+0x19/0x180 net/openvswitch/flow_table.c:77
        [<00000000c67d8873>] ovs_flow_cmd_new+0x1de/0xd40 net/openvswitch/datapath.c:957
        [<0000000010a539a8>] genl_family_rcv_msg_doit+0x22d/0x330 net/netlink/genetlink.c:739
        [<00000000dff3302d>] genl_family_rcv_msg net/netlink/genetlink.c:783 [inline]
        [<00000000dff3302d>] genl_rcv_msg+0x328/0x590 net/netlink/genetlink.c:800
        [<000000000286dd87>] netlink_rcv_skb+0x153/0x430 net/netlink/af_netlink.c:2515
        [<0000000061fed410>] genl_rcv+0x24/0x40 net/netlink/genetlink.c:811
        [<000000009dc0f111>] netlink_unicast_kernel net/netlink/af_netlink.c:1313 [inline]
        [<000000009dc0f111>] netlink_unicast+0x545/0x7f0 net/netlink/af_netlink.c:1339
        [<000000004a5ee816>] netlink_sendmsg+0x8e7/0xde0 net/netlink/af_netlink.c:1934
        [<00000000482b476f>] sock_sendmsg_nosec net/socket.c:651 [inline]
        [<00000000482b476f>] sock_sendmsg+0x152/0x190 net/socket.c:671
        [<00000000698574ba>] ____sys_sendmsg+0x70a/0x870 net/socket.c:2356
        [<00000000d28d9e11>] ___sys_sendmsg+0xf3/0x170 net/socket.c:2410
        [<0000000083ba9120>] __sys_sendmsg+0xe5/0x1b0 net/socket.c:2439
        [<00000000c00628f8>] do_syscall_64+0x30/0x40 arch/x86/entry/common.c:46
        [<000000004abfdcf4>] entry_SYSCALL_64_after_hwframe+0x61/0xc6
    
    To fix this the patch rearranges the goto labels to reflect the order of
    object allocations and adds appropriate goto statements on the error
    paths.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: 68bb10101e6b ("openvswitch: Fix flow lookup to use unmasked key")
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Acked-by: Eelco Chaudron <echaudro@redhat.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Link: https://lore.kernel.org/r/20230201210218.361970-1-pchelkin@ispras.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4fb430c6987817b5992e04b417755c339f72f8fe
Author: Parav Pandit <parav@nvidia.com>
Date:   Thu Feb 2 18:35:16 2023 +0200

    virtio-net: Keep stop() to follow mirror sequence of open()
    
    [ Upstream commit 63b114042d8a9c02d9939889177c36dbdb17a588 ]
    
    Cited commit in fixes tag frees rxq xdp info while RQ NAPI is
    still enabled and packet processing may be ongoing.
    
    Follow the mirror sequence of open() in the stop() callback.
    This ensures that when rxq info is unregistered, no rx
    packet processing is ongoing.
    
    Fixes: 754b8a21a96d ("virtio_net: setup xdp_rxq_info")
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Signed-off-by: Parav Pandit <parav@nvidia.com>
    Link: https://lore.kernel.org/r/20230202163516.12559-1-parav@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 812236bb6a89f1a00ac29e6a78033e8ad9f6e73c
Author: Andrei Gherzan <andrei.gherzan@canonical.com>
Date:   Wed Feb 1 00:16:16 2023 +0000

    selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy benchmarking
    
    [ Upstream commit 329c9cd769c2e306957df031efff656c40922c76 ]
    
    The test tool can check that the zerocopy number of completions value is
    valid taking into consideration the number of datagram send calls. This can
    catch the system into a state where the datagrams are still in the system
    (for example in a qdisk, waiting for the network interface to return a
    completion notification, etc).
    
    This change adds a retry logic of computing the number of completions up to
    a configurable (via CLI) timeout (default: 2 seconds).
    
    Fixes: 79ebc3c26010 ("net/udpgso_bench_tx: options to exercise TX CMSG")
    Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20230201001612.515730-4-andrei.gherzan@canonical.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9e7e2887ccb8f0e3cc16228521a32fb80c35a26f
Author: Andrei Gherzan <andrei.gherzan@canonical.com>
Date:   Wed Feb 1 00:16:14 2023 +0000

    selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs
    
    [ Upstream commit dafe93b9ee21028d625dce347118b82659652eff ]
    
    "udpgro_bench.sh" invokes udpgso_bench_rx/udpgso_bench_tx programs
    subsequently and while doing so, there is a chance that the rx one is not
    ready to accept socket connections. This racing bug could fail the test
    with at least one of the following:
    
    ./udpgso_bench_tx: connect: Connection refused
    ./udpgso_bench_tx: sendmsg: Connection refused
    ./udpgso_bench_tx: write: Connection refused
    
    This change addresses this by making udpgro_bench.sh wait for the rx
    program to be ready before firing off the tx one - up to a 10s timeout.
    
    Fixes: 3a687bef148d ("selftests: udp gso benchmark")
    Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20230201001612.515730-3-andrei.gherzan@canonical.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4babbd1f594d2004c4c106419187ca1a24428941
Author: Andrei Gherzan <andrei.gherzan@canonical.com>
Date:   Wed Feb 1 00:16:12 2023 +0000

    selftests: net: udpgso_bench_rx/tx: Stop when wrong CLI args are provided
    
    [ Upstream commit db9b47ee9f5f375ab0c5daeb20321c75b4fa657d ]
    
    Leaving unrecognized arguments buried in the output, can easily hide a
    CLI/script typo. Avoid this by exiting when wrong arguments are provided to
    the udpgso_bench test programs.
    
    Fixes: 3a687bef148d ("selftests: udp gso benchmark")
    Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20230201001612.515730-2-andrei.gherzan@canonical.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a4a493e599e362ec7c890a516bf4425b1f45d540
Author: Andrei Gherzan <andrei.gherzan@canonical.com>
Date:   Wed Feb 1 00:16:10 2023 +0000

    selftests: net: udpgso_bench_rx: Fix 'used uninitialized' compiler warning
    
    [ Upstream commit c03c80e3a03ffb4f790901d60797e9810539d946 ]
    
    This change fixes the following compiler warning:
    
    /usr/include/x86_64-linux-gnu/bits/error.h:40:5: warning: ‘gso_size’ may
    be used uninitialized [-Wmaybe-uninitialized]
       40 |     __error_noreturn (__status, __errnum, __format,
       __va_arg_pack ());
             |
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             udpgso_bench_rx.c: In function ‘main’:
             udpgso_bench_rx.c:253:23: note: ‘gso_size’ was declared here
               253 |         int ret, len, gso_size, budget = 256;
    
    Fixes: 3327a9c46352 ("selftests: add functionals test for UDP GRO")
    Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/20230201001612.515730-1-andrei.gherzan@canonical.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d9c9627161a06c098f9d7bb566a42da87759463
Author: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Date:   Mon Jan 30 12:27:41 2023 +0900

    ata: libata: Fix sata_down_spd_limit() when no link speed is reported
    
    [ Upstream commit 69f2c9346313ba3d3dfa4091ff99df26c67c9021 ]
    
    Commit 2dc0b46b5ea3 ("libata: sata_down_spd_limit should return if
    driver has not recorded sstatus speed") changed the behavior of
    sata_down_spd_limit() to return doing nothing if a drive does not report
    a current link speed, to avoid reducing the link speed to the lowest 1.5
    Gbps speed.
    
    However, the change assumed that a speed was recorded before probing
    (e.g. before a suspend/resume) and set in link->sata_spd. This causes
    problems with adapters/drives combination failing to establish a link
    speed during probe autonegotiation. One example reported of this problem
    is an mvebu adapter with a 3Gbps port-multiplier box: autonegotiation
    fails, leaving no recorded link speed and no reported current link
    speed. Probe retries also fail as no action is taken by sata_set_spd()
    after each retry.
    
    Fix this by returning early in sata_down_spd_limit() only if we do have
    a recorded link speed, that is, if link->sata_spd is not 0. With this
    fix, a failed probe not leading to a recorded link speed is retried at
    the lower 1.5 Gbps speed, with the link speed potentially increased
    later on the second revalidate of the device if the device reports
    that it supports higher link speeds.
    
    Reported-by: Marius Dinu <marius@psihoexpert.ro>
    Fixes: 2dc0b46b5ea3 ("libata: sata_down_spd_limit should return if driver has not recorded sstatus speed")
    Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
    Tested-by: Marius Dinu <marius@psihoexpert.ro>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b6d44072117bba057d50f7a2f96e5d070c65926d
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date:   Mon Sep 6 17:42:00 2021 +0800

    can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate
    
    [ Upstream commit d0553680f94c49bbe0e39eb50d033ba563b4212d ]
    
    The conclusion "j1939_session_deactivate() should be called with a
    session ref-count of at least 2" is incorrect. In some concurrent
    scenarios, j1939_session_deactivate can be called with the session
    ref-count less than 2. But there is not any problem because it
    will check the session active state before session putting in
    j1939_session_deactivate_locked().
    
    Here is the concurrent scenario of the problem reported by syzbot
    and my reproduction log.
    
            cpu0                            cpu1
                                    j1939_xtp_rx_eoma
    j1939_xtp_rx_abort_one
                                    j1939_session_get_by_addr [kref == 2]
    j1939_session_get_by_addr [kref == 3]
    j1939_session_deactivate [kref == 2]
    j1939_session_put [kref == 1]
                                    j1939_session_completed
                                    j1939_session_deactivate
                                    WARN_ON_ONCE(kref < 2)
    
    =====================================================
    WARNING: CPU: 1 PID: 21 at net/can/j1939/transport.c:1088 j1939_session_deactivate+0x5f/0x70
    CPU: 1 PID: 21 Comm: ksoftirqd/1 Not tainted 5.14.0-rc7+ #32
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1 04/01/2014
    RIP: 0010:j1939_session_deactivate+0x5f/0x70
    Call Trace:
     j1939_session_deactivate_activate_next+0x11/0x28
     j1939_xtp_rx_eoma+0x12a/0x180
     j1939_tp_recv+0x4a2/0x510
     j1939_can_recv+0x226/0x380
     can_rcv_filter+0xf8/0x220
     can_receive+0x102/0x220
     ? process_backlog+0xf0/0x2c0
     can_rcv+0x53/0xf0
     __netif_receive_skb_one_core+0x67/0x90
     ? process_backlog+0x97/0x2c0
     __netif_receive_skb+0x22/0x80
    
    Fixes: 0c71437dd50d ("can: j1939: j1939_session_deactivate(): clarify lifetime of session object")
    Reported-by: syzbot+9981a614060dcee6eeca@syzkaller.appspotmail.com
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Link: https://lore.kernel.org/all/20210906094200.95868-1-william.xuanziyang@huawei.com
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6362b861704fbf7d331bba35407927d9cd84eb9b
Author: Tom Rix <trix@redhat.com>
Date:   Tue Jan 31 13:54:37 2023 -0800

    igc: return an error if the mac type is unknown in igc_ptp_systim_to_hwtstamp()
    
    [ Upstream commit a2df8463e15c10a8a882090f3d7a760fdb7b189d ]
    
    clang static analysis reports
    drivers/net/ethernet/intel/igc/igc_ptp.c:673:3: warning: The left operand of
      '+' is a garbage value [core.UndefinedBinaryOperatorResult]
       ktime_add_ns(shhwtstamps.hwtstamp, adjust);
       ^            ~~~~~~~~~~~~~~~~~~~~
    
    igc_ptp_systim_to_hwtstamp() silently returns without setting the hwtstamp
    if the mac type is unknown.  This should be treated as an error.
    
    Fixes: 81b055205e8b ("igc: Add support for RX timestamping")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Acked-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Naama Meir <naamax.meir@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Link: https://lore.kernel.org/r/20230131215437.1528994-1-anthony.l.nguyen@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 98c93a01608f23a28a3c9e6736f74d078fa8400f
Author: Chris Healy <healych@amazon.com>
Date:   Mon Jan 30 15:14:02 2023 -0800

    net: phy: meson-gxl: Add generic dummy stubs for MMD register access
    
    [ Upstream commit afc2336f89dc0fc0ef25b92366814524b0fd90fb ]
    
    The Meson G12A Internal PHY does not support standard IEEE MMD extended
    register access, therefore add generic dummy stubs to fail the read and
    write MMD calls. This is necessary to prevent the core PHY code from
    erroneously believing that EEE is supported by this PHY even though this
    PHY does not support EEE, as MMD register access returns all FFFFs.
    
    Fixes: 5c3407abb338 ("net: phy: meson-gxl: add g12a support")
    Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: Chris Healy <healych@amazon.com>
    Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
    Link: https://lore.kernel.org/r/20230130231402.471493-1-cphealy@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de2785aa3448d1ee7be3ab47fd4a873025f1b3d7
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Tue Jan 17 13:52:26 2023 +0300

    squashfs: harden sanity check in squashfs_read_xattr_id_table
    
    [ Upstream commit 72e544b1b28325fe78a4687b980871a7e4101f76 ]
    
    While mounting a corrupted filesystem, a signed integer '*xattr_ids' can
    become less than zero.  This leads to the incorrect computation of 'len'
    and 'indexes' values which can cause null-ptr-deref in copy_bio_to_actor()
    or out-of-bounds accesses in the next sanity checks inside
    squashfs_read_xattr_id_table().
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Link: https://lkml.kernel.org/r/20230117105226.329303-2-pchelkin@ispras.ru
    Fixes: 506220d2ba21 ("squashfs: add more sanity checks in xattr id lookup")
    Reported-by: <syzbot+082fa4af80a5bb1a9843@syzkaller.appspotmail.com>
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Cc: Phillip Lougher <phillip@squashfs.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f53c6e7e77df63566d2b5e94825107813debbb04
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Jan 30 11:39:29 2023 +0100

    netfilter: br_netfilter: disable sabotage_in hook after first suppression
    
    [ Upstream commit 2b272bb558f1d3a5aa95ed8a82253786fd1a48ba ]
    
    When using a xfrm interface in a bridged setup (the outgoing device is
    bridged), the incoming packets in the xfrm interface are only tracked
    in the outgoing direction.
    
    $ brctl show
    bridge name     interfaces
    br_eth1         eth1
    
    $ conntrack -L
    tcp 115 SYN_SENT src=192... dst=192... [UNREPLIED] ...
    
    If br_netfilter is enabled, the first (encrypted) packet is received onR
    eth1, conntrack hooks are called from br_netfilter emulation which
    allocates nf_bridge info for this skb.
    
    If the packet is for local machine, skb gets passed up the ip stack.
    The skb passes through ip prerouting a second time. br_netfilter
    ip_sabotage_in supresses the re-invocation of the hooks.
    
    After this, skb gets decrypted in xfrm layer and appears in
    network stack a second time (after decryption).
    
    Then, ip_sabotage_in is called again and suppresses netfilter
    hook invocation, even though the bridge layer never called them
    for the plaintext incarnation of the packet.
    
    Free the bridge info after the first suppression to avoid this.
    
    I was unable to figure out where the regression comes from, as far as i
    can see br_netfilter always had this problem; i did not expect that skb
    is looped again with different headers.
    
    Fixes: c4b0e771f906 ("netfilter: avoid using skb->nf_bridge directly")
    Reported-and-tested-by: Wolfgang Nothdurft <wolfgang@linogate.de>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd6991251a1382a9b4984962a0c7a467e9d71812
Author: Hyunwoo Kim <v4bel@theori.io>
Date:   Thu Jan 26 18:32:50 2023 -0800

    netrom: Fix use-after-free caused by accept on already connected socket
    
    [ Upstream commit 611792920925fb088ddccbe2783c7f92fdfb6b64 ]
    
    If you call listen() and accept() on an already connect()ed
    AF_NETROM socket, accept() can successfully connect.
    This is because when the peer socket sends data to sendmsg,
    the skb with its own sk stored in the connected socket's
    sk->sk_receive_queue is connected, and nr_accept() dequeues
    the skb waiting in the sk->sk_receive_queue.
    
    As a result, nr_accept() allocates and returns a sock with
    the sk of the parent AF_NETROM socket.
    
    And here use-after-free can happen through complex race conditions:
    ```
                      cpu0                                                     cpu1
                                                                   1. socket_2 = socket(AF_NETROM)
                                                                            .
                                                                            .
                                                                      listen(socket_2)
                                                                      accepted_socket = accept(socket_2)
           2. socket_1 = socket(AF_NETROM)
                nr_create()    // sk refcount : 1
              connect(socket_1)
                                                                   3. write(accepted_socket)
                                                                        nr_sendmsg()
                                                                        nr_output()
                                                                        nr_kick()
                                                                        nr_send_iframe()
                                                                        nr_transmit_buffer()
                                                                        nr_route_frame()
                                                                        nr_loopback_queue()
                                                                        nr_loopback_timer()
                                                                        nr_rx_frame()
                                                                        nr_process_rx_frame(sk, skb);    // sk : socket_1's sk
                                                                        nr_state3_machine()
                                                                        nr_queue_rx_frame()
                                                                        sock_queue_rcv_skb()
                                                                        sock_queue_rcv_skb_reason()
                                                                        __sock_queue_rcv_skb()
                                                                        __skb_queue_tail(list, skb);    // list : socket_1's sk->sk_receive_queue
           4. listen(socket_1)
                nr_listen()
              uaf_socket = accept(socket_1)
                nr_accept()
                skb_dequeue(&sk->sk_receive_queue);
                                                                   5. close(accepted_socket)
                                                                        nr_release()
                                                                        nr_write_internal(sk, NR_DISCREQ)
                                                                        nr_transmit_buffer()    // NR_DISCREQ
                                                                        nr_route_frame()
                                                                        nr_loopback_queue()
                                                                        nr_loopback_timer()
                                                                        nr_rx_frame()    // sk : socket_1's sk
                                                                        nr_process_rx_frame()  // NR_STATE_3
                                                                        nr_state3_machine()    // NR_DISCREQ
                                                                        nr_disconnect()
                                                                        nr_sk(sk)->state = NR_STATE_0;
           6. close(socket_1)    // sk refcount : 3
                nr_release()    // NR_STATE_0
                sock_put(sk);    // sk refcount : 0
                sk_free(sk);
              close(uaf_socket)
                nr_release()
                sock_hold(sk);    // UAF
    ```
    
    KASAN report by syzbot:
    ```
    BUG: KASAN: use-after-free in nr_release+0x66/0x460 net/netrom/af_netrom.c:520
    Write of size 4 at addr ffff8880235d8080 by task syz-executor564/5128
    
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xd1/0x138 lib/dump_stack.c:106
     print_address_description mm/kasan/report.c:306 [inline]
     print_report+0x15e/0x461 mm/kasan/report.c:417
     kasan_report+0xbf/0x1f0 mm/kasan/report.c:517
     check_region_inline mm/kasan/generic.c:183 [inline]
     kasan_check_range+0x141/0x190 mm/kasan/generic.c:189
     instrument_atomic_read_write include/linux/instrumented.h:102 [inline]
     atomic_fetch_add_relaxed include/linux/atomic/atomic-instrumented.h:116 [inline]
     __refcount_add include/linux/refcount.h:193 [inline]
     __refcount_inc include/linux/refcount.h:250 [inline]
     refcount_inc include/linux/refcount.h:267 [inline]
     sock_hold include/net/sock.h:775 [inline]
     nr_release+0x66/0x460 net/netrom/af_netrom.c:520
     __sock_release+0xcd/0x280 net/socket.c:650
     sock_close+0x1c/0x20 net/socket.c:1365
     __fput+0x27c/0xa90 fs/file_table.c:320
     task_work_run+0x16f/0x270 kernel/task_work.c:179
     exit_task_work include/linux/task_work.h:38 [inline]
     do_exit+0xaa8/0x2950 kernel/exit.c:867
     do_group_exit+0xd4/0x2a0 kernel/exit.c:1012
     get_signal+0x21c3/0x2450 kernel/signal.c:2859
     arch_do_signal_or_restart+0x79/0x5c0 arch/x86/kernel/signal.c:306
     exit_to_user_mode_loop kernel/entry/common.c:168 [inline]
     exit_to_user_mode_prepare+0x15f/0x250 kernel/entry/common.c:203
     __syscall_exit_to_user_mode_work kernel/entry/common.c:285 [inline]
     syscall_exit_to_user_mode+0x1d/0x50 kernel/entry/common.c:296
     do_syscall_64+0x46/0xb0 arch/x86/entry/common.c:86
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    RIP: 0033:0x7f6c19e3c9b9
    Code: Unable to access opcode bytes at 0x7f6c19e3c98f.
    RSP: 002b:00007fffd4ba2ce8 EFLAGS: 00000246 ORIG_RAX: 0000000000000133
    RAX: 0000000000000116 RBX: 0000000000000003 RCX: 00007f6c19e3c9b9
    RDX: 0000000000000318 RSI: 00000000200bd000 RDI: 0000000000000006
    RBP: 0000000000000003 R08: 000000000000000d R09: 000000000000000d
    R10: 0000000000000000 R11: 0000000000000246 R12: 000055555566a2c0
    R13: 0000000000000011 R14: 0000000000000000 R15: 0000000000000000
     </TASK>
    
    Allocated by task 5128:
     kasan_save_stack+0x22/0x40 mm/kasan/common.c:45
     kasan_set_track+0x25/0x30 mm/kasan/common.c:52
     ____kasan_kmalloc mm/kasan/common.c:371 [inline]
     ____kasan_kmalloc mm/kasan/common.c:330 [inline]
     __kasan_kmalloc+0xa3/0xb0 mm/kasan/common.c:380
     kasan_kmalloc include/linux/kasan.h:211 [inline]
     __do_kmalloc_node mm/slab_common.c:968 [inline]
     __kmalloc+0x5a/0xd0 mm/slab_common.c:981
     kmalloc include/linux/slab.h:584 [inline]
     sk_prot_alloc+0x140/0x290 net/core/sock.c:2038
     sk_alloc+0x3a/0x7a0 net/core/sock.c:2091
     nr_create+0xb6/0x5f0 net/netrom/af_netrom.c:433
     __sock_create+0x359/0x790 net/socket.c:1515
     sock_create net/socket.c:1566 [inline]
     __sys_socket_create net/socket.c:1603 [inline]
     __sys_socket_create net/socket.c:1588 [inline]
     __sys_socket+0x133/0x250 net/socket.c:1636
     __do_sys_socket net/socket.c:1649 [inline]
     __se_sys_socket net/socket.c:1647 [inline]
     __x64_sys_socket+0x73/0xb0 net/socket.c:1647
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    Freed by task 5128:
     kasan_save_stack+0x22/0x40 mm/kasan/common.c:45
     kasan_set_track+0x25/0x30 mm/kasan/common.c:52
     kasan_save_free_info+0x2b/0x40 mm/kasan/generic.c:518
     ____kasan_slab_free mm/kasan/common.c:236 [inline]
     ____kasan_slab_free+0x13b/0x1a0 mm/kasan/common.c:200
     kasan_slab_free include/linux/kasan.h:177 [inline]
     __cache_free mm/slab.c:3394 [inline]
     __do_kmem_cache_free mm/slab.c:3580 [inline]
     __kmem_cache_free+0xcd/0x3b0 mm/slab.c:3587
     sk_prot_free net/core/sock.c:2074 [inline]
     __sk_destruct+0x5df/0x750 net/core/sock.c:2166
     sk_destruct net/core/sock.c:2181 [inline]
     __sk_free+0x175/0x460 net/core/sock.c:2192
     sk_free+0x7c/0xa0 net/core/sock.c:2203
     sock_put include/net/sock.h:1991 [inline]
     nr_release+0x39e/0x460 net/netrom/af_netrom.c:554
     __sock_release+0xcd/0x280 net/socket.c:650
     sock_close+0x1c/0x20 net/socket.c:1365
     __fput+0x27c/0xa90 fs/file_table.c:320
     task_work_run+0x16f/0x270 kernel/task_work.c:179
     exit_task_work include/linux/task_work.h:38 [inline]
     do_exit+0xaa8/0x2950 kernel/exit.c:867
     do_group_exit+0xd4/0x2a0 kernel/exit.c:1012
     get_signal+0x21c3/0x2450 kernel/signal.c:2859
     arch_do_signal_or_restart+0x79/0x5c0 arch/x86/kernel/signal.c:306
     exit_to_user_mode_loop kernel/entry/common.c:168 [inline]
     exit_to_user_mode_prepare+0x15f/0x250 kernel/entry/common.c:203
     __syscall_exit_to_user_mode_work kernel/entry/common.c:285 [inline]
     syscall_exit_to_user_mode+0x1d/0x50 kernel/entry/common.c:296
     do_syscall_64+0x46/0xb0 arch/x86/entry/common.c:86
     entry_SYSCALL_64_after_hwframe+0x63/0xcd
    ```
    
    To fix this issue, nr_listen() returns -EINVAL for sockets that
    successfully nr_connect().
    
    Reported-by: syzbot+caa188bdfc1eeafeb418@syzkaller.appspotmail.com
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Hyunwoo Kim <v4bel@theori.io>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 362a2f5531dc0e5b0b5b3e3a541000dbffa75461
Author: Andre Kalb <andre.kalb@sma.de>
Date:   Wed Jan 25 19:23:26 2023 +0100

    net: phy: dp83822: Fix null pointer access on DP83825/DP83826 devices
    
    [ Upstream commit 422ae7d9c7221e8d4c8526d0f54106307d69d2dc ]
    
    The probe() function is only used for the DP83822 PHY, leaving the
    private data pointer uninitialized for the smaller DP83825/26 models.
    While all uses of the private data structure are hidden in 82822 specific
    callbacks, configuring the interrupt is shared across all models.
    This causes a NULL pointer dereference on the smaller PHYs as it accesses
    the private data unchecked. Verifying the pointer avoids that.
    
    Fixes: 5dc39fd5ef35 ("net: phy: DP83822: Add ability to advertise Fiber connection")
    Signed-off-by: Andre Kalb <andre.kalb@sma.de>
    Reviewed-by: Simon Horman <simon.horman@corigine.com>
    Link: https://lore.kernel.org/r/Y9FzniUhUtbaGKU7@pc6682
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6824169e7488b10ee12d364bc55c1a8be0bad332
Author: Íñigo Huguet <ihuguet@redhat.com>
Date:   Wed Jan 25 15:35:13 2023 +0100

    sfc: correctly advertise tunneled IPv6 segmentation
    
    [ Upstream commit ffffd2454a7a1bc9f7242b12c4cc0b05c12692b4 ]
    
    Recent sfc NICs are TSO capable for some tunnel protocols. However, it
    was not working properly because the feature was not advertised in
    hw_enc_features, but in hw_features only.
    
    Setting up a GENEVE tunnel and using iperf3 to send IPv4 and IPv6 traffic
    to the tunnel show, with tcpdump, that the IPv4 packets still had ~64k
    size but the IPv6 ones had only ~1500 bytes (they had been segmented by
    software, not offloaded). With this patch segmentation is offloaded as
    expected and the traffic is correctly received at the other end.
    
    Fixes: 24b2c3751aa3 ("sfc: advertise encapsulated offloads on EF10")
    Reported-by: Tianhao Zhao <tizhao@redhat.com>
    Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
    Acked-by: Martin Habets <habetsm.xilinx@gmail.com>
    Link: https://lore.kernel.org/r/20230125143513.25841-1-ihuguet@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 539fc3ef5104852625b5cb96fcf99503d7473408
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Wed Jan 25 08:48:59 2023 +0100

    virtio-net: execute xdp_do_flush() before napi_complete_done()
    
    [ Upstream commit ad7e615f646c9b5b2cf655cdfb9d91a28db4f25a ]
    
    Make sure that xdp_do_flush() is always executed before
    napi_complete_done(). This is important for two reasons. First, a
    redirect to an XSKMAP assumes that a call to xdp_do_redirect() from
    napi context X on CPU Y will be followed by a xdp_do_flush() from the
    same napi context and CPU. This is not guaranteed if the
    napi_complete_done() is executed before xdp_do_flush(), as it tells
    the napi logic that it is fine to schedule napi context X on another
    CPU. Details from a production system triggering this bug using the
    veth driver can be found following the first link below.
    
    The second reason is that the XDP_REDIRECT logic in itself relies on
    being inside a single NAPI instance through to the xdp_do_flush() call
    for RCU protection of all in-kernel data structures. Details can be
    found in the second link below.
    
    Fixes: 186b3c998c50 ("virtio-net: support XDP_REDIRECT")
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Link: https://lore.kernel.org/r/20221220185903.1105011-1-sbohrer@cloudflare.com
    Link: https://lore.kernel.org/all/20210624160609.292325-1-toke@redhat.com/
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 63d1c4edbfc1e93f40170bbee7965ca55973cd12
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 15 19:16:56 2022 -0400

    fix "direction" argument of iov_iter_kvec()
    
    [ Upstream commit fc02f33787d8dd227b54f263eba983d5b249c032 ]
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0c67fb7775086a7159980153ad8518746e7a6b64
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 15 19:04:18 2022 -0400

    fix iov_iter_bvec() "direction" argument
    
    [ Upstream commit b676668d99155e6859d99bbf2df18b3f03851902 ]
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b5437e0ba9e75ce29498f2f53e8e9d91cc59edf6
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 15 19:01:10 2022 -0400

    READ is "data destination", not source...
    
    [ Upstream commit 355d2c2798e9dc39f6714fa7ef8902c0d4c5350b ]
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fefb47a8331c55d3e981b7e34485c31eb50c2a14
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Thu Sep 15 18:59:12 2022 -0400

    WRITE is "data source", not destination...
    
    [ Upstream commit 974c36fb828aeae7b4f9063f94860ae6c5633efd ]
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9815b303e61c70ab5724b5059ce96571b4eeefd
Author: Eric Auger <eric.auger@redhat.com>
Date:   Tue Jan 17 10:15:18 2023 -0500

    vhost/net: Clear the pending messages when the backend is removed
    
    [ Upstream commit 9526f9a2b762af16be94a72aca5d65c677d28f50 ]
    
    When the vhost iotlb is used along with a guest virtual iommu
    and the guest gets rebooted, some MISS messages may have been
    recorded just before the reboot and spuriously executed by
    the virtual iommu after the reboot.
    
    As vhost does not have any explicit reset user API,
    VHOST_NET_SET_BACKEND looks a reasonable point where to clear
    the pending messages, in case the backend is removed.
    
    Export vhost_clear_msg() and call it in vhost_net_set_backend()
    when fd == -1.
    
    Signed-off-by: Eric Auger <eric.auger@redhat.com>
    Suggested-by: Jason Wang <jasowang@redhat.com>
    Fixes: 6b1e6cc7855b0 ("vhost: new device IOTLB API")
    Message-Id: <20230117151518.44725-3-eric.auger@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de990d157179369135b6f48bed6853524178c177
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Thu Jan 26 22:06:08 2023 -0500

    scsi: Revert "scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT"
    
    [ Upstream commit 15600159bcc6abbeae6b33a849bef90dca28b78f ]
    
    This reverts commit 948e922fc44611ee2de0c89583ca958cb5307d36.
    
    Not all targets that return PQ=1 and PDT=0 should be ignored. While
    the SCSI spec is vague in this department, there appears to be a
    critical mass of devices which rely on devices being accessible with
    this combination of reported values.
    
    Fixes: 948e922fc446 ("scsi: core: map PQ=1, PDT=other values to SCSI_SCAN_TARGET_PRESENT")
    Link: https://lore.kernel.org/r/yq1lelrleqr.fsf@ca-mkp.ca.oracle.com
    Acked-by: Bart Van Assche <bvanassche@acm.org>
    Acked-by: Martin Wilck <mwilck@suse.com>
    Acked-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d08a9b0ad2111aff59ee3e06e53287b9b6e47af3
Author: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Date:   Thu Jan 19 10:02:19 2023 +0100

    drm/vc4: hdmi: make CEC adapter name unique
    
    [ Upstream commit 51128c3f2a7c98055ea1d27e34910dc10977f618 ]
    
    The bcm2711 has two HDMI outputs, each with their own CEC adapter.
    The CEC adapter name has to be unique, but it is currently
    hardcoded to "vc4" for both outputs. Change this to use the card_name
    from the variant information in order to make the adapter name unique.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: 15b4511a4af6 ("drm/vc4: add HDMI CEC support")
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/dcf1db75-d9cc-62cc-fa12-baf1b2b3bf31@xs4all.nl
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8c6b46d426ed9138a6a7fe9fb5b27df5a8ec7c74
Author: Pierluigi Passaro <pierluigi.p@variscite.com>
Date:   Sun Jan 15 22:35:03 2023 +0100

    arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX
    
    [ Upstream commit 47123900f3e4a7f769631d6ec15abf44086276f6 ]
    
    According section
        8.2.5.313 Select Input Register (IOMUXC_UART1_RXD_SELECT_INPUT)
    of 
        i.MX 8M Mini Applications Processor Reference Manual, Rev. 3, 11/2020
    the required setting for this specific pin configuration is "1"
    
    Signed-off-by: Pierluigi Passaro <pierluigi.p@variscite.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Fixes: c1c9d41319c3 ("dt-bindings: imx: Add pinctrl binding doc for imx8mm")
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9bd6074e1872d22190a8da30e796cbf937d334f0
Author: Jakub Sitnicki <jakub@cloudflare.com>
Date:   Sat Jan 21 13:41:44 2023 +0100

    bpf, sockmap: Check for any of tcp_bpf_prots when cloning a listener
    
    [ Upstream commit ddce1e091757d0259107c6c0c7262df201de2b66 ]
    
    A listening socket linked to a sockmap has its sk_prot overridden. It
    points to one of the struct proto variants in tcp_bpf_prots. The variant
    depends on the socket's family and which sockmap programs are attached.
    
    A child socket cloned from a TCP listener initially inherits their sk_prot.
    But before cloning is finished, we restore the child's proto to the
    listener's original non-tcp_bpf_prots one. This happens in
    tcp_create_openreq_child -> tcp_bpf_clone.
    
    Today, in tcp_bpf_clone we detect if the child's proto should be restored
    by checking only for the TCP_BPF_BASE proto variant. This is not
    correct. The sk_prot of listening socket linked to a sockmap can point to
    to any variant in tcp_bpf_prots.
    
    If the listeners sk_prot happens to be not the TCP_BPF_BASE variant, then
    the child socket unintentionally is left if the inherited sk_prot by
    tcp_bpf_clone.
    
    This leads to issues like infinite recursion on close [1], because the
    child state is otherwise not set up for use with tcp_bpf_prot operations.
    
    Adjust the check in tcp_bpf_clone to detect all of tcp_bpf_prots variants.
    
    Note that it wouldn't be sufficient to check the socket state when
    overriding the sk_prot in tcp_bpf_update_proto in order to always use the
    TCP_BPF_BASE variant for listening sockets. Since commit
    b8b8315e39ff ("bpf, sockmap: Remove unhash handler for BPF sockmap usage")
    it is possible for a socket to transition to TCP_LISTEN state while already
    linked to a sockmap, e.g. connect() -> insert into map ->
    connect(AF_UNSPEC) -> listen().
    
    [1]: https://lore.kernel.org/all/00000000000073b14905ef2e7401@google.com/
    
    Fixes: e80251555f0b ("tcp_bpf: Don't let child socket inherit parent protocol ops on copy")
    Reported-by: syzbot+04c21ed96d861dccc5cd@syzkaller.appspotmail.com
    Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/r/20230113-sockmap-fix-v2-2-1e0ee7ac2f90@cloudflare.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 36dbb8daf08a131a31a4940c314a1c585cba28ee
Author: Eduard Zingerman <eddyz87@gmail.com>
Date:   Fri Jan 6 16:22:13 2023 +0200

    bpf: Fix to preserve reg parent/live fields when copying range info
    
    [ Upstream commit 71f656a50176915d6813751188b5758daa8d012b ]
    
    Register range information is copied in several places. The intent is
    to transfer range/id information from one register/stack spill to
    another. Currently this is done using direct register assignment, e.g.:
    
    static void find_equal_scalars(..., struct bpf_reg_state *known_reg)
    {
            ...
            struct bpf_reg_state *reg;
            ...
                            *reg = *known_reg;
            ...
    }
    
    However, such assignments also copy the following bpf_reg_state fields:
    
    struct bpf_reg_state {
            ...
            struct bpf_reg_state *parent;
            ...
            enum bpf_reg_liveness live;
            ...
    };
    
    Copying of these fields is accidental and incorrect, as could be
    demonstrated by the following example:
    
         0: call ktime_get_ns()
         1: r6 = r0
         2: call ktime_get_ns()
         3: r7 = r0
         4: if r0 > r6 goto +1             ; r0 & r6 are unbound thus generated
                                           ; branch states are identical
         5: *(u64 *)(r10 - 8) = 0xdeadbeef ; 64-bit write to fp[-8]
        --- checkpoint ---
         6: r1 = 42                        ; r1 marked as written
         7: *(u8 *)(r10 - 8) = r1          ; 8-bit write, fp[-8] parent & live
                                           ; overwritten
         8: r2 = *(u64 *)(r10 - 8)
         9: r0 = 0
        10: exit
    
    This example is unsafe because 64-bit write to fp[-8] at (5) is
    conditional, thus not all bytes of fp[-8] are guaranteed to be set
    when it is read at (8). However, currently the example passes
    verification.
    
    First, the execution path 1-10 is examined by verifier.
    Suppose that a new checkpoint is created by is_state_visited() at (6).
    After checkpoint creation:
    - r1.parent points to checkpoint.r1,
    - fp[-8].parent points to checkpoint.fp[-8].
    At (6) the r1.live is set to REG_LIVE_WRITTEN.
    At (7) the fp[-8].parent is set to r1.parent and fp[-8].live is set to
    REG_LIVE_WRITTEN, because of the following code called in
    check_stack_write_fixed_off():
    
    static void save_register_state(struct bpf_func_state *state,
                                    int spi, struct bpf_reg_state *reg,
                                    int size)
    {
            ...
            state->stack[spi].spilled_ptr = *reg;  // <--- parent & live copied
            if (size == BPF_REG_SIZE)
                    state->stack[spi].spilled_ptr.live |= REG_LIVE_WRITTEN;
            ...
    }
    
    Note the intent to mark stack spill as written only if 8 bytes are
    spilled to a slot, however this intent is spoiled by a 'live' field copy.
    At (8) the checkpoint.fp[-8] should be marked as REG_LIVE_READ but
    this does not happen:
    - fp[-8] in a current state is already marked as REG_LIVE_WRITTEN;
    - fp[-8].parent points to checkpoint.r1, parentage chain is used by
      mark_reg_read() to mark checkpoint states.
    At (10) the verification is finished for path 1-10 and jump 4-6 is
    examined. The checkpoint.fp[-8] never gets REG_LIVE_READ mark and this
    spill is pruned from the cached states by clean_live_states(). Hence
    verifier state obtained via path 1-4,6 is deemed identical to one
    obtained via path 1-6 and program marked as safe.
    
    Note: the example should be executed with BPF_F_TEST_STATE_FREQ flag
    set to force creation of intermediate verifier states.
    
    This commit revisits the locations where bpf_reg_state instances are
    copied and replaces the direct copies with a call to a function
    copy_register_state(dst, src) that preserves 'parent' and 'live'
    fields of the 'dst'.
    
    Fixes: 679c782de14b ("bpf/verifier: per-register parent pointers")
    Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
    Link: https://lore.kernel.org/r/20230106142214.1040390-2-eddyz87@gmail.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8de8c4a25ed8924b09cf8cd542feea854d5ee5bf
Author: Martin KaFai Lau <kafai@fb.com>
Date:   Tue Sep 21 17:49:41 2021 -0700

    bpf: Support <8-byte scalar spill and refill
    
    [ Upstream commit 354e8f1970f821d4952458f77b1ab6c3eb24d530 ]
    
    The verifier currently does not save the reg state when
    spilling <8byte bounded scalar to the stack.  The bpf program
    will be incorrectly rejected when this scalar is refilled to
    the reg and then used to offset into a packet header.
    The later patch has a simplified bpf prog from a real use case
    to demonstrate this case.  The current work around is
    to reparse the packet again such that this offset scalar
    is close to where the packet data will be accessed to
    avoid the spill.  Thus, the header is parsed twice.
    
    The llvm patch [1] will align the <8bytes spill to
    the 8-byte stack address.  This can simplify the verifier
    support by avoiding to store multiple reg states for
    each 8 byte stack slot.
    
    This patch changes the verifier to save the reg state when
    spilling <8bytes scalar to the stack.  This reg state saving
    is limited to spill aligned to the 8-byte stack address.
    The current refill logic has already called coerce_reg_to_size(),
    so coerce_reg_to_size() is not called on state->stack[spi].spilled_ptr
    during spill.
    
    When refilling in check_stack_read_fixed_off(),  it checks
    the refill size is the same as the number of bytes marked with
    STACK_SPILL before restoring the reg state.  When restoring
    the reg state to state->regs[dst_regno], it needs
    to avoid the state->regs[dst_regno].subreg_def being
    over written because it has been marked by the check_reg_arg()
    earlier [check_mem_access() is called after check_reg_arg() in
    do_check()].  Reordering check_mem_access() and check_reg_arg()
    will need a lot of changes in test_verifier's tests because
    of the difference in verifier's error message.  Thus, the
    patch here is to save the state->regs[dst_regno].subreg_def
    first in check_stack_read_fixed_off().
    
    There are cases that the verifier needs to scrub the spilled slot
    from STACK_SPILL to STACK_MISC.  After this patch the spill is not always
    in 8 bytes now, so it can no longer assume the other 7 bytes are always
    marked as STACK_SPILL.  In particular, the scrub needs to avoid marking
    an uninitialized byte from STACK_INVALID to STACK_MISC.  Otherwise, the
    verifier will incorrectly accept bpf program reading uninitialized bytes
    from the stack.  A new helper scrub_spilled_slot() is created for this
    purpose.
    
    [1]: https://reviews.llvm.org/D109073
    
    Signed-off-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20210922004941.625398-1-kafai@fb.com
    Stable-dep-of: 71f656a50176 ("bpf: Fix to preserve reg parent/live fields when copying range info")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b557fa635e7487f638c0f030c305870839eeda2
Author: Artemii Karasev <karasev@ispras.ru>
Date:   Thu Jan 19 00:22:59 2023 -0800

    ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path()
    
    [ Upstream commit b9cee506da2b7920b5ea02ccd8e78a907d0ee7aa ]
    
    snd_hda_get_connections() can return a negative error code.
    It may lead to accessing 'conn' array at a negative index.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Artemii Karasev <karasev@ispras.ru>
    Fixes: 30b4503378c9 ("ALSA: hda - Expose secret DAC-AA connection of some VIA codecs")
    Link: https://lore.kernel.org/r/20230119082259.3634-1-karasev@ispras.ru
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1b1f56cc0eaa104a8e0b8207a45dbe71687b5015
Author: Yonghong Song <yhs@fb.com>
Date:   Wed Jan 18 12:48:15 2023 -0800

    bpf: Fix a possible task gone issue with bpf_send_signal[_thread]() helpers
    
    [ Upstream commit bdb7fdb0aca8b96cef9995d3a57e251c2289322f ]
    
    In current bpf_send_signal() and bpf_send_signal_thread() helper
    implementation, irq_work is used to handle nmi context. Hao Sun
    reported in [1] that the current task at the entry of the helper
    might be gone during irq_work callback processing. To fix the issue,
    a reference is acquired for the current task before enqueuing into
    the irq_work so that the queued task is still available during
    irq_work callback processing.
    
      [1] https://lore.kernel.org/bpf/20230109074425.12556-1-sunhao.th@gmail.com/
    
    Fixes: 8b401f9ed244 ("bpf: implement bpf_send_signal() helper")
    Tested-by: Hao Sun <sunhao.th@gmail.com>
    Reported-by: Hao Sun <sunhao.th@gmail.com>
    Signed-off-by: Yonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/r/20230118204815.3331855-1-yhs@fb.com
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d0f276d504fb41f07ba806dfe1ba7eecad6feb8
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Mon Jan 30 12:44:01 2023 +1100

    powerpc/imc-pmu: Revert nest_init_lock to being a mutex
    
    commit ad53db4acb415976761d7302f5b02e97f2bd097e upstream.
    
    The recent commit 76d588dddc45 ("powerpc/imc-pmu: Fix use of mutex in
    IRQs disabled section") fixed warnings (and possible deadlocks) in the
    IMC PMU driver by converting the locking to use spinlocks.
    
    It also converted the init-time nest_init_lock to a spinlock, even
    though it's not used at runtime in IRQ disabled sections or while
    holding other spinlocks.
    
    This leads to warnings such as:
    
      BUG: sleeping function called from invalid context at include/linux/percpu-rwsem.h:49
      in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1, name: swapper/0
      preempt_count: 1, expected: 0
      CPU: 7 PID: 1 Comm: swapper/0 Not tainted 6.2.0-rc2-14719-gf12cd06109f4-dirty #1
      Hardware name: Mambo,Simulated-System POWER9 0x4e1203 opal:v6.6.6 PowerNV
      Call Trace:
        dump_stack_lvl+0x74/0xa8 (unreliable)
        __might_resched+0x178/0x1a0
        __cpuhp_setup_state+0x64/0x1e0
        init_imc_pmu+0xe48/0x1250
        opal_imc_counters_probe+0x30c/0x6a0
        platform_probe+0x78/0x110
        really_probe+0x104/0x420
        __driver_probe_device+0xb0/0x170
        driver_probe_device+0x58/0x180
        __driver_attach+0xd8/0x250
        bus_for_each_dev+0xb4/0x140
        driver_attach+0x34/0x50
        bus_add_driver+0x1e8/0x2d0
        driver_register+0xb4/0x1c0
        __platform_driver_register+0x38/0x50
        opal_imc_driver_init+0x2c/0x40
        do_one_initcall+0x80/0x360
        kernel_init_freeable+0x310/0x3b8
        kernel_init+0x30/0x1a0
        ret_from_kernel_thread+0x5c/0x64
    
    Fix it by converting nest_init_lock back to a mutex, so that we can call
    sleeping functions while holding it. There is no interaction between
    nest_init_lock and the runtime spinlocks used by the actual PMU routines.
    
    Fixes: 76d588dddc45 ("powerpc/imc-pmu: Fix use of mutex in IRQs disabled section")
    Tested-by: Kajol Jain<kjain@linux.ibm.com>
    Reviewed-by: Kajol Jain<kjain@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20230130014401.540543-1-mpe@ellerman.id.au
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ff2bebc2ceaa2f2ab795093aee1b0ce3fc4ab5f
Author: Paul Chaignon <paul@isovalent.com>
Date:   Fri Dec 10 00:46:31 2021 +0100

    bpf: Fix incorrect state pruning for <8B spill/fill
    
    commit 345e004d023343d38088fdfea39688aa11e06ccf upstream.
    
    Commit 354e8f1970f8 ("bpf: Support <8-byte scalar spill and refill")
    introduced support in the verifier to track <8B spill/fills of scalars.
    The backtracking logic for the precision bit was however skipping
    spill/fills of less than 8B. That could cause state pruning to consider
    two states equivalent when they shouldn't be.
    
    As an example, consider the following bytecode snippet:
    
      0:  r7 = r1
      1:  call bpf_get_prandom_u32
      2:  r6 = 2
      3:  if r0 == 0 goto pc+1
      4:  r6 = 3
      ...
      8: [state pruning point]
      ...
      /* u32 spill/fill */
      10: *(u32 *)(r10 - 8) = r6
      11: r8 = *(u32 *)(r10 - 8)
      12: r0 = 0
      13: if r8 == 3 goto pc+1
      14: r0 = 1
      15: exit
    
    The verifier first walks the path with R6=3. Given the support for <8B
    spill/fills, at instruction 13, it knows the condition is true and skips
    instruction 14. At that point, the backtracking logic kicks in but stops
    at the fill instruction since it only propagates the precision bit for
    8B spill/fill. When the verifier then walks the path with R6=2, it will
    consider it safe at instruction 8 because R6 is not marked as needing
    precision. Instruction 14 is thus never walked and is then incorrectly
    removed as 'dead code'.
    
    It's also possible to lead the verifier to accept e.g. an out-of-bound
    memory access instead of causing an incorrect dead code elimination.
    
    This regression was found via Cilium's bpf-next CI where it was causing
    a conntrack map update to be silently skipped because the code had been
    removed by the verifier.
    
    This commit fixes it by enabling support for <8B spill/fills in the
    bactracking logic. In case of a <8B spill/fill, the full 8B stack slot
    will be marked as needing precision. Then, in __mark_chain_precision,
    any tracked register spilled in a marked slot will itself be marked as
    needing precision, regardless of the spill size. This logic makes two
    assumptions: (1) only 8B-aligned spill/fill are tracked and (2) spilled
    registers are only tracked if the spill and fill sizes are equal. Commit
    ef979017b837 ("bpf: selftest: Add verifier tests for <8-byte scalar
    spill and refill") covers the first assumption and the next commit in
    this patchset covers the second.
    
    Fixes: 354e8f1970f8 ("bpf: Support <8-byte scalar spill and refill")
    Signed-off-by: Paul Chaignon <paul@isovalent.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60c27e0e37c82935ea5495172e090c0416b91d6e
Author: Yuan Can <yuancan@huawei.com>
Date:   Wed Nov 23 09:42:00 2022 +0000

    bus: sunxi-rsb: Fix error handling in sunxi_rsb_init()
    
    [ Upstream commit f71eaf2708be7831428eacae7db25d8ec6b8b4c5 ]
    
    The sunxi_rsb_init() returns the platform_driver_register() directly
    without checking its return value, if platform_driver_register() failed,
    the sunxi_rsb_bus is not unregistered.
    Fix by unregister sunxi_rsb_bus when platform_driver_register() failed.
    
    Fixes: d787dcdb9c8f ("bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus")
    Signed-off-by: Yuan Can <yuancan@huawei.com>
    Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Link: https://lore.kernel.org/r/20221123094200.12036-1-yuancan@huawei.com
    Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d5a2dcee53fa6e6e2822f93cb3f1b0cd23163bee
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Tue Jan 17 18:06:10 2023 +0900

    firewire: fix memory leak for payload of request subaction to IEC 61883-1 FCP region
    
    commit 531390a243ef47448f8bad01c186c2787666bf4d upstream.
    
    This patch is fix for Linux kernel v2.6.33 or later.
    
    For request subaction to IEC 61883-1 FCP region, Linux FireWire subsystem
    have had an issue of use-after-free. The subsystem allows multiple
    user space listeners to the region, while data of the payload was likely
    released before the listeners execute read(2) to access to it for copying
    to user space.
    
    The issue was fixed by a commit 281e20323ab7 ("firewire: core: fix
    use-after-free regression in FCP handler"). The object of payload is
    duplicated in kernel space for each listener. When the listener executes
    ioctl(2) with FW_CDEV_IOC_SEND_RESPONSE request, the object is going to
    be released.
    
    However, it causes memory leak since the commit relies on call of
    release_request() in drivers/firewire/core-cdev.c. Against the
    expectation, the function is never called due to the design of
    release_client_resource(). The function delegates release task
    to caller when called with non-NULL fourth argument. The implementation
    of ioctl_send_response() is the case. It should release the object
    explicitly.
    
    This commit fixes the bug.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 281e20323ab7 ("firewire: core: fix use-after-free regression in FCP handler")
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Link: https://lore.kernel.org/r/20230117090610.93792-2-o-takashi@sakamocchi.jp
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>