Changelog in Linux kernel 6.1.151

 
ACPI/IORT: Fix memory leak in iort_rmr_alloc_sids() [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Thu Aug 28 19:22:43 2025 +0800

    ACPI/IORT: Fix memory leak in iort_rmr_alloc_sids()
    
    commit f3ef7110924b897f4b79db9f7ac75d319ec09c4a upstream.
    
    If krealloc_array() fails in iort_rmr_alloc_sids(), the function returns
    NULL but does not free the original 'sids' allocation. This results in a
    memory leak since the caller overwrites the original pointer with the
    NULL return value.
    
    Fixes: 491cf4a6735a ("ACPI/IORT: Add support to retrieve IORT RMR reserved regions")
    Cc: <stable@vger.kernel.org> # 6.0.x
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
    Link: https://lore.kernel.org/r/20250828112243.61460-1-linmq006@gmail.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ALSA: hda/hdmi: Add pin fix for another HP EliteDesk 800 G4 model [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Sep 1 13:50:08 2025 +0200

    ALSA: hda/hdmi: Add pin fix for another HP EliteDesk 800 G4 model
    
    commit bcd6659d4911c528381531472a0cefbd4003e29e upstream.
    
    It was reported that HP EliteDesk 800 G4 DM 65W (SSID 103c:845a) needs
    the similar quirk for enabling HDMI outputs, too.  This patch adds the
    corresponding quirk entry.
    
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250901115009.27498-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup [+ + +]
Author: Chris Chiu <chris.chiu@canonical.com>
Date:   Fri Sep 5 16:07:01 2025 -0400

    ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup
    
    [ Upstream commit f709b78aecab519dbcefa9a6603b94ad18c553e3 ]
    
    New HP ZBook with Realtek HDA codec ALC3247 needs the quirk
    ALC236_FIXUP_HP_GPIO_LED to fix the micmute LED.
    
    Signed-off-by: Chris Chiu <chris.chiu@canonical.com>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250520132101.120685-1-chris.chiu@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Add support for HP Agusta using CS35L41 HDA [+ + +]
Author: Stefan Binding <sbinding@opensource.cirrus.com>
Date:   Fri Sep 5 15:16:29 2025 -0400

    ALSA: hda/realtek: Add support for HP Agusta using CS35L41 HDA
    
    [ Upstream commit 7150d57c370f9e61b7d0e82c58002f1c5a205ac4 ]
    
    Add support for HP Agusta.
    
    Laptops use 2 CS35L41 Amps with HDA, using Internal boost, with I2C
    
    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250520124757.12597-1-sbinding@opensource.cirrus.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: hda/realtek: Fix headset mic for TongFang X6[AF]R5xxY [+ + +]
Author: Aaron Erhardt <aer@tuxedocomputers.com>
Date:   Tue Aug 26 16:10:54 2025 +0200

    ALSA: hda/realtek: Fix headset mic for TongFang X6[AF]R5xxY
    
    commit 051b02b17a8b383ee033db211f90f24b91ac7006 upstream.
    
    Add a PCI quirk to enable microphone detection on the headphone jack of
    TongFang X6AR5xxY and X6FR5xxY devices.
    
    Signed-off-by: Aaron Erhardt <aer@tuxedocomputers.com>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250826141054.1201482-1-aer@tuxedocomputers.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: usb-audio: Add mute TLV for playback volumes on some devices [+ + +]
Author: Cryolitia PukNgae <cryolitia@uniontech.com>
Date:   Fri Aug 22 20:58:08 2025 +0800

    ALSA: usb-audio: Add mute TLV for playback volumes on some devices
    
    commit 9c6182843b0d02ca04cc1d946954a65a2286c7db upstream.
    
    Applying the quirk of that, the lowest Playback mixer volume setting
    mutes the audio output, on more devices.
    
    Link: https://gitlab.freedesktop.org/pipewire/pipewire/-/merge_requests/2514
    Cc: <stable@vger.kernel.org>
    Tested-by: Guoli An <anguoli@uniontech.com>
    Signed-off-by: Cryolitia PukNgae <cryolitia@uniontech.com>
    Link: https://patch.msgid.link/20250822-mixer-quirk-v1-1-b19252239c1c@uniontech.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
arm64: dts: imx8mp: Fix missing microSD slot vqmmc on DH electronics i.MX8M Plus DHCOM [+ + +]
Author: Marek Vasut <marek.vasut@mailbox.org>
Date:   Sun Aug 10 18:03:07 2025 +0200

    arm64: dts: imx8mp: Fix missing microSD slot vqmmc on DH electronics i.MX8M Plus DHCOM
    
    [ Upstream commit c53cf8ce3bfe1309cb4fd4d74c5be27c26a86e52 ]
    
    Add missing microSD slot vqmmc-supply property, otherwise the kernel
    might shut down LDO5 regulator and that would power off the microSD
    card slot, possibly while it is in use. Add the property to make sure
    the kernel is aware of the LDO5 regulator which supplies the microSD
    slot and keeps the LDO5 enabled.
    
    Fixes: 8d6712695bc8 ("arm64: dts: imx8mp: Add support for DH electronics i.MX8M Plus DHCOM and PDK2")
    Signed-off-by: Marek Vasut <marek.vasut@mailbox.org>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3399-pinebook-pro [+ + +]
Author: Peter Robinson <pbrobinson@gmail.com>
Date:   Wed Jul 30 11:21:26 2025 +0100

    arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3399-pinebook-pro
    
    [ Upstream commit d1f9c497618dece06a00e0b2995ed6b38fafe6b5 ]
    
    As described in the pinebookpro_v2.1_mainboard_schematic.pdf page 10,
    he SPI Flash's VCC connector is connected to VCC_3V0 power source.
    
    This fixes the following warning:
    
      spi-nor spi1.0: supply vcc not found, using dummy regulator
    
    Fixes: 5a65505a69884 ("arm64: dts: rockchip: Add initial support for Pinebook Pro")
    Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
    Reviewed-by: Dragan Simic <dsimic@manjaro.org>
    Link: https://lore.kernel.org/r/20250730102129.224468-1-pbrobinson@gmail.com
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ax25: properly unshare skbs in ax25_kiss_rcv() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Sep 2 12:46:42 2025 +0000

    ax25: properly unshare skbs in ax25_kiss_rcv()
    
    [ Upstream commit 8156210d36a43e76372312c87eb5ea3dbb405a85 ]
    
    Bernard Pidoux reported a regression apparently caused by commit
    c353e8983e0d ("net: introduce per netns packet chains").
    
    skb->dev becomes NULL and we crash in __netif_receive_skb_core().
    
    Before above commit, different kind of bugs or corruptions could happen
    without a major crash.
    
    But the root cause is that ax25_kiss_rcv() can queue/mangle input skb
    without checking if this skb is shared or not.
    
    Many thanks to Bernard Pidoux for his help, diagnosis and tests.
    
    We had a similar issue years ago fixed with commit 7aaed57c5c28
    ("phonet: properly unshare skbs in phonet_rcv()").
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Bernard Pidoux <f6bvp@free.fr>
    Closes: https://lore.kernel.org/netdev/1713f383-c538-4918-bc64-13b3288cd542@free.fr/
    Tested-by: Bernard Pidoux <f6bvp@free.fr>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Joerg Reuter <jreuter@yaina.de>
    Cc: David Ranch <dranch@trinnet.net>
    Cc: Folkert van Heusden <folkert@vanheusden.com>
    Reviewed-by: Dan Cross <crossd@gmail.com>
    Link: https://patch.msgid.link/20250902124642.212705-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
batman-adv: fix OOB read/write in network-coding decode [+ + +]
Author: Stanislav Fort <stanislav.fort@aisle.com>
Date:   Sun Aug 31 16:56:23 2025 +0200

    batman-adv: fix OOB read/write in network-coding decode
    
    commit d77b6ff0ce35a6d0b0b7b9581bc3f76d041d4087 upstream.
    
    batadv_nc_skb_decode_packet() trusts coded_len and checks only against
    skb->len. XOR starts at sizeof(struct batadv_unicast_packet), reducing
    payload headroom, and the source skb length is not verified, allowing an
    out-of-bounds read and a small out-of-bounds write.
    
    Validate that coded_len fits within the payload area of both destination
    and source sk_buffs before XORing.
    
    Fixes: 2df5278b0267 ("batman-adv: network coding - receive coded packets and decode them")
    Cc: stable@vger.kernel.org
    Reported-by: Stanislav Fort <disclosure@aisle.com>
    Signed-off-by: Stanislav Fort <stanislav.fort@aisle.com>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Bluetooth: Fix use-after-free in l2cap_sock_cleanup_listen() [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Wed Aug 27 20:40:14 2025 +0000

    Bluetooth: Fix use-after-free in l2cap_sock_cleanup_listen()
    
    [ Upstream commit 862c628108562d8c7a516a900034823b381d3cba ]
    
    syzbot reported the splat below without a repro.
    
    In the splat, a single thread calling bt_accept_dequeue() freed sk
    and touched it after that.
    
    The root cause would be the racy l2cap_sock_cleanup_listen() call
    added by the cited commit.
    
    bt_accept_dequeue() is called under lock_sock() except for
    l2cap_sock_release().
    
    Two threads could see the same socket during the list iteration
    in bt_accept_dequeue():
    
      CPU1                        CPU2 (close())
      ----                        ----
      sock_hold(sk)               sock_hold(sk);
      lock_sock(sk)   <-- block close()
      sock_put(sk)
      bt_accept_unlink(sk)
        sock_put(sk)  <-- refcnt by bt_accept_enqueue()
      release_sock(sk)
                                  lock_sock(sk)
                                  sock_put(sk)
                                  bt_accept_unlink(sk)
                                    sock_put(sk)        <-- last refcnt
                                  bt_accept_unlink(sk)  <-- UAF
    
    Depending on the timing, the other thread could show up in the
    "Freed by task" part.
    
    Let's call l2cap_sock_cleanup_listen() under lock_sock() in
    l2cap_sock_release().
    
    [0]:
    BUG: KASAN: slab-use-after-free in debug_spin_lock_before kernel/locking/spinlock_debug.c:86 [inline]
    BUG: KASAN: slab-use-after-free in do_raw_spin_lock+0x26f/0x2b0 kernel/locking/spinlock_debug.c:115
    Read of size 4 at addr ffff88803b7eb1c4 by task syz.5.3276/16995
    CPU: 3 UID: 0 PID: 16995 Comm: syz.5.3276 Not tainted syzkaller #0 PREEMPT(full)
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:378 [inline]
     print_report+0xcd/0x630 mm/kasan/report.c:482
     kasan_report+0xe0/0x110 mm/kasan/report.c:595
     debug_spin_lock_before kernel/locking/spinlock_debug.c:86 [inline]
     do_raw_spin_lock+0x26f/0x2b0 kernel/locking/spinlock_debug.c:115
     spin_lock_bh include/linux/spinlock.h:356 [inline]
     release_sock+0x21/0x220 net/core/sock.c:3746
     bt_accept_dequeue+0x505/0x600 net/bluetooth/af_bluetooth.c:312
     l2cap_sock_cleanup_listen+0x5c/0x2a0 net/bluetooth/l2cap_sock.c:1451
     l2cap_sock_release+0x5c/0x210 net/bluetooth/l2cap_sock.c:1425
     __sock_release+0xb3/0x270 net/socket.c:649
     sock_close+0x1c/0x30 net/socket.c:1439
     __fput+0x3ff/0xb70 fs/file_table.c:468
     task_work_run+0x14d/0x240 kernel/task_work.c:227
     resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
     exit_to_user_mode_loop+0xeb/0x110 kernel/entry/common.c:43
     exit_to_user_mode_prepare include/linux/irq-entry-common.h:225 [inline]
     syscall_exit_to_user_mode_work include/linux/entry-common.h:175 [inline]
     syscall_exit_to_user_mode include/linux/entry-common.h:210 [inline]
     do_syscall_64+0x3f6/0x4c0 arch/x86/entry/syscall_64.c:100
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f2accf8ebe9
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007ffdb6cb1378 EFLAGS: 00000246 ORIG_RAX: 00000000000001b4
    RAX: 0000000000000000 RBX: 00000000000426fb RCX: 00007f2accf8ebe9
    RDX: 0000000000000000 RSI: 000000000000001e RDI: 0000000000000003
    RBP: 00007f2acd1b7da0 R08: 0000000000000001 R09: 00000012b6cb166f
    R10: 0000001b30e20000 R11: 0000000000000246 R12: 00007f2acd1b609c
    R13: 00007f2acd1b6090 R14: ffffffffffffffff R15: 00007ffdb6cb1490
     </TASK>
    
    Allocated by task 5326:
     kasan_save_stack+0x33/0x60 mm/kasan/common.c:47
     kasan_save_track+0x14/0x30 mm/kasan/common.c:68
     poison_kmalloc_redzone mm/kasan/common.c:388 [inline]
     __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:405
     kasan_kmalloc include/linux/kasan.h:260 [inline]
     __do_kmalloc_node mm/slub.c:4365 [inline]
     __kmalloc_noprof+0x223/0x510 mm/slub.c:4377
     kmalloc_noprof include/linux/slab.h:909 [inline]
     sk_prot_alloc+0x1a8/0x2a0 net/core/sock.c:2239
     sk_alloc+0x36/0xc20 net/core/sock.c:2295
     bt_sock_alloc+0x3b/0x3a0 net/bluetooth/af_bluetooth.c:151
     l2cap_sock_alloc.constprop.0+0x33/0x1d0 net/bluetooth/l2cap_sock.c:1894
     l2cap_sock_new_connection_cb+0x101/0x240 net/bluetooth/l2cap_sock.c:1482
     l2cap_connect_cfm+0x4c4/0xf80 net/bluetooth/l2cap_core.c:7287
     hci_connect_cfm include/net/bluetooth/hci_core.h:2050 [inline]
     hci_remote_features_evt+0x4dd/0x970 net/bluetooth/hci_event.c:3712
     hci_event_func net/bluetooth/hci_event.c:7519 [inline]
     hci_event_packet+0xa0d/0x11c0 net/bluetooth/hci_event.c:7573
     hci_rx_work+0x2c5/0x16b0 net/bluetooth/hci_core.c:4071
     process_one_work+0x9cf/0x1b70 kernel/workqueue.c:3236
     process_scheduled_works kernel/workqueue.c:3319 [inline]
     worker_thread+0x6c8/0xf10 kernel/workqueue.c:3400
     kthread+0x3c2/0x780 kernel/kthread.c:463
     ret_from_fork+0x5d7/0x6f0 arch/x86/kernel/process.c:148
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
    
    Freed by task 16995:
     kasan_save_stack+0x33/0x60 mm/kasan/common.c:47
     kasan_save_track+0x14/0x30 mm/kasan/common.c:68
     kasan_save_free_info+0x3b/0x60 mm/kasan/generic.c:576
     poison_slab_object mm/kasan/common.c:243 [inline]
     __kasan_slab_free+0x60/0x70 mm/kasan/common.c:275
     kasan_slab_free include/linux/kasan.h:233 [inline]
     slab_free_hook mm/slub.c:2417 [inline]
     slab_free mm/slub.c:4680 [inline]
     kfree+0x2b4/0x4d0 mm/slub.c:4879
     sk_prot_free net/core/sock.c:2278 [inline]
     __sk_destruct+0x75f/0x9a0 net/core/sock.c:2373
     sk_destruct+0xc2/0xf0 net/core/sock.c:2401
     __sk_free+0xf4/0x3e0 net/core/sock.c:2412
     sk_free+0x6a/0x90 net/core/sock.c:2423
     sock_put include/net/sock.h:1960 [inline]
     bt_accept_unlink+0x245/0x2e0 net/bluetooth/af_bluetooth.c:262
     bt_accept_dequeue+0x517/0x600 net/bluetooth/af_bluetooth.c:308
     l2cap_sock_cleanup_listen+0x5c/0x2a0 net/bluetooth/l2cap_sock.c:1451
     l2cap_sock_release+0x5c/0x210 net/bluetooth/l2cap_sock.c:1425
     __sock_release+0xb3/0x270 net/socket.c:649
     sock_close+0x1c/0x30 net/socket.c:1439
     __fput+0x3ff/0xb70 fs/file_table.c:468
     task_work_run+0x14d/0x240 kernel/task_work.c:227
     resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
     exit_to_user_mode_loop+0xeb/0x110 kernel/entry/common.c:43
     exit_to_user_mode_prepare include/linux/irq-entry-common.h:225 [inline]
     syscall_exit_to_user_mode_work include/linux/entry-common.h:175 [inline]
     syscall_exit_to_user_mode include/linux/entry-common.h:210 [inline]
     do_syscall_64+0x3f6/0x4c0 arch/x86/entry/syscall_64.c:100
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 1728137b33c0 ("Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb")
    Reported-by: syzbot+e5e64cdf8e92046dd3e1@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/linux-bluetooth/68af6b9d.a70a0220.3cafd4.0032.GAE@google.com/
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

Bluetooth: hci_sync: Avoid adding default advertising on startup [+ + +]
Author: Yang Li <yang.li@amlogic.com>
Date:   Mon Jul 28 17:08:44 2025 +0800

    Bluetooth: hci_sync: Avoid adding default advertising on startup
    
    [ Upstream commit de5d7d3f27ddd4046736f558a40e252ddda82013 ]
    
    list_empty(&hdev->adv_instances) is always true during startup,
    so an advertising instance is added by default.
    
    Call trace:
      dump_backtrace+0x94/0xec
      show_stack+0x18/0x24
      dump_stack_lvl+0x48/0x60
      dump_stack+0x18/0x24
      hci_setup_ext_adv_instance_sync+0x17c/0x328
      hci_powered_update_adv_sync+0xb4/0x12c
      hci_powered_update_sync+0x54/0x70
      hci_power_on_sync+0xe4/0x278
      hci_set_powered_sync+0x28/0x34
      set_powered_sync+0x40/0x58
      hci_cmd_sync_work+0x94/0x100
      process_one_work+0x168/0x444
      worker_thread+0x378/0x3f4
      kthread+0x108/0x10c
      ret_from_fork+0x10/0x20
    
    Link: https://github.com/bluez/bluez/issues/1442
    Signed-off-by: Yang Li <yang.li@amlogic.com>
    Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
bpf: Add cookie object to bpf maps [+ + +]
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Thu Jul 31 01:47:30 2025 +0200

    bpf: Add cookie object to bpf maps
    
    [ Upstream commit 12df58ad294253ac1d8df0c9bb9cf726397a671d ]
    
    Add a cookie to BPF maps to uniquely identify BPF maps for the timespan
    when the node is up. This is different to comparing a pointer or BPF map
    id which could get rolled over and reused.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/r/20250730234733.530041-1-daniel@iogearbox.net
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
bpf: Fix oob access in cgroup local storage [+ + +]
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Thu Jul 31 01:47:33 2025 +0200

    bpf: Fix oob access in cgroup local storage
    
    [ Upstream commit abad3d0bad72a52137e0c350c59542d75ae4f513 ]
    
    Lonial reported that an out-of-bounds access in cgroup local storage
    can be crafted via tail calls. Given two programs each utilizing a
    cgroup local storage with a different value size, and one program
    doing a tail call into the other. The verifier will validate each of
    the indivial programs just fine. However, in the runtime context
    the bpf_cg_run_ctx holds an bpf_prog_array_item which contains the
    BPF program as well as any cgroup local storage flavor the program
    uses. Helpers such as bpf_get_local_storage() pick this up from the
    runtime context:
    
      ctx = container_of(current->bpf_ctx, struct bpf_cg_run_ctx, run_ctx);
      storage = ctx->prog_item->cgroup_storage[stype];
    
      if (stype == BPF_CGROUP_STORAGE_SHARED)
        ptr = &READ_ONCE(storage->buf)->data[0];
      else
        ptr = this_cpu_ptr(storage->percpu_buf);
    
    For the second program which was called from the originally attached
    one, this means bpf_get_local_storage() will pick up the former
    program's map, not its own. With mismatching sizes, this can result
    in an unintended out-of-bounds access.
    
    To fix this issue, we need to extend bpf_map_owner with an array of
    storage_cookie[] to match on i) the exact maps from the original
    program if the second program was using bpf_get_local_storage(), or
    ii) allow the tail call combination if the second program was not
    using any of the cgroup local storage maps.
    
    Fixes: 7d9c3427894f ("bpf: Make cgroup storages shared between programs on the same cgroup")
    Reported-by: Lonial Con <kongln9170@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/r/20250730234733.530041-4-daniel@iogearbox.net
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Move bpf map owner out of common struct [+ + +]
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Sep 1 13:34:50 2025 -0400

    bpf: Move bpf map owner out of common struct
    
    [ Upstream commit fd1c98f0ef5cbcec842209776505d9e70d8fcd53 ]
    
    Given this is only relevant for BPF tail call maps, it is adding up space
    and penalizing other map types. We also need to extend this with further
    objects to track / compare to. Therefore, lets move this out into a separate
    structure and dynamically allocate it only for BPF tail call maps.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/r/20250730234733.530041-2-daniel@iogearbox.net
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

bpf: Move cgroup iterator helpers to bpf.h [+ + +]
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Thu Jul 31 01:47:32 2025 +0200

    bpf: Move cgroup iterator helpers to bpf.h
    
    [ Upstream commit 9621e60f59eae87eb9ffe88d90f24f391a1ef0f0 ]
    
    Move them into bpf.h given we also need them in core code.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/r/20250730234733.530041-3-daniel@iogearbox.net
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: adjust subpage bit start based on sectorsize [+ + +]
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Sat Sep 6 09:35:21 2025 -0400

    btrfs: adjust subpage bit start based on sectorsize
    
    [ Upstream commit e08e49d986f82c30f42ad0ed43ebbede1e1e3739 ]
    
    When running machines with 64k page size and a 16k nodesize we started
    seeing tree log corruption in production.  This turned out to be because
    we were not writing out dirty blocks sometimes, so this in fact affects
    all metadata writes.
    
    When writing out a subpage EB we scan the subpage bitmap for a dirty
    range.  If the range isn't dirty we do
    
            bit_start++;
    
    to move onto the next bit.  The problem is the bitmap is based on the
    number of sectors that an EB has.  So in this case, we have a 64k
    pagesize, 16k nodesize, but a 4k sectorsize.  This means our bitmap is 4
    bits for every node.  With a 64k page size we end up with 4 nodes per
    page.
    
    To make this easier this is how everything looks
    
    [0         16k       32k       48k     ] logical address
    [0         4         8         12      ] radix tree offset
    [               64k page               ] folio
    [ 16k eb ][ 16k eb ][ 16k eb ][ 16k eb ] extent buffers
    [ | | | |  | | | |   | | | |   | | | | ] bitmap
    
    Now we use all of our addressing based on fs_info->sectorsize_bits, so
    as you can see the above our 16k eb->start turns into radix entry 4.
    
    When we find a dirty range for our eb, we correctly do bit_start +=
    sectors_per_node, because if we start at bit 0, the next bit for the
    next eb is 4, to correspond to eb->start 16k.
    
    However if our range is clean, we will do bit_start++, which will now
    put us offset from our radix tree entries.
    
    In our case, assume that the first time we check the bitmap the block is
    not dirty, we increment bit_start so now it == 1, and then we loop
    around and check again.  This time it is dirty, and we go to find that
    start using the following equation
    
            start = folio_start + bit_start * fs_info->sectorsize;
    
    so in the case above, eb->start 0 is now dirty, and we calculate start
    as
    
            0 + 1 * fs_info->sectorsize = 4096
            4096 >> 12 = 1
    
    Now we're looking up the radix tree for 1, and we won't find an eb.
    What's worse is now we're using bit_start == 1, so we do bit_start +=
    sectors_per_node, which is now 5.  If that eb is dirty we will run into
    the same thing, we will look at an offset that is not populated in the
    radix tree, and now we're skipping the writeout of dirty extent buffers.
    
    The best fix for this is to not use sectorsize_bits to address nodes,
    but that's a larger change.  Since this is a fs corruption problem fix
    it simply by always using sectors_per_node to increment the start bit.
    
    Fixes: c4aec299fa8f ("btrfs: introduce submit_eb_subpage() to submit a subpage metadata page")
    CC: stable@vger.kernel.org # 5.15+
    Reviewed-by: Boris Burkov <boris@bur.io>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: avoid load/store tearing races when checking if an inode was logged [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Aug 6 12:11:32 2025 +0100

    btrfs: avoid load/store tearing races when checking if an inode was logged
    
    [ Upstream commit 986bf6ed44dff7fbae7b43a0882757ee7f5ba21b ]
    
    At inode_logged() we do a couple lockless checks for ->logged_trans, and
    these are generally safe except the second one in case we get a load or
    store tearing due to a concurrent call updating ->logged_trans (either at
    btrfs_log_inode() or later at inode_logged()).
    
    In the first case it's safe to compare to the current transaction ID since
    once ->logged_trans is set the current transaction, we never set it to a
    lower value.
    
    In the second case, where we check if it's greater than zero, we are prone
    to load/store tearing races, since we can have a concurrent task updating
    to the current transaction ID with store tearing for example, instead of
    updating with a single 64 bits write, to update with two 32 bits writes or
    four 16 bits writes. In that case the reading side at inode_logged() could
    see a positive value that does not match the current transaction and then
    return a false negative.
    
    Fix this by doing the second check while holding the inode's spinlock, add
    some comments about it too. Also add the data_race() annotation to the
    first check to avoid any reports from KCSAN (or similar tools) and comment
    about it.
    
    Fixes: 0f8ce49821de ("btrfs: avoid inode logging during rename and link when possible")
    Reviewed-by: Boris Burkov <boris@bur.io>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: fix race between logging inode and checking if it was logged before [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Aug 6 12:11:30 2025 +0100

    btrfs: fix race between logging inode and checking if it was logged before
    
    [ Upstream commit ef07b74e1be56f9eafda6aadebb9ebba0743c9f0 ]
    
    There's a race between checking if an inode was logged before and logging
    an inode that can cause us to mark an inode as not logged just after it
    was logged by a concurrent task:
    
    1) We have inode X which was not logged before neither in the current
       transaction not in past transaction since the inode was loaded into
       memory, so it's ->logged_trans value is 0;
    
    2) We are at transaction N;
    
    3) Task A calls inode_logged() against inode X, sees that ->logged_trans
       is 0 and there is a log tree and so it proceeds to search in the log
       tree for an inode item for inode X. It doesn't see any, but before
       it sets ->logged_trans to N - 1...
    
    3) Task B calls btrfs_log_inode() against inode X, logs the inode and
       sets ->logged_trans to N;
    
    4) Task A now sets ->logged_trans to N - 1;
    
    5) At this point anyone calling inode_logged() gets 0 (inode not logged)
       since ->logged_trans is greater than 0 and less than N, but our inode
       was really logged. As a consequence operations like rename, unlink and
       link that happen afterwards in the current transaction end up not
       updating the log when they should.
    
    Fix this by ensuring inode_logged() only updates ->logged_trans in case
    the inode item is not found in the log tree if after tacking the inode's
    lock (spinlock struct btrfs_inode::lock) the ->logged_trans value is still
    zero, since the inode lock is what protects setting ->logged_trans at
    btrfs_log_inode().
    
    Fixes: 0f8ce49821de ("btrfs: avoid inode logging during rename and link when possible")
    Reviewed-by: Boris Burkov <boris@bur.io>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

btrfs: fix race between setting last_dir_index_offset and inode logging [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Aug 6 12:11:31 2025 +0100

    btrfs: fix race between setting last_dir_index_offset and inode logging
    
    [ Upstream commit 59a0dd4ab98970086fd096281b1606c506ff2698 ]
    
    At inode_logged() if we find that the inode was not logged before we
    update its ->last_dir_index_offset to (u64)-1 with the goal that the
    next directory log operation will see the (u64)-1 and then figure out
    it must check what was the index of the last logged dir index key and
    update ->last_dir_index_offset to that key's offset (this is done in
    update_last_dir_index_offset()).
    
    This however has a possibility for a time window where a race can happen
    and lead to directory logging skipping dir index keys that should be
    logged. The race happens like this:
    
    1) Task A calls inode_logged(), sees ->logged_trans as 0 and then checks
       that the inode item was logged before, but before it sets the inode's
       ->last_dir_index_offset to (u64)-1...
    
    2) Task B is at btrfs_log_inode() which calls inode_logged() early, and
       that has set ->last_dir_index_offset to (u64)-1;
    
    3) Task B then enters log_directory_changes() which calls
       update_last_dir_index_offset(). There it sees ->last_dir_index_offset
       is (u64)-1 and that the inode was logged before (ctx->logged_before is
       true), and so it searches for the last logged dir index key in the log
       tree and it finds that it has an offset (index) value of N, so it sets
       ->last_dir_index_offset to N, so that we can skip index keys that are
       less than or equal to N (later at process_dir_items_leaf());
    
    4) Task A now sets ->last_dir_index_offset to (u64)-1, undoing the update
       that task B just did;
    
    5) Task B will now skip every index key when it enters
       process_dir_items_leaf(), since ->last_dir_index_offset is (u64)-1.
    
    Fix this by making inode_logged() not touch ->last_dir_index_offset and
    initializing it to 0 when an inode is loaded (at btrfs_alloc_inode()) and
    then having update_last_dir_index_offset() treat a value of 0 as meaning
    we must check the log tree and update with the index of the last logged
    index key. This is fine since the minimum possible value for
    ->last_dir_index_offset is 1 (BTRFS_DIR_START_INDEX - 1 = 2 - 1 = 1).
    This also simplifies the management of ->last_dir_index_offset and now
    all accesses to it are done under the inode's log_mutex.
    
    Fixes: 0f8ce49821de ("btrfs: avoid inode logging during rename and link when possible")
    Reviewed-by: Boris Burkov <boris@bur.io>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cdc_ncm: Flag Intel OEM version of Fibocom L850-GL as WWAN [+ + +]
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Thu Aug 14 17:42:14 2025 +0200

    cdc_ncm: Flag Intel OEM version of Fibocom L850-GL as WWAN
    
    [ Upstream commit 4a73a36cb704813f588af13d9842d0ba5a185758 ]
    
    This lets NetworkManager/ModemManager know that this is a modem and
    needs to be connected first.
    
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Link: https://patch.msgid.link/20250814154214.250103-1-lkundrak@v3.sk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cifs: prevent NULL pointer dereference in UTF16 conversion [+ + +]
Author: Makar Semyonov <m.semenov@tssltd.ru>
Date:   Thu Sep 4 15:28:41 2025 +0300

    cifs: prevent NULL pointer dereference in UTF16 conversion
    
    commit 70bccd9855dae56942f2b18a08ba137bb54093a0 upstream.
    
    There can be a NULL pointer dereference bug here. NULL is passed to
    __cifs_sfu_make_node without checks, which passes it unchecked to
    cifs_strndup_to_utf16, which in turn passes it to
    cifs_local_to_utf16_bytes where '*from' is dereferenced, causing a crash.
    
    This patch adds a check for NULL 'src' in cifs_strndup_to_utf16 and
    returns NULL early to prevent dereferencing NULL pointer.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE
    
    Signed-off-by: Makar Semyonov <m.semenov@tssltd.ru>
    Cc: stable@vger.kernel.org
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cpufreq/sched: Explicitly synchronize limits_changed flag handling [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Sat Sep 6 12:11:09 2025 -0400

    cpufreq/sched: Explicitly synchronize limits_changed flag handling
    
    [ Upstream commit 79443a7e9da3c9f68290a8653837e23aba0fa89f ]
    
    The handling of the limits_changed flag in struct sugov_policy needs to
    be explicitly synchronized to ensure that cpufreq policy limits updates
    will not be missed in some cases.
    
    Without that synchronization it is theoretically possible that
    the limits_changed update in sugov_should_update_freq() will be
    reordered with respect to the reads of the policy limits in
    cpufreq_driver_resolve_freq() and in that case, if the limits_changed
    update in sugov_limits() clobbers the one in sugov_should_update_freq(),
    the new policy limits may not take effect for a long time.
    
    Likewise, the limits_changed update in sugov_limits() may theoretically
    get reordered with respect to the updates of the policy limits in
    cpufreq_set_policy() and if sugov_should_update_freq() runs between
    them, the policy limits change may be missed.
    
    To ensure that the above situations will not take place, add memory
    barriers preventing the reordering in question from taking place and
    add READ_ONCE() and WRITE_ONCE() annotations around all of the
    limits_changed flag updates to prevent the compiler from messing up
    with that code.
    
    Fixes: 600f5badb78c ("cpufreq: schedutil: Don't skip freq update when limits change")
    Cc: 5.3+ <stable@vger.kernel.org> # 5.3+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Christian Loehle <christian.loehle@arm.com>
    Link: https://patch.msgid.link/3376719.44csPzL39Z@rjwysocki.net
    [ bw_min => bw_dl ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cpufreq: intel_pstate: Check turbo_is_disabled() in store_no_turbo() [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Tue Jun 11 16:53:06 2024 +0200

    cpufreq: intel_pstate: Check turbo_is_disabled() in store_no_turbo()
    
    [ Upstream commit 350cbb5d2f676bff22c49e5e81764c3b8da342a9 ]
    
    After recent changes in intel_pstate, global.turbo_disabled is only set
    at the initialization time and never changed.  However, it turns out
    that on some systems the "turbo disabled" bit in MSR_IA32_MISC_ENABLE,
    the initial state of which is reflected by global.turbo_disabled, can be
    flipped later and there should be a way to take that into account (other
    than checking that MSR every time the driver runs which is costly and
    useless overhead on the vast majority of systems).
    
    For this purpose, notice that before the changes in question,
    store_no_turbo() contained a turbo_is_disabled() check that was used
    for updating global.turbo_disabled if the "turbo disabled" bit in
    MSR_IA32_MISC_ENABLE had been flipped and that functionality can be
    restored.  Then, users will be able to reset global.turbo_disabled
    by writing 0 to no_turbo which used to work before on systems with
    flipping "turbo disabled" bit.
    
    This guarantees the driver state to remain in sync, but READ_ONCE()
    annotations need to be added in two places where global.turbo_disabled
    is accessed locklessly, so modify the driver to make that happen.
    
    Fixes: 0940f1a8011f ("cpufreq: intel_pstate: Do not update global.turbo_disabled after initialization")
    Closes: https://lore.kernel.org/linux-pm/bf3ebf1571a4788e97daf861eb493c12d42639a3.camel@xry111.site
    Suggested-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Reported-by: Xi Ruoyao <xry111@xry111.site>
    Tested-by: Xi Ruoyao <xry111@xry111.site>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cpufreq: intel_pstate: Do not update global.turbo_disabled after initialization [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Sat Sep 6 09:22:09 2025 -0400

    cpufreq: intel_pstate: Do not update global.turbo_disabled after initialization
    
    [ Upstream commit 0940f1a8011fd69be5082015068e0dc31c800c20 ]
    
    The global.turbo_disabled is updated quite often, especially in the
    passive mode in which case it is updated every time the scheduler calls
    into the driver.  However, this is generally not necessary and it adds
    MSR read overhead to scheduler code paths (and that particular MSR is
    slow to read).
    
    For this reason, make the driver read MSR_IA32_MISC_ENABLE_TURBO_DISABLE
    just once at the cpufreq driver registration time and remove all of the
    in-flight updates of global.turbo_disabled.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Stable-dep-of: ac4e04d9e378 ("cpufreq: intel_pstate: Unchecked MSR aceess in legacy mode")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cpufreq: intel_pstate: Fold intel_pstate_max_within_limits() into caller [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Sat Sep 6 09:22:08 2025 -0400

    cpufreq: intel_pstate: Fold intel_pstate_max_within_limits() into caller
    
    [ Upstream commit 032c5565eb80edb6f2faeb31939540c897987119 ]
    
    Fold intel_pstate_max_within_limits() into its only caller.
    
    No functional impact.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Stable-dep-of: ac4e04d9e378 ("cpufreq: intel_pstate: Unchecked MSR aceess in legacy mode")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cpufreq: intel_pstate: Read global.no_turbo under READ_ONCE() [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Mon Mar 25 18:04:24 2024 +0100

    cpufreq: intel_pstate: Read global.no_turbo under READ_ONCE()
    
    [ Upstream commit 9558fae8ce97b3b320b387dd7c88309df2c36d4d ]
    
    Because global.no_turbo is generally not read under intel_pstate_driver_lock
    make store_no_turbo() use WRITE_ONCE() for updating it (this is the only
    place at which it is updated except for the initialization) and make the
    majority of places reading it use READ_ONCE().
    
    Also remove redundant global.turbo_disabled checks from places that
    depend on the 'true' value of global.no_turbo because it can only be
    'true' if global.turbo_disabled is also 'true'.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Stable-dep-of: 350cbb5d2f67 ("cpufreq: intel_pstate: Check turbo_is_disabled() in store_no_turbo()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cpufreq: intel_pstate: Rearrange show_no_turbo() and store_no_turbo() [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Mon Mar 25 18:03:25 2024 +0100

    cpufreq: intel_pstate: Rearrange show_no_turbo() and store_no_turbo()
    
    [ Upstream commit c626a438452079824139f97137f17af47b1a8989 ]
    
    Now that global.turbo_disabled can only change at the cpufreq driver
    registration time, initialize global.no_turbo at that time too so they
    are in sync to start with (if the former is set, the latter cannot be
    updated later anyway).
    
    That allows show_no_turbo() to be simlified because it does not need
    to check global.turbo_disabled and store_no_turbo() can be rearranged
    to avoid doing anything if the new value of global.no_turbo is equal
    to the current one and only return an error on attempts to clear
    global.no_turbo when global.turbo_disabled.
    
    While at it, eliminate the redundant ret variable from store_no_turbo().
    
    No intentional functional impact.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Stable-dep-of: 350cbb5d2f67 ("cpufreq: intel_pstate: Check turbo_is_disabled() in store_no_turbo()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cpufreq: intel_pstate: Revise global turbo disable check [+ + +]
Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date:   Sat Sep 6 09:22:07 2025 -0400

    cpufreq: intel_pstate: Revise global turbo disable check
    
    [ Upstream commit 37b6ddba967c601479bea418a7ac6ff16b6232b7 ]
    
    Setting global turbo flag based on CPU 0 P-state limits is problematic
    as it limits max P-state request on every CPU on the system just based
    on its P-state limits.
    
    There are two cases in which global.turbo_disabled flag is set:
    - When the MSR_IA32_MISC_ENABLE_TURBO_DISABLE bit is set to 1
    in the MSR MSR_IA32_MISC_ENABLE. This bit can be only changed by
    the system BIOS before power up.
    - When the max non turbo P-state is same as max turbo P-state for CPU 0.
    
    The second check is not a valid to decide global turbo state based on
    the CPU 0. CPU 0 max turbo P-state can be same as max non turbo P-state,
    but for other CPUs this may not be true.
    
    There is no guarantee that max P-state limits are same for every CPU. This
    is possible that during fusing max P-state for a CPU is constrained. Also
    with the Intel Speed Select performance profile, CPU 0 may not be present
    in all profiles. In this case the max non turbo and turbo P-state can be
    set to the lowest possible P-state by the hardware when switched to
    such profile. Since max non turbo and turbo P-state is same,
    global.turbo_disabled flag will be set.
    
    Once global.turbo_disabled is set, any scaling max and min frequency
    update for any CPU will result in its max P-state constrained to the max
    non turbo P-state.
    
    Hence remove the check of max non turbo P-state equal to max turbo P-state
    of CPU 0 to set global turbo disabled flag.
    
    Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    [ rjw: Subject edit ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Stable-dep-of: ac4e04d9e378 ("cpufreq: intel_pstate: Unchecked MSR aceess in legacy mode")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

cpufreq: intel_pstate: Unchecked MSR aceess in legacy mode [+ + +]
Author: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date:   Sat Sep 6 09:22:10 2025 -0400

    cpufreq: intel_pstate: Unchecked MSR aceess in legacy mode
    
    [ Upstream commit ac4e04d9e378f5aa826c2406ad7871ae1b6a6fb9 ]
    
    When turbo mode is unavailable on a Skylake-X system, executing the
    command:
    
     # echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
    
    results in an unchecked MSR access error:
    
     WRMSR to 0x199 (attempted to write 0x0000000100001300).
    
    This issue was reproduced on an OEM (Original Equipment Manufacturer)
    system and is not a common problem across all Skylake-X systems.
    
    This error occurs because the MSR 0x199 Turbo Engage Bit (bit 32) is set
    when turbo mode is disabled. The issue arises when intel_pstate fails to
    detect that turbo mode is disabled. Here intel_pstate relies on
    MSR_IA32_MISC_ENABLE bit 38 to determine the status of turbo mode.
    However, on this system, bit 38 is not set even when turbo mode is
    disabled.
    
    According to the Intel Software Developer's Manual (SDM), the BIOS sets
    this bit during platform initialization to enable or disable
    opportunistic processor performance operations. Logically, this bit
    should be set in such cases. However, the SDM also specifies that "OS
    and applications must use CPUID leaf 06H to detect processors with
    opportunistic processor performance operations enabled."
    
    Therefore, in addition to checking MSR_IA32_MISC_ENABLE bit 38, verify
    that CPUID.06H:EAX[1] is 0 to accurately determine if turbo mode is
    disabled.
    
    Fixes: 4521e1a0ce17 ("cpufreq: intel_pstate: Reflect current no_turbo state correctly")
    Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dmaengine: mediatek: Fix a flag reuse error in mtk_cqdma_tx_status() [+ + +]
Author: Qiu-ji Chen <chenqiuji666@gmail.com>
Date:   Fri Jun 6 17:00:17 2025 +0800

    dmaengine: mediatek: Fix a flag reuse error in mtk_cqdma_tx_status()
    
    [ Upstream commit 8eba2187391e5ab49940cd02d6bd45a5617f4daf ]
    
    Fixed a flag reuse bug in the mtk_cqdma_tx_status() function.
    
    Fixes: 157ae5ffd76a ("dmaengine: mediatek: Fix a possible deadlock error in mtk_cqdma_tx_status()")
    Cc: stable@vger.kernel.org
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202505270641.MStzJUfU-lkp@intel.com/
    Signed-off-by: Qiu-ji Chen <chenqiuji666@gmail.com>
    Reviewed-by: Eugen Hristev <eugen.hristev@linaro.org>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20250606090017.5436-1-chenqiuji666@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

dmaengine: mediatek: Fix a possible deadlock error in mtk_cqdma_tx_status() [+ + +]
Author: Qiu-ji Chen <chenqiuji666@gmail.com>
Date:   Fri Sep 5 16:22:14 2025 -0400

    dmaengine: mediatek: Fix a possible deadlock error in mtk_cqdma_tx_status()
    
    [ Upstream commit 157ae5ffd76a2857ccb4b7ce40bc5a344ca00395 ]
    
    Fix a potential deadlock bug. Observe that in the mtk-cqdma.c
    file, functions like mtk_cqdma_issue_pending() and
    mtk_cqdma_free_active_desc() properly acquire the pc lock before the vc
    lock when handling pc and vc fields. However, mtk_cqdma_tx_status()
    violates this order by first acquiring the vc lock before invoking
    mtk_cqdma_find_active_desc(), which subsequently takes the pc lock. This
    reversed locking sequence (vc → pc) contradicts the established
    pc → vc order and creates deadlock risks.
    
    Fix the issue by moving the vc lock acquisition code from
    mtk_cqdma_find_active_desc() to mtk_cqdma_tx_status(). Ensure the pc lock
    is acquired before the vc lock in the calling function to maintain correct
    locking hierarchy. Note that since mtk_cqdma_find_active_desc() is a
    static function with only one caller (mtk_cqdma_tx_status()), this
    modification safely eliminates the deadlock possibility without affecting
    other components.
    
    This possible bug is found by an experimental static analysis tool
    developed by our team. This tool analyzes the locking APIs to extract
    function pairs that can be concurrently executed, and then analyzes the
    instructions in the paired functions to identify possible concurrency bugs
    including deadlocks, data races and atomicity violations.
    
    Fixes: b1f01e48df5a ("dmaengine: mediatek: Add MediaTek Command-Queue DMA controller for MT6765 SoC")
    Cc: stable@vger.kernel.org
    Signed-off-by: Qiu-ji Chen <chenqiuji666@gmail.com>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Link: https://lore.kernel.org/r/20250508073634.3719-1-chenqiuji666@gmail.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amd/amdgpu: Fix missing error return on kzalloc failure [+ + +]
Author: Colin Ian King <colin.i.king@gmail.com>
Date:   Tue Sep 2 13:40:50 2025 +0100

    drm/amd/amdgpu: Fix missing error return on kzalloc failure
    
    [ Upstream commit 467e00b30dfe75c4cfc2197ceef1fddca06adc25 ]
    
    Currently the kzalloc failure check just sets reports the failure
    and sets the variable ret to -ENOMEM, which is not checked later
    for this specific error. Fix this by just returning -ENOMEM rather
    than setting ret.
    
    Fixes: 4fb930715468 ("drm/amd/amdgpu: remove redundant host to psp cmd buf allocations")
    Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 1ee9d1a0962c13ba5ab7e47d33a80e3b8dc4b52e)
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amd/amdgpu: Fix style problems in amdgpu_psp.c [+ + +]
Author: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Date:   Fri Apr 28 17:22:20 2023 +0530

    drm/amd/amdgpu: Fix style problems in amdgpu_psp.c
    
    [ Upstream commit f14c8c3e1fc9e10c6d54999a96acb2b5087374df ]
    
    Fix the following checkpatch warnings & error in amdgpu_psp.c
    
    WARNING: Comparisons should place the constant on the right side of the test
    WARNING: braces {} are not necessary for single statement blocks
    WARNING: please, no space before tabs
    WARNING: braces {} are not necessary for single statement blocks
    ERROR: that open brace { should be on the previous line
    
    Suggested-by: Christian König <christian.koenig@amd.com>
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 467e00b30dfe ("drm/amd/amdgpu: Fix missing error return on kzalloc failure")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Check link_res->hpo_dp_link_enc before using it [+ + +]
Author: Alex Hung <alex.hung@amd.com>
Date:   Thu Jun 27 16:45:39 2024 -0600

    drm/amd/display: Check link_res->hpo_dp_link_enc before using it
    
    commit 0beca868cde8742240cd0038141c30482d2b7eb8 upstream.
    
    [WHAT & HOW]
    Functions dp_enable_link_phy and dp_disable_link_phy can pass link_res
    without initializing hpo_dp_link_enc and it is necessary to check for
    null before dereferencing.
    
    This fixes 2 FORWARD_NULL issues reported by Coverity.
    
    Reviewed-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
    Signed-off-by: Jerry Zuo <jerry.zuo@amd.com>
    Signed-off-by: Alex Hung <alex.hung@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    [ Minor context change fixed. ]
    Signed-off-by: Alva Lan <alvalan9@foxmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amd/display: Don't warn when missing DCE encoder caps [+ + +]
Author: Timur Kristóf <timur.kristof@gmail.com>
Date:   Thu Jul 31 11:43:50 2025 +0200

    drm/amd/display: Don't warn when missing DCE encoder caps
    
    [ Upstream commit 8246147f1fbaed522b8bcc02ca34e4260747dcfb ]
    
    On some GPUs the VBIOS just doesn't have encoder caps,
    or maybe not for every encoder.
    
    This isn't really a problem and it's handled well,
    so let's not litter the logs with it.
    
    Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Rodrigo Siqueira <siqueira@igalia.com>
    Reviewed-by: Alex Hung <alex.hung@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 33e0227ee96e62d034781e91f215e32fd0b1d512)
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd: Make flashing messages quieter [+ + +]
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Mon Jun 26 10:04:05 2023 -0500

    drm/amd: Make flashing messages quieter
    
    [ Upstream commit 1cc506f08b4c4688c729e48d7c665910ed330724 ]
    
    Debug messages related to the kernel process of flashing an updated
    IFWI are needlessly noisy and also confusing.
    
    Downgrade them to debug instead and clarify what they are actually
    doing.
    
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 467e00b30dfe ("drm/amd/amdgpu: Fix missing error return on kzalloc failure")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amdgpu: drop hw access in non-DC audio fini [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Wed Aug 6 10:47:50 2025 -0400

    drm/amdgpu: drop hw access in non-DC audio fini
    
    commit 71403f58b4bb6c13b71c05505593a355f697fd94 upstream.
    
    We already disable the audio pins in hw_fini so
    there is no need to do it again in sw_fini.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4481
    Cc: oushixiong <oushixiong1025@163.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 5eeb16ca727f11278b2917fd4311a7d7efb0bbd6)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu: Optimize RAS TA initialization and TA unload funcs [+ + +]
Author: Candice Li <candice.li@amd.com>
Date:   Tue Oct 25 18:07:44 2022 +0800

    drm/amdgpu: Optimize RAS TA initialization and TA unload funcs
    
    [ Upstream commit bf7d777289d106963fd2080d298e6b88b7263b66 ]
    
    1. Save TA unload psp response status
    2. Add RAS TA loading status check for initializaiton
    3. Drop RAS context teardown to allow RAS TA to be reloaded
    
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Candice Li <candice.li@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 467e00b30dfe ("drm/amd/amdgpu: Fix missing error return on kzalloc failure")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: remove the check of init status in psp_ras_initialize [+ + +]
Author: Tao Zhou <tao.zhou1@amd.com>
Date:   Thu Nov 10 14:37:08 2022 +0800

    drm/amdgpu: remove the check of init status in psp_ras_initialize
    
    [ Upstream commit 3e931368091f7d5d7902cee9d410eb6db2eea419 ]
    
    The initialized status indicates RAS TA is loaded, but in some cases
    (such as RAS fatal error) RAS TA could be destroyed although it's not
    unloaded. Hence we load RAS TA unconditionally here.
    
    Signed-off-by: Tao Zhou <tao.zhou1@amd.com>
    Reviewed-by: Candice Li <candice.li@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 467e00b30dfe ("drm/amd/amdgpu: Fix missing error return on kzalloc failure")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: Replace DRM_* with dev_* in amdgpu_psp.c [+ + +]
Author: Hawking Zhang <Hawking.Zhang@amd.com>
Date:   Sun Dec 31 18:14:23 2023 +0800

    drm/amdgpu: Replace DRM_* with dev_* in amdgpu_psp.c
    
    [ Upstream commit ac3ff8a90637e813005404a0110802aa384af4aa ]
    
    So kernel message has the device pcie bdf information,
    which helps issue debugging especially in multiple GPU
    system.
    
    Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 467e00b30dfe ("drm/amd/amdgpu: Fix missing error return on kzalloc failure")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: Skip TMR allocation if not required [+ + +]
Author: Lijo Lazar <lijo.lazar@amd.com>
Date:   Thu Nov 24 14:23:58 2022 +0530

    drm/amdgpu: Skip TMR allocation if not required
    
    [ Upstream commit 5b03127d4745d6848f208463390e6a76d489eb03 ]
    
    On ASICs with PSPv13.0.6, TMR is reserved at boot time. There is no need
    to allocate TMR region by driver. However, it's still required to send
    SETUP_TMR command to PSP.
    
    Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
    Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 467e00b30dfe ("drm/amd/amdgpu: Fix missing error return on kzalloc failure")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/bridge: ti-sn65dsi86: fix REFCLK setting [+ + +]
Author: Michael Walle <mwalle@kernel.org>
Date:   Thu Aug 21 14:23:41 2025 +0200

    drm/bridge: ti-sn65dsi86: fix REFCLK setting
    
    [ Upstream commit bdd5a14e660062114bdebaef9ad52adf04970a89 ]
    
    The bridge has three bootstrap pins which are sampled to determine the
    frequency of the external reference clock. The driver will also
    (over)write that setting. But it seems this is racy after the bridge is
    enabled. It was observed that although the driver write the correct
    value (by sniffing on the I2C bus), the register has the wrong value.
    The datasheet states that the GPIO lines have to be stable for at least
    5us after asserting the EN signal. Thus, there seems to be some logic
    which samples the GPIO lines and this logic appears to overwrite the
    register value which was set by the driver. Waiting 20us after
    asserting the EN line resolves this issue.
    
    Fixes: a095f15c00e2 ("drm/bridge: add support for sn65dsi86 bridge driver")
    Signed-off-by: Michael Walle <mwalle@kernel.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20250821122341.1257286-1-mwalle@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
e1000e: fix heap overflow in e1000_set_eeprom [+ + +]
Author: Vitaly Lifshits <vitaly.lifshits@intel.com>
Date:   Sun Aug 17 12:25:47 2025 +0300

    e1000e: fix heap overflow in e1000_set_eeprom
    
    commit 90fb7db49c6dbac961c6b8ebfd741141ffbc8545 upstream.
    
    Fix a possible heap overflow in e1000_set_eeprom function by adding
    input validation for the requested length of the change in the EEPROM.
    In addition, change the variable type from int to size_t for better
    code practices and rearrange declarations to RCT.
    
    Cc: stable@vger.kernel.org
    Fixes: bc7f75fa9788 ("[E1000E]: New pci-express e1000 driver (currently for ICH9 devices only)")
    Co-developed-by: Mikael Wessel <post@mikaelkw.online>
    Signed-off-by: Mikael Wessel <post@mikaelkw.online>
    Signed-off-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
    Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
fs: relax assertions on failure to encode file handles [+ + +]
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Thu Dec 19 12:53:01 2024 +0100

    fs: relax assertions on failure to encode file handles
    
    commit 974e3fe0ac61de85015bbe5a4990cf4127b304b2 upstream.
    
    Encoding file handles is usually performed by a filesystem >encode_fh()
    method that may fail for various reasons.
    
    The legacy users of exportfs_encode_fh(), namely, nfsd and
    name_to_handle_at(2) syscall are ready to cope with the possibility
    of failure to encode a file handle.
    
    There are a few other users of exportfs_encode_{fh,fid}() that
    currently have a WARN_ON() assertion when ->encode_fh() fails.
    Relax those assertions because they are wrong.
    
    The second linked bug report states commit 16aac5ad1fa9 ("ovl: support
    encoding non-decodable file handles") in v6.6 as the regressing commit,
    but this is not accurate.
    
    The aforementioned commit only increases the chances of the assertion
    and allows triggering the assertion with the reproducer using overlayfs,
    inotify and drop_caches.
    
    Triggering this assertion was always possible with other filesystems and
    other reasons of ->encode_fh() failures and more particularly, it was
    also possible with the exact same reproducer using overlayfs that is
    mounted with options index=on,nfs_export=on also on kernels < v6.6.
    Therefore, I am not listing the aforementioned commit as a Fixes commit.
    
    Backport hint: this patch will have a trivial conflict applying to
    v6.6.y, and other trivial conflicts applying to stable kernels < v6.6.
    
    Reported-by: syzbot+ec07f6f5ce62b858579f@syzkaller.appspotmail.com
    Tested-by: syzbot+ec07f6f5ce62b858579f@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/linux-unionfs/671fd40c.050a0220.4735a.024f.GAE@google.com/
    Reported-by: Dmitry Safonov <dima@arista.com>
    Closes: https://lore.kernel.org/linux-fsdevel/CAGrbwDTLt6drB9eaUagnQVgdPBmhLfqqxAf3F+Juqy_o6oP8uw@mail.gmail.com/
    Cc: stable@vger.kernel.org
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Link: https://lore.kernel.org/r/20241219115301.465396-1-amir73il@gmail.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Norbert Manthey <nmanthey@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

fs: writeback: fix use-after-free in __mark_inode_dirty() [+ + +]
Author: Jiufei Xue <jiufei.xue@samsung.com>
Date:   Mon Jul 28 18:07:15 2025 +0800

    fs: writeback: fix use-after-free in __mark_inode_dirty()
    
    [ Upstream commit d02d2c98d25793902f65803ab853b592c7a96b29 ]
    
    An use-after-free issue occurred when __mark_inode_dirty() get the
    bdi_writeback that was in the progress of switching.
    
    CPU: 1 PID: 562 Comm: systemd-random- Not tainted 6.6.56-gb4403bd46a8e #1
    ......
    pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : __mark_inode_dirty+0x124/0x418
    lr : __mark_inode_dirty+0x118/0x418
    sp : ffffffc08c9dbbc0
    ........
    Call trace:
     __mark_inode_dirty+0x124/0x418
     generic_update_time+0x4c/0x60
     file_modified+0xcc/0xd0
     ext4_buffered_write_iter+0x58/0x124
     ext4_file_write_iter+0x54/0x704
     vfs_write+0x1c0/0x308
     ksys_write+0x74/0x10c
     __arm64_sys_write+0x1c/0x28
     invoke_syscall+0x48/0x114
     el0_svc_common.constprop.0+0xc0/0xe0
     do_el0_svc+0x1c/0x28
     el0_svc+0x40/0xe4
     el0t_64_sync_handler+0x120/0x12c
     el0t_64_sync+0x194/0x198
    
    Root cause is:
    
    systemd-random-seed                         kworker
    ----------------------------------------------------------------------
    ___mark_inode_dirty                     inode_switch_wbs_work_fn
    
      spin_lock(&inode->i_lock);
      inode_attach_wb
      locked_inode_to_wb_and_lock_list
         get inode->i_wb
         spin_unlock(&inode->i_lock);
         spin_lock(&wb->list_lock)
      spin_lock(&inode->i_lock)
      inode_io_list_move_locked
      spin_unlock(&wb->list_lock)
      spin_unlock(&inode->i_lock)
                                        spin_lock(&old_wb->list_lock)
                                          inode_do_switch_wbs
                                            spin_lock(&inode->i_lock)
                                            inode->i_wb = new_wb
                                            spin_unlock(&inode->i_lock)
                                        spin_unlock(&old_wb->list_lock)
                                        wb_put_many(old_wb, nr_switched)
                                          cgwb_release
                                          old wb released
      wb_wakeup_delayed() accesses wb,
      then trigger the use-after-free
      issue
    
    Fix this race condition by holding inode spinlock until
    wb_wakeup_delayed() finished.
    
    Signed-off-by: Jiufei Xue <jiufei.xue@samsung.com>
    Link: https://lore.kernel.org/20250728100715.3863241-1-jiufei.xue@samsung.com
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
hwmon: mlxreg-fan: Prevent fans from getting stuck at 0 RPM [+ + +]
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Jul 30 23:17:15 2025 +0300

    hwmon: mlxreg-fan: Prevent fans from getting stuck at 0 RPM
    
    [ Upstream commit 1180c79fbf36e4c02e76ae4658509523437e52a4 ]
    
    The fans controlled by the driver can get stuck at 0 RPM if they are
    configured below a 20% duty cycle. The driver tries to avoid this by
    enforcing a minimum duty cycle of 20%, but this is done after the fans
    are registered with the thermal subsystem. This is too late as the
    thermal subsystem can set their current state before the driver is able
    to enforce the minimum duty cycle.
    
    Fix by setting the minimum duty cycle before registering the fans with
    the thermal subsystem.
    
    Fixes: d7efb2ebc7b3 ("hwmon: (mlxreg-fan) Extend driver to support multiply cooling devices")
    Reported-by: Nikolay Aleksandrov <razor@blackwall.org>
    Tested-by: Nikolay Aleksandrov <razor@blackwall.org>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Link: https://lore.kernel.org/r/20250730201715.1111133-1-vadimp@nvidia.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
i2c: designware: Fix an error handling path in i2c_dw_pci_probe() [+ + +]
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Fri Sep 5 20:38:31 2025 -0400

    i2c: designware: Fix an error handling path in i2c_dw_pci_probe()
    
    [ Upstream commit 1cfe51ef07ca3286581d612debfb0430eeccbb65 ]
    
    If navi_amd_register_client() fails, the previous i2c_dw_probe() call
    should be undone by a corresponding i2c_del_adapter() call, as already done
    in the remove function.
    
    Fixes: 17631e8ca2d3 ("i2c: designware: Add driver support for AMD NAVI GPU")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: <stable@vger.kernel.org> # v5.13+
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
    Link: https://lore.kernel.org/r/fcd9651835a32979df8802b2db9504c523a8ebbb.1747158983.git.christophe.jaillet@wanadoo.fr
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
i40e: Fix potential invalid access when MAC list is empty [+ + +]
Author: Zhen Ni <zhen.ni@easystack.cn>
Date:   Wed Aug 27 19:56:31 2025 +0800

    i40e: Fix potential invalid access when MAC list is empty
    
    [ Upstream commit a556f06338e1d5a85af0e32ecb46e365547f92b9 ]
    
    list_first_entry() never returns NULL - if the list is empty, it still
    returns a pointer to an invalid object, leading to potential invalid
    memory access when dereferenced.
    
    Fix this by using list_first_entry_or_null instead of list_first_entry.
    
    Fixes: e3219ce6a775 ("i40e: Add support for client interface for IWARP driver")
    Signed-off-by: Zhen Ni <zhen.ni@easystack.cn>
    Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
icmp: fix icmp_ndo_send address translation for reply direction [+ + +]
Author: Fabian Bläse <fabian@blaese.de>
Date:   Thu Aug 28 11:14:35 2025 +0200

    icmp: fix icmp_ndo_send address translation for reply direction
    
    [ Upstream commit c6dd1aa2cbb72b33e0569f3e71d95792beab5042 ]
    
    The icmp_ndo_send function was originally introduced to ensure proper
    rate limiting when icmp_send is called by a network device driver,
    where the packet's source address may have already been transformed
    by SNAT.
    
    However, the original implementation only considers the
    IP_CT_DIR_ORIGINAL direction for SNAT and always replaced the packet's
    source address with that of the original-direction tuple. This causes
    two problems:
    
    1. For SNAT:
       Reply-direction packets were incorrectly translated using the source
       address of the CT original direction, even though no translation is
       required.
    
    2. For DNAT:
       Reply-direction packets were not handled at all. In DNAT, the original
       direction's destination is translated. Therefore, in the reply
       direction the source address must be set to the reply-direction
       source, so rate limiting works as intended.
    
    Fix this by using the connection direction to select the correct tuple
    for source address translation, and adjust the pre-checks to handle
    reply-direction packets in case of DNAT.
    
    Additionally, wrap the `ct->status` access in READ_ONCE(). This avoids
    possible KCSAN reports about concurrent updates to `ct->status`.
    
    Fixes: 0b41713b6066 ("icmp: introduce helper for nat'd source address in network device context")
    Signed-off-by: Fabian Bläse <fabian@blaese.de>
    Cc: Jason A. Donenfeld <Jason@zx2c4.com>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
iio: chemical: pms7003: use aligned_s64 for timestamp [+ + +]
Author: David Lechner <dlechner@baylibre.com>
Date:   Fri Sep 5 23:00:42 2025 -0400

    iio: chemical: pms7003: use aligned_s64 for timestamp
    
    [ Upstream commit 6ffa698674053e82e811520642db2650d00d2c01 ]
    
    Follow the pattern of other drivers and use aligned_s64 for the
    timestamp. This will ensure that the timestamp is correctly aligned on
    all architectures.
    
    Also move the unaligned.h header while touching this since it was the
    only one not in alphabetical order.
    
    Fixes: 13e945631c2f ("iio:chemical:pms7003: Fix timestamp alignment and prevent data leak.")
    Signed-off-by: David Lechner <dlechner@baylibre.com>
    Reviewed-by: Nuno Sá <nuno.sa@analog.com>
    Link: https://patch.msgid.link/20250417-iio-more-timestamp-alignment-v1-4-eafac1e22318@baylibre.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    [ linux/unaligned.h => asm/unaligned.h ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: light: opt3001: fix deadlock due to concurrent flag access [+ + +]
Author: Luca Ceresoli <luca.ceresoli@bootlin.com>
Date:   Fri Sep 5 22:30:38 2025 -0400

    iio: light: opt3001: fix deadlock due to concurrent flag access
    
    [ Upstream commit f063a28002e3350088b4577c5640882bf4ea17ea ]
    
    The threaded IRQ function in this driver is reading the flag twice: once to
    lock a mutex and once to unlock it. Even though the code setting the flag
    is designed to prevent it, there are subtle cases where the flag could be
    true at the mutex_lock stage and false at the mutex_unlock stage. This
    results in the mutex not being unlocked, resulting in a deadlock.
    
    Fix it by making the opt3001_irq() code generally more robust, reading the
    flag into a variable and using the variable value at both stages.
    
    Fixes: 94a9b7b1809f ("iio: light: add support for TI's opt3001 light sensor")
    Cc: stable@vger.kernel.org
    Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
    Link: https://patch.msgid.link/20250321-opt3001-irq-fix-v1-1-6c520d851562@bootlin.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipv4: Fix NULL vs error pointer check in inet_blackhole_dev_init() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Tue Sep 2 09:36:08 2025 +0300

    ipv4: Fix NULL vs error pointer check in inet_blackhole_dev_init()
    
    [ Upstream commit a51160f8da850a65afbf165f5bbac7ffb388bf74 ]
    
    The inetdev_init() function never returns NULL.  Check for error
    pointers instead.
    
    Fixes: 22600596b675 ("ipv4: give an IPv4 dev to blackhole_netdev")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/aLaQWL9NguWmeM1i@stanley.mountain
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 6.1.151 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Sep 9 18:54:25 2025 +0200

    Linux 6.1.151
    
    Link: https://lore.kernel.org/r/20250907195607.664912704@linuxfoundation.org
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Miguel Ojeda <ojeda@kernel.org>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20250908151840.509077218@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mctp: return -ENOPROTOOPT for unknown getsockopt options [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Tue Sep 2 03:20:55 2025 -0700

    mctp: return -ENOPROTOOPT for unknown getsockopt options
    
    [ Upstream commit a125c8fb9ddbcb0602103a50727a476fd30dec01 ]
    
    In mctp_getsockopt(), unrecognized options currently return -EINVAL.
    In contrast, mctp_setsockopt() returns -ENOPROTOOPT for unknown
    options.
    
    Update mctp_getsockopt() to also return -ENOPROTOOPT for unknown
    options. This aligns the behavior of getsockopt() and setsockopt(),
    and matches the standard kernel socket API convention for handling
    unsupported options.
    
    Fixes: 99ce45d5e7db ("mctp: Implement extended addressing")
    Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Link: https://patch.msgid.link/20250902102059.1370008-1-alok.a.tiwari@oracle.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mISDN: Fix memory leak in dsp_hwec_enable() [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Thu Aug 28 16:14:57 2025 +0800

    mISDN: Fix memory leak in dsp_hwec_enable()
    
    [ Upstream commit 0704a3da7ce50f972e898bbda88d2692a22922d9 ]
    
    dsp_hwec_enable() allocates dup pointer by kstrdup(arg),
    but then it updates dup variable by strsep(&dup, ",").
    As a result when it calls kfree(dup), the dup variable may be
    a modified pointer that no longer points to the original allocated
    memory, causing a memory leak.
    
    The issue is the same pattern as fixed in commit c6a502c22999
    ("mISDN: Fix memory leak in dsp_pipeline_build()").
    
    Fixes: 9a4381618262 ("mISDN: Remove VLAs")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250828081457.36061-1-linmq006@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm, slub: refactor free debug processing [+ + +]
Author: Vlastimil Babka <vbabka@suse.cz>
Date:   Sun Sep 7 11:13:25 2025 -0400

    mm, slub: refactor free debug processing
    
    [ Upstream commit fa9b88e459d710cadf3b01e8a64eda00cc91cdd6 ]
    
    Since commit c7323a5ad078 ("mm/slub: restrict sysfs validation to debug
    caches and make it safe"), caches with debugging enabled use the
    free_debug_processing() function to do both freeing checks and actual
    freeing to partial list under list_lock, bypassing the fast paths.
    
    We will want to use the same path for CONFIG_SLUB_TINY, but without the
    debugging checks, so refactor the code so that free_debug_processing()
    does only the checks, while the freeing is handled by a new function
    free_to_partial_list().
    
    For consistency, change return parameter alloc_debug_processing() from
    int to bool and correct the !SLUB_DEBUG variant to return true and not
    false. This didn't matter until now, but will in the following changes.
    
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Acked-by: Mike Rapoport <rppt@linux.ibm.com>
    Reviewed-by: Christoph Lameter <cl@linux.com>
    Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
    Stable-dep-of: 850470a8413a ("mm: slub: avoid wake up kswapd in set_track_prepare")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm/slub: avoid accessing metadata when pointer is invalid in object_err() [+ + +]
Author: Li Qiong <liqiong@nfschina.com>
Date:   Sat Sep 6 21:26:41 2025 -0400

    mm/slub: avoid accessing metadata when pointer is invalid in object_err()
    
    [ Upstream commit b4efccec8d06ceb10a7d34d7b1c449c569d53770 ]
    
    object_err() reports details of an object for further debugging, such as
    the freelist pointer, redzone, etc. However, if the pointer is invalid,
    attempting to access object metadata can lead to a crash since it does
    not point to a valid object.
    
    One known path to the crash is when alloc_consistency_checks()
    determines the pointer to the allocated object is invalid because of a
    freelist corruption, and calls object_err() to report it. The debug code
    should report and handle the corruption gracefully and not crash in the
    process.
    
    In case the pointer is NULL or check_valid_pointer() returns false for
    the pointer, only print the pointer value and skip accessing metadata.
    
    Fixes: 81819f0fc828 ("SLUB core")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Li Qiong <liqiong@nfschina.com>
    Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mm: move page table sync declarations to linux/pgtable.h [+ + +]
Author: Harry Yoo <harry.yoo@oracle.com>
Date:   Mon Aug 18 11:02:04 2025 +0900

    mm: move page table sync declarations to linux/pgtable.h
    
    commit 7cc183f2e67d19b03ee5c13a6664b8c6cc37ff9d upstream.
    
    During our internal testing, we started observing intermittent boot
    failures when the machine uses 4-level paging and has a large amount of
    persistent memory:
    
      BUG: unable to handle page fault for address: ffffe70000000034
      #PF: supervisor write access in kernel mode
      #PF: error_code(0x0002) - not-present page
      PGD 0 P4D 0
      Oops: 0002 [#1] SMP NOPTI
      RIP: 0010:__init_single_page+0x9/0x6d
      Call Trace:
       <TASK>
       __init_zone_device_page+0x17/0x5d
       memmap_init_zone_device+0x154/0x1bb
       pagemap_range+0x2e0/0x40f
       memremap_pages+0x10b/0x2f0
       devm_memremap_pages+0x1e/0x60
       dev_dax_probe+0xce/0x2ec [device_dax]
       dax_bus_probe+0x6d/0xc9
       [... snip ...]
       </TASK>
    
    It turns out that the kernel panics while initializing vmemmap (struct
    page array) when the vmemmap region spans two PGD entries, because the new
    PGD entry is only installed in init_mm.pgd, but not in the page tables of
    other tasks.
    
    And looking at __populate_section_memmap():
      if (vmemmap_can_optimize(altmap, pgmap))
              // does not sync top level page tables
              r = vmemmap_populate_compound_pages(pfn, start, end, nid, pgmap);
      else
              // sync top level page tables in x86
              r = vmemmap_populate(start, end, nid, altmap);
    
    In the normal path, vmemmap_populate() in arch/x86/mm/init_64.c
    synchronizes the top level page table (See commit 9b861528a801 ("x86-64,
    mem: Update all PGDs for direct mapping and vmemmap mapping changes")) so
    that all tasks in the system can see the new vmemmap area.
    
    However, when vmemmap_can_optimize() returns true, the optimized path
    skips synchronization of top-level page tables.  This is because
    vmemmap_populate_compound_pages() is implemented in core MM code, which
    does not handle synchronization of the top-level page tables.  Instead,
    the core MM has historically relied on each architecture to perform this
    synchronization manually.
    
    We're not the first party to encounter a crash caused by not-sync'd top
    level page tables: earlier this year, Gwan-gyeong Mun attempted to address
    the issue [1] [2] after hitting a kernel panic when x86 code accessed the
    vmemmap area before the corresponding top-level entries were synced.  At
    that time, the issue was believed to be triggered only when struct page
    was enlarged for debugging purposes, and the patch did not get further
    updates.
    
    It turns out that current approach of relying on each arch to handle the
    page table sync manually is fragile because 1) it's easy to forget to sync
    the top level page table, and 2) it's also easy to overlook that the
    kernel should not access the vmemmap and direct mapping areas before the
    sync.
    
    # The solution: Make page table sync more code robust and harder to miss
    
    To address this, Dave Hansen suggested [3] [4] introducing
    {pgd,p4d}_populate_kernel() for updating kernel portion of the page tables
    and allow each architecture to explicitly perform synchronization when
    installing top-level entries.  With this approach, we no longer need to
    worry about missing the sync step, reducing the risk of future
    regressions.
    
    The new interface reuses existing ARCH_PAGE_TABLE_SYNC_MASK,
    PGTBL_P*D_MODIFIED and arch_sync_kernel_mappings() facility used by
    vmalloc and ioremap to synchronize page tables.
    
    pgd_populate_kernel() looks like this:
    static inline void pgd_populate_kernel(unsigned long addr, pgd_t *pgd,
                                           p4d_t *p4d)
    {
            pgd_populate(&init_mm, pgd, p4d);
            if (ARCH_PAGE_TABLE_SYNC_MASK & PGTBL_PGD_MODIFIED)
                    arch_sync_kernel_mappings(addr, addr);
    }
    
    It is worth noting that vmalloc() and apply_to_range() carefully
    synchronizes page tables by calling p*d_alloc_track() and
    arch_sync_kernel_mappings(), and thus they are not affected by this patch
    series.
    
    This series was hugely inspired by Dave Hansen's suggestion and hence
    added Suggested-by: Dave Hansen.
    
    Cc stable because lack of this series opens the door to intermittent
    boot failures.
    
    
    This patch (of 3):
    
    Move ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings() to
    linux/pgtable.h so that they can be used outside of vmalloc and ioremap.
    
    Link: https://lkml.kernel.org/r/20250818020206.4517-1-harry.yoo@oracle.com
    Link: https://lkml.kernel.org/r/20250818020206.4517-2-harry.yoo@oracle.com
    Link: https://lore.kernel.org/linux-mm/20250220064105.808339-1-gwan-gyeong.mun@intel.com [1]
    Link: https://lore.kernel.org/linux-mm/20250311114420.240341-1-gwan-gyeong.mun@intel.com [2]
    Link: https://lore.kernel.org/linux-mm/d1da214c-53d3-45ac-a8b6-51821c5416e4@intel.com [3]
    Link: https://lore.kernel.org/linux-mm/4d800744-7b88-41aa-9979-b245e8bf794b@intel.com  [4]
    Fixes: 8d400913c231 ("x86/vmemmap: handle unpopulated sub-pmd ranges")
    Signed-off-by: Harry Yoo <harry.yoo@oracle.com>
    Acked-by: Kiryl Shutsemau <kas@kernel.org>
    Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
    Reviewed-by: "Uladzislau Rezki (Sony)" <urezki@gmail.com>
    Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Alistair Popple <apopple@nvidia.com>
    Cc: Andrey Konovalov <andreyknvl@gmail.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: bibo mao <maobibo@loongson.cn>
    Cc: Borislav Betkov <bp@alien8.de>
    Cc: Christoph Lameter (Ampere) <cl@gentwo.org>
    Cc: Dennis Zhou <dennis@kernel.org>
    Cc: Dev Jain <dev.jain@arm.com>
    Cc: Dmitriy Vyukov <dvyukov@google.com>
    Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jane Chu <jane.chu@oracle.com>
    Cc: Joao Martins <joao.m.martins@oracle.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Kevin Brodsky <kevin.brodsky@arm.com>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Qi Zheng <zhengqi.arch@bytedance.com>
    Cc: Ryan Roberts <ryan.roberts@arm.com>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Thomas Gleinxer <tglx@linutronix.de>
    Cc: Thomas Huth <thuth@redhat.com>
    Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mm: slub: avoid wake up kswapd in set_track_prepare [+ + +]
Author: yangshiguang <yangshiguang@xiaomi.com>
Date:   Sun Sep 7 11:13:27 2025 -0400

    mm: slub: avoid wake up kswapd in set_track_prepare
    
    [ Upstream commit 850470a8413a8a78e772c4f6bd9fe81ec6bd5b0f ]
    
    set_track_prepare() can incur lock recursion.
    The issue is that it is called from hrtimer_start_range_ns
    holding the per_cpu(hrtimer_bases)[n].lock, but when enabled
    CONFIG_DEBUG_OBJECTS_TIMERS, may wake up kswapd in set_track_prepare,
    and try to hold the per_cpu(hrtimer_bases)[n].lock.
    
    Avoid deadlock caused by implicitly waking up kswapd by passing in
    allocation flags, which do not contain __GFP_KSWAPD_RECLAIM in the
    debug_objects_fill_pool() case. Inside stack depot they are processed by
    gfp_nested_mask().
    Since ___slab_alloc() has preemption disabled, we mask out
    __GFP_DIRECT_RECLAIM from the flags there.
    
    The oops looks something like:
    
    BUG: spinlock recursion on CPU#3, swapper/3/0
     lock: 0xffffff8a4bf29c80, .magic: dead4ead, .owner: swapper/3/0, .owner_cpu: 3
    Hardware name: Qualcomm Technologies, Inc. Popsicle based on SM8850 (DT)
    Call trace:
    spin_bug+0x0
    _raw_spin_lock_irqsave+0x80
    hrtimer_try_to_cancel+0x94
    task_contending+0x10c
    enqueue_dl_entity+0x2a4
    dl_server_start+0x74
    enqueue_task_fair+0x568
    enqueue_task+0xac
    do_activate_task+0x14c
    ttwu_do_activate+0xcc
    try_to_wake_up+0x6c8
    default_wake_function+0x20
    autoremove_wake_function+0x1c
    __wake_up+0xac
    wakeup_kswapd+0x19c
    wake_all_kswapds+0x78
    __alloc_pages_slowpath+0x1ac
    __alloc_pages_noprof+0x298
    stack_depot_save_flags+0x6b0
    stack_depot_save+0x14
    set_track_prepare+0x5c
    ___slab_alloc+0xccc
    __kmalloc_cache_noprof+0x470
    __set_page_owner+0x2bc
    post_alloc_hook[jt]+0x1b8
    prep_new_page+0x28
    get_page_from_freelist+0x1edc
    __alloc_pages_noprof+0x13c
    alloc_slab_page+0x244
    allocate_slab+0x7c
    ___slab_alloc+0x8e8
    kmem_cache_alloc_noprof+0x450
    debug_objects_fill_pool+0x22c
    debug_object_activate+0x40
    enqueue_hrtimer[jt]+0xdc
    hrtimer_start_range_ns+0x5f8
    ...
    
    Signed-off-by: yangshiguang <yangshiguang@xiaomi.com>
    Fixes: 5cf909c553e9 ("mm/slub: use stackdepot to save stack trace in objects")
    Cc: stable@vger.kernel.org
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/smc: fix one NULL pointer dereference in smc_ib_is_sg_need_sync() [+ + +]
Author: Liu Jian <liujian56@huawei.com>
Date:   Thu Aug 28 20:41:17 2025 +0800

    net/smc: fix one NULL pointer dereference in smc_ib_is_sg_need_sync()
    
    [ Upstream commit ba1e9421cf1a8369d25c3832439702a015d6b5f9 ]
    
    BUG: kernel NULL pointer dereference, address: 00000000000002ec
    PGD 0 P4D 0
    Oops: Oops: 0000 [#1] SMP PTI
    CPU: 28 UID: 0 PID: 343 Comm: kworker/28:1 Kdump: loaded Tainted: G        OE       6.17.0-rc2+ #9 NONE
    Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.15.0-1 04/01/2014
    Workqueue: smc_hs_wq smc_listen_work [smc]
    RIP: 0010:smc_ib_is_sg_need_sync+0x9e/0xd0 [smc]
    ...
    Call Trace:
     <TASK>
     smcr_buf_map_link+0x211/0x2a0 [smc]
     __smc_buf_create+0x522/0x970 [smc]
     smc_buf_create+0x3a/0x110 [smc]
     smc_find_rdma_v2_device_serv+0x18f/0x240 [smc]
     ? smc_vlan_by_tcpsk+0x7e/0xe0 [smc]
     smc_listen_find_device+0x1dd/0x2b0 [smc]
     smc_listen_work+0x30f/0x580 [smc]
     process_one_work+0x18c/0x340
     worker_thread+0x242/0x360
     kthread+0xe7/0x220
     ret_from_fork+0x13a/0x160
     ret_from_fork_asm+0x1a/0x30
     </TASK>
    
    If the software RoCE device is used, ibdev->dma_device is a null pointer.
    As a result, the problem occurs. Null pointer detection is added to
    prevent problems.
    
    Fixes: 0ef69e788411c ("net/smc: optimize for smc_sndbuf_sync_sg_for_device and smc_rmb_sync_sg_for_cpu")
    Signed-off-by: Liu Jian <liujian56@huawei.com>
    Reviewed-by: Guangguan Wang <guangguan.wang@linux.alibaba.com>
    Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
    Reviewed-by: D. Wythe <alibuda@linux.alibaba.com>
    Link: https://patch.msgid.link/20250828124117.2622624-1-liujian56@huawei.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net/smc: Remove validation of reserved bits in CLC Decline message [+ + +]
Author: Mahanta Jambigi <mjambigi@linux.ibm.com>
Date:   Tue Sep 2 10:20:41 2025 +0200

    net/smc: Remove validation of reserved bits in CLC Decline message
    
    [ Upstream commit cc282f73bc0cbdf3ee7af2f2d3a2ef4e6b19242d ]
    
    Currently SMC code is validating the reserved bits while parsing the incoming
    CLC decline message & when this validation fails, its treated as a protocol
    error. As a result, the SMC connection is terminated instead of falling back to
    TCP. As per RFC7609[1] specs we shouldn't be validating the reserved bits that
    is part of CLC message. This patch fixes this issue.
    
    CLC Decline message format can viewed here[2].
    
    [1] https://datatracker.ietf.org/doc/html/rfc7609#page-92
    [2] https://datatracker.ietf.org/doc/html/rfc7609#page-105
    
    Fixes: 8ade200c269f ("net/smc: add v2 format of CLC decline message")
    Signed-off-by: Mahanta Jambigi <mjambigi@linux.ibm.com>
    Reviewed-by: Sidraya Jayagond <sidraya@linux.ibm.com>
    Reviewed-by: Alexandra Winter <wintera@linux.ibm.com>
    Reviewed-by: Dust Li <dust.li@linux.alibaba.com>
    Link: https://patch.msgid.link/20250902082041.98996-1-mjambigi@linux.ibm.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: atm: fix memory leak in atm_register_sysfs when device_register fail [+ + +]
Author: Wang Liang <wangliang74@huawei.com>
Date:   Mon Sep 1 14:35:37 2025 +0800

    net: atm: fix memory leak in atm_register_sysfs when device_register fail
    
    [ Upstream commit 0a228624bcc00af41f281a2a84c928595a74c17d ]
    
    When device_register() return error in atm_register_sysfs(), which can be
    triggered by kzalloc fail in device_private_init() or other reasons,
    kmemleak reports the following memory leaks:
    
    unreferenced object 0xffff88810182fb80 (size 8):
      comm "insmod", pid 504, jiffies 4294852464
      hex dump (first 8 bytes):
        61 64 75 6d 6d 79 30 00                          adummy0.
      backtrace (crc 14dfadaf):
        __kmalloc_node_track_caller_noprof+0x335/0x450
        kvasprintf+0xb3/0x130
        kobject_set_name_vargs+0x45/0x120
        dev_set_name+0xa9/0xe0
        atm_register_sysfs+0xf3/0x220
        atm_dev_register+0x40b/0x780
        0xffffffffa000b089
        do_one_initcall+0x89/0x300
        do_init_module+0x27b/0x7d0
        load_module+0x54cd/0x5ff0
        init_module_from_file+0xe4/0x150
        idempotent_init_module+0x32c/0x610
        __x64_sys_finit_module+0xbd/0x120
        do_syscall_64+0xa8/0x270
        entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    When device_create_file() return error in atm_register_sysfs(), the same
    issue also can be triggered.
    
    Function put_device() should be called to release kobj->name memory and
    other device resource, instead of kfree().
    
    Fixes: 1fa5ae857bb1 ("driver core: get rid of struct device's bus_id string array")
    Signed-off-by: Wang Liang <wangliang74@huawei.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250901063537.1472221-1-wangliang74@huawei.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: microchip: linearize skb for tail-tagging switches [+ + +]
Author: Jakob Unterwurzacher <jakobunt@gmail.com>
Date:   Fri Sep 5 14:14:36 2025 -0400

    net: dsa: microchip: linearize skb for tail-tagging switches
    
    [ Upstream commit ba54bce747fa9e07896c1abd9b48545f7b4b31d2 ]
    
    The pointer arithmentic for accessing the tail tag only works
    for linear skbs.
    
    For nonlinear skbs, it reads uninitialized memory inside the
    skb headroom, essentially randomizing the tag. I have observed
    it gets set to 6 most of the time.
    
    Example where ksz9477_rcv thinks that the packet from port 1 comes from port 6
    (which does not exist for the ksz9896 that's in use), dropping the packet.
    Debug prints added by me (not included in this patch):
    
            [  256.645337] ksz9477_rcv:323 tag0=6
            [  256.645349] skb len=47 headroom=78 headlen=0 tailroom=0
                           mac=(64,14) mac_len=14 net=(78,0) trans=78
                           shinfo(txflags=0 nr_frags=1 gso(size=0 type=0 segs=0))
                           csum(0x0 start=0 offset=0 ip_summed=0 complete_sw=0 valid=0 level=0)
                           hash(0x0 sw=0 l4=0) proto=0x00f8 pkttype=1 iif=3
                           priority=0x0 mark=0x0 alloc_cpu=0 vlan_all=0x0
                           encapsulation=0 inner(proto=0x0000, mac=0, net=0, trans=0)
            [  256.645377] dev name=end1 feat=0x0002e10200114bb3
            [  256.645386] skb headroom: 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            [  256.645395] skb headroom: 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            [  256.645403] skb headroom: 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            [  256.645411] skb headroom: 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
            [  256.645420] skb headroom: 00000040: ff ff ff ff ff ff 00 1c 19 f2 e2 db 08 06
            [  256.645428] skb frag:     00000000: 00 01 08 00 06 04 00 01 00 1c 19 f2 e2 db 0a 02
            [  256.645436] skb frag:     00000010: 00 83 00 00 00 00 00 00 0a 02 a0 2f 00 00 00 00
            [  256.645444] skb frag:     00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
            [  256.645452] ksz_common_rcv:92 dsa_conduit_find_user returned NULL
    
    Call skb_linearize before trying to access the tag.
    
    This patch fixes ksz9477_rcv which is used by the ksz9896 I have at
    hand, and also applies the same fix to ksz8795_rcv which seems to have
    the same problem.
    
    Signed-off-by: Jakob Unterwurzacher <jakob.unterwurzacher@cherry.de>
    CC: stable@vger.kernel.org
    Fixes: 016e43a26bab ("net: dsa: ksz: Add KSZ8795 tag code")
    Fixes: 8b8010fb7876 ("dsa: add support for Microchip KSZ tail tagging")
    Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
    Link: https://patch.msgid.link/20250515072920.2313014-1-jakob.unterwurzacher@cherry.de
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dsa: microchip: update tag_ksz masks for KSZ9477 family [+ + +]
Author: Pieter Van Trappen <pieter.van.trappen@cern.ch>
Date:   Fri Sep 5 14:14:35 2025 -0400

    net: dsa: microchip: update tag_ksz masks for KSZ9477 family
    
    [ Upstream commit 3f464b193d40e49299dcd087b10cc3b77cbbea68 ]
    
    Remove magic number 7 by introducing a GENMASK macro instead.
    Remove magic number 0x80 by using the BIT macro instead.
    
    Signed-off-by: Pieter Van Trappen <pieter.van.trappen@cern.ch>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://patch.msgid.link/20240909134301.75448-1-vtpieter@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: ba54bce747fa ("net: dsa: microchip: linearize skb for tail-tagging switches")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: ethernet: mtk_eth_soc: fix tx vlan tag for llc packets [+ + +]
Author: Felix Fietkau <nbd@nbd.name>
Date:   Sun Aug 31 20:20:07 2025 +0200

    net: ethernet: mtk_eth_soc: fix tx vlan tag for llc packets
    
    [ Upstream commit d4736737110ffa83d29f1c5d17b26113864205f6 ]
    
    When sending llc packets with vlan tx offload, the hardware fails to
    actually add the tag. Deal with this by fixing it up in software.
    
    Fixes: 656e705243fd ("net-next: mediatek: add support for MT7623 ethernet")
    Reported-by: Thibaut VARENE <hacks@slashdirt.org>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250831182007.51619-1-nbd@nbd.name
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: macb: Fix tx_ptr_lock locking [+ + +]
Author: Sean Anderson <sean.anderson@linux.dev>
Date:   Fri Aug 29 10:35:21 2025 -0400

    net: macb: Fix tx_ptr_lock locking
    
    [ Upstream commit 6bc8a5098bf4a365c4086a4a4130bfab10a58260 ]
    
    macb_start_xmit and macb_tx_poll can be called with bottom-halves
    disabled (e.g. from softirq) as well as with interrupts disabled (with
    netpoll). Because of this, all other functions taking tx_ptr_lock must
    use spin_lock_irqsave.
    
    Fixes: 138badbc21a0 ("net: macb: use NAPI for TX completion path")
    Reported-by: Mike Galbraith <efault@gmx.de>
    Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
    Link: https://patch.msgid.link/20250829143521.1686062-1-sean.anderson@linux.dev
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: pcs: rzn1-miic: Correct MODCTRL register offset [+ + +]
Author: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Date:   Mon Sep 1 12:20:19 2025 +0100

    net: pcs: rzn1-miic: Correct MODCTRL register offset
    
    commit a7195a3d67dace056af7ca65144a11874df79562 upstream.
    
    Correct the Mode Control Register (MODCTRL) offset for RZ/N MIIC.
    According to the R-IN Engine and Ethernet Peripherals Manual (Rev.1.30)
    [0], Table 10.1 "Ethernet Accessory Register List", MODCTRL is at offset
    0x8, not 0x20 as previously defined.
    
    Offset 0x20 actually maps to the Port Trigger Control Register (PTCTRL),
    which controls PTP_MODE[3:0] and RGMII_CLKSEL[4]. Using this incorrect
    definition prevented the driver from configuring the SW_MODE[4:0] bits
    in MODCTRL, which control the internal connection of Ethernet ports. As
    a result, the MIIC could not be switched into the correct mode, leading
    to link setup failures and non-functional Ethernet ports on affected
    systems.
    
    [0] https://www.renesas.com/en/document/mah/rzn1d-group-rzn1s-group-rzn1l-group-users-manual-r-engine-and-ethernet-peripherals?r=1054571
    
    Fixes: 7dc54d3b8d91 ("net: pcs: add Renesas MII converter driver")
    Cc: stable@kernel.org
    Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Link: https://patch.msgid.link/20250901112019.16278-1-prabhakar.mahadev-lad.rj@bp.renesas.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: thunder_bgx: add a missing of_node_put [+ + +]
Author: Rosen Penev <rosenp@gmail.com>
Date:   Mon Sep 1 14:30:18 2025 -0700

    net: thunder_bgx: add a missing of_node_put
    
    [ Upstream commit 9d28f94912589f04ab51fbccaef287d4f40e0d1f ]
    
    phy_np needs to get freed, just like the other child nodes.
    
    Fixes: 5fc7cf179449 ("net: thunderx: Cleanup PHY probing code.")
    Signed-off-by: Rosen Penev <rosenp@gmail.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250901213018.47392-1-rosenp@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: thunder_bgx: decrement cleanup index before use [+ + +]
Author: Rosen Penev <rosenp@gmail.com>
Date:   Mon Sep 1 14:33:14 2025 -0700

    net: thunder_bgx: decrement cleanup index before use
    
    [ Upstream commit 9e3d71a92e561ccc77025689dab25d201fee7a3e ]
    
    All paths in probe that call goto defer do so before assigning phydev
    and thus it makes sense to cleanup the prior index. It also fixes a bug
    where index 0 does not get cleaned up.
    
    Fixes: b7d3e3d3d21a ("net: thunderx: Don't leak phy device references on -EPROBE_DEFER condition.")
    Signed-off-by: Rosen Penev <rosenp@gmail.com>
    Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250901213314.48599-1-rosenp@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netfilter: br_netfilter: do not check confirmed bit in br_nf_local_in() after confirm [+ + +]
Author: Wang Liang <wangliang74@huawei.com>
Date:   Fri Aug 22 11:52:19 2025 +0800

    netfilter: br_netfilter: do not check confirmed bit in br_nf_local_in() after confirm
    
    [ Upstream commit 479a54ab92087318514c82428a87af2d7af1a576 ]
    
    When send a broadcast packet to a tap device, which was added to a bridge,
    br_nf_local_in() is called to confirm the conntrack. If another conntrack
    with the same hash value is added to the hash table, which can be
    triggered by a normal packet to a non-bridge device, the below warning
    may happen.
    
      ------------[ cut here ]------------
      WARNING: CPU: 1 PID: 96 at net/bridge/br_netfilter_hooks.c:632 br_nf_local_in+0x168/0x200
      CPU: 1 UID: 0 PID: 96 Comm: tap_send Not tainted 6.17.0-rc2-dirty #44 PREEMPT(voluntary)
      RIP: 0010:br_nf_local_in+0x168/0x200
      Call Trace:
       <TASK>
       nf_hook_slow+0x3e/0xf0
       br_pass_frame_up+0x103/0x180
       br_handle_frame_finish+0x2de/0x5b0
       br_nf_hook_thresh+0xc0/0x120
       br_nf_pre_routing_finish+0x168/0x3a0
       br_nf_pre_routing+0x237/0x5e0
       br_handle_frame+0x1ec/0x3c0
       __netif_receive_skb_core+0x225/0x1210
       __netif_receive_skb_one_core+0x37/0xa0
       netif_receive_skb+0x36/0x160
       tun_get_user+0xa54/0x10c0
       tun_chr_write_iter+0x65/0xb0
       vfs_write+0x305/0x410
       ksys_write+0x60/0xd0
       do_syscall_64+0xa4/0x260
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
       </TASK>
      ---[ end trace 0000000000000000 ]---
    
    To solve the hash conflict, nf_ct_resolve_clash() try to merge the
    conntracks, and update skb->_nfct. However, br_nf_local_in() still use the
    old ct from local variable 'nfct' after confirm(), which leads to this
    warning.
    
    If confirm() does not insert the conntrack entry and return NF_DROP, the
    warning may also occur. There is no need to reserve the WARN_ON_ONCE, just
    remove it.
    
    Link: https://lore.kernel.org/netdev/20250820043329.2902014-1-wangliang74@huawei.com/
    Fixes: 62e7151ae3eb ("netfilter: bridge: confirm multicast packets before passing them up the stack")
    Suggested-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Wang Liang <wangliang74@huawei.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

netfilter: conntrack: helper: Replace -EEXIST by -EBUSY [+ + +]
Author: Phil Sutter <phil@nwl.cc>
Date:   Mon Aug 18 13:22:20 2025 +0200

    netfilter: conntrack: helper: Replace -EEXIST by -EBUSY
    
    [ Upstream commit 54416fd76770bd04fc3c501810e8d673550bab26 ]
    
    The helper registration return value is passed-through by module_init
    callbacks which modprobe confuses with the harmless -EEXIST returned
    when trying to load an already loaded module.
    
    Make sure modprobe fails so users notice their helper has not been
    registered and won't work.
    
    Suggested-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Fixes: 12f7a505331e ("netfilter: add user-space connection tracking helper infrastructure")
    Signed-off-by: Phil Sutter <phil@nwl.cc>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ocfs2: prevent release journal inode after journal shutdown [+ + +]
Author: Edward Adam Davis <eadavis@qq.com>
Date:   Tue Aug 19 21:41:02 2025 +0800

    ocfs2: prevent release journal inode after journal shutdown
    
    commit f46e8ef8bb7b452584f2e75337b619ac51a7cadf upstream.
    
    Before calling ocfs2_delete_osb(), ocfs2_journal_shutdown() has already
    been executed in ocfs2_dismount_volume(), so osb->journal must be NULL.
    Therefore, the following calltrace will inevitably fail when it reaches
    jbd2_journal_release_jbd_inode().
    
    ocfs2_dismount_volume()->
      ocfs2_delete_osb()->
        ocfs2_free_slot_info()->
          __ocfs2_free_slot_info()->
            evict()->
              ocfs2_evict_inode()->
                ocfs2_clear_inode()->
                  jbd2_journal_release_jbd_inode(osb->journal->j_journal,
    
    Adding osb->journal checks will prevent null-ptr-deref during the above
    execution path.
    
    Link: https://lkml.kernel.org/r/tencent_357489BEAEE4AED74CBD67D246DBD2C4C606@qq.com
    Fixes: da5e7c87827e ("ocfs2: cleanup journal init and shutdown")
    Signed-off-by: Edward Adam Davis <eadavis@qq.com>
    Reported-by: syzbot+47d8cb2f2cc1517e515a@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=47d8cb2f2cc1517e515a
    Tested-by: syzbot+47d8cb2f2cc1517e515a@syzkaller.appspotmail.com
    Reviewed-by: Mark Tinguely <mark.tinguely@oracle.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
PCI/MSI: Add an option to write MSIX ENTRY_DATA before any reads [+ + +]
Author: Jonathan Currier <dullfire@yahoo.com>
Date:   Sat Sep 6 16:48:26 2025 -0400

    PCI/MSI: Add an option to write MSIX ENTRY_DATA before any reads
    
    [ Upstream commit cf761e3dacc6ad5f65a4886d00da1f9681e6805a ]
    
    Commit 7d5ec3d36123 ("PCI/MSI: Mask all unused MSI-X entries") introduced a
    readl() from ENTRY_VECTOR_CTRL before the writel() to ENTRY_DATA.
    
    This is correct, however some hardware, like the Sun Neptune chips, the NIU
    module, will cause an error and/or fatal trap if any MSIX table entry is
    read before the corresponding ENTRY_DATA field is written to.
    
    Add an optional early writel() in msix_prepare_msi_desc().
    
    Fixes: 7d5ec3d36123 ("PCI/MSI: Mask all unused MSI-X entries")
    Signed-off-by: Jonathan Currier <dullfire@yahoo.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/all/20241117234843.19236-2-dullfire@yahoo.com
    [ Applied workaround to msix_setup_msi_descs() instead of msix_prepare_msi_desc() ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
pcmcia: Add error handling for add_interval() in do_validate_mem() [+ + +]
Author: Wentao Liang <vulab@iscas.ac.cn>
Date:   Mon Jan 20 21:10:06 2025 +0800

    pcmcia: Add error handling for add_interval() in do_validate_mem()
    
    [ Upstream commit 4a81f78caa53e0633cf311ca1526377d9bff7479 ]
    
    In the do_validate_mem(), the call to add_interval() does not
    handle errors. If kmalloc() fails in add_interval(), it could
    result in a null pointer being inserted into the linked list,
    leading to illegal memory access when sub_interval() is called
    next.
    
    This patch adds an error handling for the add_interval(). If
    add_interval() returns an error, the function will return early
    with the error code.
    
    Fixes: 7b4884ca8853 ("pcmcia: validate late-added resources")
    Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pcmcia: Fix a NULL pointer dereference in __iodyn_find_io_region() [+ + +]
Author: Ma Ke <make24@iscas.ac.cn>
Date:   Tue Aug 12 15:25:09 2025 +0800

    pcmcia: Fix a NULL pointer dereference in __iodyn_find_io_region()
    
    commit 44822df89e8f3386871d9cad563ece8e2fd8f0e7 upstream.
    
    In __iodyn_find_io_region(), pcmcia_make_resource() is assigned to
    res and used in pci_bus_alloc_resource(). There is a dereference of res
    in pci_bus_alloc_resource(), which could lead to a NULL pointer
    dereference on failure of pcmcia_make_resource().
    
    Fix this bug by adding a check of res.
    
    Cc: stable@vger.kernel.org
    Fixes: 49b1153adfe1 ("pcmcia: move all pcmcia_resource_ops providers into one module")
    Signed-off-by: Ma Ke <make24@iscas.ac.cn>
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

pcmcia: omap: Add missing check for platform_get_resource [+ + +]
Author: Chen Ni <nichen@iscas.ac.cn>
Date:   Thu Mar 20 14:39:56 2025 +0800

    pcmcia: omap: Add missing check for platform_get_resource
    
    [ Upstream commit ecef14f70ec9344a10c817248d2ac6cddee5921e ]
    
    Add missing check for platform_get_resource() and return error if it fails
    to catch the error.
    
    Fixes: d87d44f7ab35 ("ARM: omap1: move CF chipselect setup to board file")
    Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
    Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
phy: mscc: Stop taking ts_lock for tx_queue and use its own lock [+ + +]
Author: Horatiu Vultur <horatiu.vultur@microchip.com>
Date:   Tue Sep 2 14:12:59 2025 +0200

    phy: mscc: Stop taking ts_lock for tx_queue and use its own lock
    
    [ Upstream commit 9b2bfdbf43adb9929c5ddcdd96efedbf1c88cf53 ]
    
    When transmitting a PTP frame which is timestamp using 2 step, the
    following warning appears if CONFIG_PROVE_LOCKING is enabled:
    =============================
    [ BUG: Invalid wait context ]
    6.17.0-rc1-00326-ge6160462704e #427 Not tainted
    -----------------------------
    ptp4l/119 is trying to lock:
    c2a44ed4 (&vsc8531->ts_lock){+.+.}-{3:3}, at: vsc85xx_txtstamp+0x50/0xac
    other info that might help us debug this:
    context-{4:4}
    4 locks held by ptp4l/119:
     #0: c145f068 (rcu_read_lock_bh){....}-{1:2}, at: __dev_queue_xmit+0x58/0x1440
     #1: c29df974 (dev->qdisc_tx_busylock ?: &qdisc_tx_busylock){+...}-{2:2}, at: __dev_queue_xmit+0x5c4/0x1440
     #2: c2aaaad0 (_xmit_ETHER#2){+.-.}-{2:2}, at: sch_direct_xmit+0x108/0x350
     #3: c2aac170 (&lan966x->tx_lock){+.-.}-{2:2}, at: lan966x_port_xmit+0xd0/0x350
    stack backtrace:
    CPU: 0 UID: 0 PID: 119 Comm: ptp4l Not tainted 6.17.0-rc1-00326-ge6160462704e #427 NONE
    Hardware name: Generic DT based system
    Call trace:
     unwind_backtrace from show_stack+0x10/0x14
     show_stack from dump_stack_lvl+0x7c/0xac
     dump_stack_lvl from __lock_acquire+0x8e8/0x29dc
     __lock_acquire from lock_acquire+0x108/0x38c
     lock_acquire from __mutex_lock+0xb0/0xe78
     __mutex_lock from mutex_lock_nested+0x1c/0x24
     mutex_lock_nested from vsc85xx_txtstamp+0x50/0xac
     vsc85xx_txtstamp from lan966x_fdma_xmit+0xd8/0x3a8
     lan966x_fdma_xmit from lan966x_port_xmit+0x1bc/0x350
     lan966x_port_xmit from dev_hard_start_xmit+0xc8/0x2c0
     dev_hard_start_xmit from sch_direct_xmit+0x8c/0x350
     sch_direct_xmit from __dev_queue_xmit+0x680/0x1440
     __dev_queue_xmit from packet_sendmsg+0xfa4/0x1568
     packet_sendmsg from __sys_sendto+0x110/0x19c
     __sys_sendto from sys_send+0x18/0x20
     sys_send from ret_fast_syscall+0x0/0x1c
    Exception stack(0xf0b05fa8 to 0xf0b05ff0)
    5fa0:                   00000001 0000000e 0000000e 0004b47a 0000003a 00000000
    5fc0: 00000001 0000000e 00000000 00000121 0004af58 00044874 00000000 00000000
    5fe0: 00000001 bee9d420 00025a10 b6e75c7c
    
    So, instead of using the ts_lock for tx_queue, use the spinlock that
    skb_buff_head has.
    
    Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
    Fixes: 7d272e63e0979d ("net: phy: mscc: timestamping and PHC support")
    Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
    Link: https://patch.msgid.link/20250902121259.3257536-1-horatiu.vultur@microchip.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ppp: fix memory leak in pad_compress_skb [+ + +]
Author: Qingfang Deng <dqfext@gmail.com>
Date:   Wed Sep 3 18:07:26 2025 +0800

    ppp: fix memory leak in pad_compress_skb
    
    [ Upstream commit 4844123fe0b853a4982c02666cb3fd863d701d50 ]
    
    If alloc_skb() fails in pad_compress_skb(), it returns NULL without
    releasing the old skb. The caller does:
    
        skb = pad_compress_skb(ppp, skb);
        if (!skb)
            goto drop;
    
    drop:
        kfree_skb(skb);
    
    When pad_compress_skb() returns NULL, the reference to the old skb is
    lost and kfree_skb(skb) ends up doing nothing, leading to a memory leak.
    
    Align pad_compress_skb() semantics with realloc(): only free the old
    skb if allocation and compression succeed.  At the call site, use the
    new_skb variable so the original skb is not lost when pad_compress_skb()
    fails.
    
    Fixes: b3f9b92a6ec1 ("[PPP]: add PPP MPPE encryption module")
    Signed-off-by: Qingfang Deng <dqfext@gmail.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Yue Haibing <yuehaibing@huawei.com>
    Link: https://patch.msgid.link/20250903100726.269839-1-dqfext@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
proc: fix missing pde_set_flags() for net proc files [+ + +]
Author: wangzijie <wangzijie1@honor.com>
Date:   Mon Aug 18 20:31:02 2025 +0800

    proc: fix missing pde_set_flags() for net proc files
    
    commit 2ce3d282bd5050fca8577defeff08ada0d55d062 upstream.
    
    To avoid potential UAF issues during module removal races, we use
    pde_set_flags() to save proc_ops flags in PDE itself before
    proc_register(), and then use pde_has_proc_*() helpers instead of directly
    dereferencing pde->proc_ops->*.
    
    However, the pde_set_flags() call was missing when creating net related
    proc files.  This omission caused incorrect behavior which FMODE_LSEEK was
    being cleared inappropriately in proc_reg_open() for net proc files.  Lars
    reported it in this link[1].
    
    Fix this by ensuring pde_set_flags() is called when register proc entry,
    and add NULL check for proc_ops in pde_set_flags().
    
    [wangzijie1@honor.com: stash pde->proc_ops in a local const variable, per Christian]
      Link: https://lkml.kernel.org/r/20250821105806.1453833-1-wangzijie1@honor.com
    Link: https://lkml.kernel.org/r/20250818123102.959595-1-wangzijie1@honor.com
    Link: https://lore.kernel.org/all/20250815195616.64497967@chagall.paradoxon.rec/ [1]
    Fixes: ff7ec8dc1b64 ("proc: use the same treatment to check proc_lseek as ones for proc_read_iter et.al")
    Signed-off-by: wangzijie <wangzijie1@honor.com>
    Reported-by: Lars Wendler <polynomial-c@gmx.de>
    Tested-by: Stefano Brivio <sbrivio@redhat.com>
    Tested-by: Petr Vaněk <pv@excello.cz>
    Tested by: Lars Wendler <polynomial-c@gmx.de>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: "Edgecombe, Rick P" <rick.p.edgecombe@intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Jiri Slaby <jirislaby@kernel.org>
    Cc: Kirill A. Shutemov <k.shutemov@gmail.com>
    Cc: wangzijie <wangzijie1@honor.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "drm/amdgpu: Avoid extra evict-restore process." [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Aug 29 15:36:52 2025 -0400

    Revert "drm/amdgpu: Avoid extra evict-restore process."
    
    This reverts commit 71598a5a7797f0052aaa7bcff0b8d4b8f20f1441 which is
    commit 1f02f2044bda1db1fd995bc35961ab075fa7b5a2 upstream.
    
    This commit introduced a regression, however the fix for the regression:
    aa5fc4362fac ("drm/amdgpu: fix task hang from failed job submission
    during process kill") depends on things not yet present in 6.12.y and
    older kernels.  Since this commit is more of an optimization, just
    revert it for 6.12.y and older stable kernels.
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org # 6.1.x - 6.12.x
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: lpfc: Fix buffer free/clear order in deferred receive path [+ + +]
Author: John Evans <evans1210144@gmail.com>
Date:   Thu Aug 28 12:40:08 2025 +0800

    scsi: lpfc: Fix buffer free/clear order in deferred receive path
    
    commit 9dba9a45c348e8460da97c450cddf70b2056deb3 upstream.
    
    Fix a use-after-free window by correcting the buffer release sequence in
    the deferred receive path. The code freed the RQ buffer first and only
    then cleared the context pointer under the lock. Concurrent paths (e.g.,
    ABTS and the repost path) also inspect and release the same pointer under
    the lock, so the old order could lead to double-free/UAF.
    
    Note that the repost path already uses the correct pattern: detach the
    pointer under the lock, then free it after dropping the lock. The
    deferred path should do the same.
    
    Fixes: 472e146d1cf3 ("scsi: lpfc: Correct upcalling nvmet_fc transport during io done downcall")
    Cc: stable@vger.kernel.org
    Signed-off-by: John Evans <evans1210144@gmail.com>
    Link: https://lore.kernel.org/r/20250828044008.743-1-evans1210144@gmail.com
    Reviewed-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftest: net: Fix weird setsockopt() in bind_bhash.c. [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Wed Sep 3 22:28:51 2025 +0000

    selftest: net: Fix weird setsockopt() in bind_bhash.c.
    
    [ Upstream commit fd2004d82d8d8faa94879e3de3096c8511728637 ]
    
    bind_bhash.c passes (SO_REUSEADDR | SO_REUSEPORT) to setsockopt().
    
    In the asm-generic definition, the value happens to match with the
    bare SO_REUSEPORT, (2 | 15) == 15, but not on some arch.
    
    arch/alpha/include/uapi/asm/socket.h:18:#define SO_REUSEADDR    0x0004
    arch/alpha/include/uapi/asm/socket.h:24:#define SO_REUSEPORT    0x0200
    arch/mips/include/uapi/asm/socket.h:24:#define SO_REUSEADDR     0x0004  /* Allow reuse of local addresses.  */
    arch/mips/include/uapi/asm/socket.h:33:#define SO_REUSEPORT 0x0200      /* Allow local address and port reuse.  */
    arch/parisc/include/uapi/asm/socket.h:12:#define SO_REUSEADDR   0x0004
    arch/parisc/include/uapi/asm/socket.h:18:#define SO_REUSEPORT   0x0200
    arch/sparc/include/uapi/asm/socket.h:13:#define SO_REUSEADDR    0x0004
    arch/sparc/include/uapi/asm/socket.h:20:#define SO_REUSEPORT    0x0200
    include/uapi/asm-generic/socket.h:12:#define SO_REUSEADDR       2
    include/uapi/asm-generic/socket.h:27:#define SO_REUSEPORT       15
    
    Let's pass SO_REUSEPORT only.
    
    Fixes: c35ecb95c448 ("selftests/net: Add test for timing a bind request to a port with a populated bhash entry")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20250903222938.2601522-1-kuniyu@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
slub: Reflow ___slab_alloc() [+ + +]
Author: Chengming Zhou <zhouchengming@bytedance.com>
Date:   Sun Sep 7 11:13:26 2025 -0400

    slub: Reflow ___slab_alloc()
    
    [ Upstream commit 24c6a097b5a270e05c6e99a99da66b91be81fd7d ]
    
    The get_partial() interface used in ___slab_alloc() may return a single
    object in the "kmem_cache_debug(s)" case, in which we will just return
    the "freelist" object.
    
    Move this handling up to prepare for later changes.
    
    And the "pfmemalloc_match()" part is not needed for node partial slab,
    since we already check this in the get_partial_node().
    
    Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
    Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
    Tested-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
    Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Stable-dep-of: 850470a8413a ("mm: slub: avoid wake up kswapd in set_track_prepare")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
spi: spi-fsl-lpspi: Fix transmissions when using CONT [+ + +]
Author: Larisa Grigore <larisa.grigore@nxp.com>
Date:   Thu Aug 28 11:14:40 2025 +0100

    spi: spi-fsl-lpspi: Fix transmissions when using CONT
    
    [ Upstream commit 782a7c73078e1301c0c427f21c06377d77dfa541 ]
    
    Commit 6a130448498c ("spi: lpspi: Fix wrong transmission when don't use
    CONT") breaks transmissions when CONT is used. The TDIE interrupt should
    not be disabled in all cases. If CONT is used and the TX transfer is not
    yet completed yet, but the interrupt handler is called because there are
    characters to be received, TDIE is replaced with FCIE. When the transfer
    is finally completed, SR_TDF is set but the interrupt handler isn't
    called again.
    
    Fixes: 6a130448498c ("spi: lpspi: Fix wrong transmission when don't use CONT")
    Signed-off-by: Larisa Grigore <larisa.grigore@nxp.com>
    Signed-off-by: James Clark <james.clark@linaro.org>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Link: https://patch.msgid.link/20250828-james-nxp-lpspi-v2-1-6262b9aa9be4@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: spi-fsl-lpspi: Reset FIFO and disable module on transfer abort [+ + +]
Author: Larisa Grigore <larisa.grigore@nxp.com>
Date:   Thu Aug 28 11:14:42 2025 +0100

    spi: spi-fsl-lpspi: Reset FIFO and disable module on transfer abort
    
    [ Upstream commit e811b088a3641861fc9d2b2b840efc61a0f1907d ]
    
    In DMA mode fsl_lpspi_reset() is always called at the end, even when the
    transfer is aborted. In PIO mode aborts skip the reset leaving the FIFO
    filled and the module enabled.
    
    Fix it by always calling fsl_lpspi_reset().
    
    Fixes: a15dc3d657fa ("spi: lpspi: Fix CLK pin becomes low before one transfer")
    Signed-off-by: Larisa Grigore <larisa.grigore@nxp.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: James Clark <james.clark@linaro.org>
    Link: https://patch.msgid.link/20250828-james-nxp-lpspi-v2-3-6262b9aa9be4@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: spi-fsl-lpspi: Set correct chip-select polarity bit [+ + +]
Author: Larisa Grigore <larisa.grigore@nxp.com>
Date:   Thu Aug 28 11:14:41 2025 +0100

    spi: spi-fsl-lpspi: Set correct chip-select polarity bit
    
    [ Upstream commit cbe33705864ba2697a2939de715b81538cf32430 ]
    
    The driver currently supports multiple chip-selects, but only sets the
    polarity for the first one (CS 0). Fix it by setting the PCSPOL bit for
    the desired chip-select.
    
    Fixes: 5314987de5e5 ("spi: imx: add lpspi bus driver")
    Signed-off-by: Larisa Grigore <larisa.grigore@nxp.com>
    Signed-off-by: James Clark <james.clark@linaro.org>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Link: https://patch.msgid.link/20250828-james-nxp-lpspi-v2-2-6262b9aa9be4@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

spi: tegra114: Don't fail set_cs_timing when delays are zero [+ + +]
Author: Aaron Kling <webgeek1234@gmail.com>
Date:   Fri Sep 5 23:37:10 2025 -0400

    spi: tegra114: Don't fail set_cs_timing when delays are zero
    
    [ Upstream commit 4426e6b4ecf632bb75d973051e1179b8bfac2320 ]
    
    The original code would skip null delay pointers, but when the pointers
    were converted to point within the spi_device struct, the check was not
    updated to skip delays of zero. Hence all spi devices that didn't set
    delays would fail to probe.
    
    Fixes: 04e6bb0d6bb1 ("spi: modify set_cs_timing parameter")
    Cc: stable@vger.kernel.org
    Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
    Link: https://patch.msgid.link/20250423-spi-tegra114-v1-1-2d608bcc12f9@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

spi: tegra114: Remove unnecessary NULL-pointer checks [+ + +]
Author: Alexander Danilenko <al.b.danilenko@gmail.com>
Date:   Fri Sep 5 23:37:09 2025 -0400

    spi: tegra114: Remove unnecessary NULL-pointer checks
    
    [ Upstream commit 373c36bf7914e3198ac2654dede499f340c52950 ]
    
    cs_setup, cs_hold and cs_inactive points to fields of spi_device struct,
    so there is no sense in checking them for NULL.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 04e6bb0d6bb1 ("spi: modify set_cs_timing parameter")
    Signed-off-by: Alexander Danilenko <al.b.danilenko@gmail.com>
    Link: https://lore.kernel.org/r/20230815092058.4083-1-al.b.danilenko@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 4426e6b4ecf6 ("spi: tegra114: Don't fail set_cs_timing when delays are zero")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

spi: tegra114: Use value to check for invalid delays [+ + +]
Author: Aaron Kling <webgeek1234@gmail.com>
Date:   Tue May 6 13:36:59 2025 -0500

    spi: tegra114: Use value to check for invalid delays
    
    [ Upstream commit e979a7c79fbc706f6dac913af379ef4caa04d3d5 ]
    
    A delay unit of 0 is a valid entry, thus it is not valid to check for
    unused delays. Instead, check the value field; if that is zero, the
    given delay is unset.
    
    Fixes: 4426e6b4ecf6 ("spi: tegra114: Don't fail set_cs_timing when delays are zero")
    Cc: stable@vger.kernel.org
    Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
    Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
    Link: https://patch.msgid.link/20250506-spi-tegra114-fixup-v1-1-136dc2f732f3@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tee: fix NULL pointer dereference in tee_shm_put [+ + +]
Author: Pei Xiao <xiaopei01@kylinos.cn>
Date:   Wed Jul 23 10:09:07 2025 +0800

    tee: fix NULL pointer dereference in tee_shm_put
    
    [ Upstream commit e4a718a3a47e89805c3be9d46a84de1949a98d5d ]
    
    tee_shm_put have NULL pointer dereference:
    
    __optee_disable_shm_cache -->
            shm = reg_pair_to_ptr(...);//shm maybe return NULL
            tee_shm_free(shm); -->
                    tee_shm_put(shm);//crash
    
    Add check in tee_shm_put to fix it.
    
    panic log:
    Unable to handle kernel paging request at virtual address 0000000000100cca
    Mem abort info:
    ESR = 0x0000000096000004
    EC = 0x25: DABT (current EL), IL = 32 bits
    SET = 0, FnV = 0
    EA = 0, S1PTW = 0
    FSC = 0x04: level 0 translation fault
    Data abort info:
    ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
    CM = 0, WnR = 0, TnD = 0, TagAccess = 0
    GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    user pgtable: 4k pages, 48-bit VAs, pgdp=0000002049d07000
    [0000000000100cca] pgd=0000000000000000, p4d=0000000000000000
    Internal error: Oops: 0000000096000004 [#1] SMP
    CPU: 2 PID: 14442 Comm: systemd-sleep Tainted: P OE ------- ----
    6.6.0-39-generic #38
    Source Version: 938b255f6cb8817c95b0dd5c8c2944acfce94b07
    Hardware name: greatwall GW-001Y1A-FTH, BIOS Great Wall BIOS V3.0
    10/26/2022
    pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : tee_shm_put+0x24/0x188
    lr : tee_shm_free+0x14/0x28
    sp : ffff001f98f9faf0
    x29: ffff001f98f9faf0 x28: ffff0020df543cc0 x27: 0000000000000000
    x26: ffff001f811344a0 x25: ffff8000818dac00 x24: ffff800082d8d048
    x23: ffff001f850fcd18 x22: 0000000000000001 x21: ffff001f98f9fb88
    x20: ffff001f83e76218 x19: ffff001f83e761e0 x18: 000000000000ffff
    x17: 303a30303a303030 x16: 0000000000000000 x15: 0000000000000003
    x14: 0000000000000001 x13: 0000000000000000 x12: 0101010101010101
    x11: 0000000000000001 x10: 0000000000000001 x9 : ffff800080e08d0c
    x8 : ffff001f98f9fb88 x7 : 0000000000000000 x6 : 0000000000000000
    x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000000000
    x2 : ffff001f83e761e0 x1 : 00000000ffff001f x0 : 0000000000100cca
    Call trace:
    tee_shm_put+0x24/0x188
    tee_shm_free+0x14/0x28
    __optee_disable_shm_cache+0xa8/0x108
    optee_shutdown+0x28/0x38
    platform_shutdown+0x28/0x40
    device_shutdown+0x144/0x2b0
    kernel_power_off+0x3c/0x80
    hibernate+0x35c/0x388
    state_store+0x64/0x80
    kobj_attr_store+0x14/0x28
    sysfs_kf_write+0x48/0x60
    kernfs_fop_write_iter+0x128/0x1c0
    vfs_write+0x270/0x370
    ksys_write+0x6c/0x100
    __arm64_sys_write+0x20/0x30
    invoke_syscall+0x4c/0x120
    el0_svc_common.constprop.0+0x44/0xf0
    do_el0_svc+0x24/0x38
    el0_svc+0x24/0x88
    el0t_64_sync_handler+0x134/0x150
    el0t_64_sync+0x14c/0x15
    
    Fixes: dfd0743f1d9e ("tee: handle lookup of shm with reference count 0")
    Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn>
    Reviewed-by: Sumit Garg <sumit.garg@oss.qualcomm.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tee: optee: ffa: fix a typo of "optee_ffa_api_is_compatible" [+ + +]
Author: Sungbae Yoo <sungbaey@nvidia.com>
Date:   Wed Aug 6 12:47:35 2025 +0000

    tee: optee: ffa: fix a typo of "optee_ffa_api_is_compatible"
    
    [ Upstream commit 75dbd4304afe574fcfc4118a5b78776a9f48fdc4 ]
    
    Fixes optee_ffa_api_is_compatbile() to optee_ffa_api_is_compatible()
    because compatbile is a typo of compatible.
    
    Fixes: 4615e5a34b95 ("optee: add FF-A support")
    Signed-off-by: Sungbae Yoo <sungbaey@nvidia.com>
    Reviewed-by: Sumit Garg <sumit.garg@oss.qualcomm.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
tools: gpio: remove the include directory on make clean [+ + +]
Author: zhang jiao <zhangjiao2@cmss.chinamobile.com>
Date:   Wed Sep 3 14:36:20 2025 +0800

    tools: gpio: remove the include directory on make clean
    
    [ Upstream commit ed42d80f3bae89592fbb2ffaf8b6b2e720d53f6a ]
    
    Remove the generated include directory when running make clean.
    
    Fixes: 8674cea84dc6 ("tools/gpio: move to tools buildsystem")
    Signed-off-by: Zhang Jiao <zhangjiao2@cmss.chinamobile.com>
    Link: https://lore.kernel.org/r/20250903063621.2424-1-zhangjiao2@cmss.chinamobile.com
    [Bartosz: add Fixes tag, improve the commit message]
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

tools: gpio: rm .*.cmd on make clean [+ + +]
Author: zhangjiao <zhangjiao2@cmss.chinamobile.com>
Date:   Thu Aug 29 14:29:42 2024 +0800

    tools: gpio: rm .*.cmd on make clean
    
    [ Upstream commit 931a36c4138ac418d487bd4db0d03780b46a77ba ]
    
    rm .*.cmd when calling make clean
    
    Signed-off-by: zhangjiao <zhangjiao2@cmss.chinamobile.com>
    Link: https://lore.kernel.org/r/20240829062942.11487-1-zhangjiao2@cmss.chinamobile.com
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    Stable-dep-of: ed42d80f3bae ("tools: gpio: remove the include directory on make clean")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
vmxnet3: update MTU after device quiesce [+ + +]
Author: Ronak Doshi <ronak.doshi@broadcom.com>
Date:   Fri Sep 5 13:46:24 2025 -0400

    vmxnet3: update MTU after device quiesce
    
    [ Upstream commit 43f0999af011fba646e015f0bb08b6c3002a0170 ]
    
    Currently, when device mtu is updated, vmxnet3 updates netdev mtu, quiesces
    the device and then reactivates it for the ESXi to know about the new mtu.
    So, technically the OS stack can start using the new mtu before ESXi knows
    about the new mtu.
    
    This can lead to issues for TSO packets which use mss as per the new mtu
    configured. This patch fixes this issue by moving the mtu write after
    device quiesce.
    
    Cc: stable@vger.kernel.org
    Fixes: d1a890fa37f2 ("net: VMware virtual Ethernet NIC driver: vmxnet3")
    Signed-off-by: Ronak Doshi <ronak.doshi@broadcom.com>
    Acked-by: Guolin Yang <guolin.yang@broadcom.com>
    Changes v1-> v2:
      Moved MTU write after destroy of rx rings
    Link: https://patch.msgid.link/20250515190457.8597-1-ronak.doshi@broadcom.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    [ no WRITE_ONCE() in older trees ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: cfg80211: fix use-after-free in cmp_bss() [+ + +]
Author: Dmitry Antipov <dmantipov@yandex.ru>
Date:   Wed Aug 13 16:52:36 2025 +0300

    wifi: cfg80211: fix use-after-free in cmp_bss()
    
    [ Upstream commit 26e84445f02ce6b2fe5f3e0e28ff7add77f35e08 ]
    
    Following bss_free() quirk introduced in commit 776b3580178f
    ("cfg80211: track hidden SSID networks properly"), adjust
    cfg80211_update_known_bss() to free the last beacon frame
    elements only if they're not shared via the corresponding
    'hidden_beacon_bss' pointer.
    
    Reported-by: syzbot+30754ca335e6fb7e3092@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=30754ca335e6fb7e3092
    Fixes: 3ab8227d3e7d ("cfg80211: refactor cfg80211_bss_update")
    Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
    Link: https://patch.msgid.link/20250813135236.799384-1-dmantipov@yandex.ru
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cfg80211: sme: cap SSID length in __cfg80211_connect_result() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Fri Aug 29 15:48:45 2025 +0300

    wifi: cfg80211: sme: cap SSID length in __cfg80211_connect_result()
    
    [ Upstream commit 62b635dcd69c4fde7ce1de4992d71420a37e51e3 ]
    
    If the ssid->datalen is more than IEEE80211_MAX_SSID_LEN (32) it would
    lead to memory corruption so add some bounds checking.
    
    Fixes: c38c70185101 ("wifi: cfg80211: Set SSID if it is not already set")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://patch.msgid.link/0aaaae4a3ed37c6252363c34ae4904b1604e8e32.1756456951.git.dan.carpenter@linaro.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: cw1200: cap SSID length in cw1200_do_join() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Fri Aug 29 15:48:28 2025 +0300

    wifi: cw1200: cap SSID length in cw1200_do_join()
    
    [ Upstream commit f8f15f6742b8874e59c9c715d0af3474608310ad ]
    
    If the ssidie[1] length is more that 32 it leads to memory corruption.
    
    Fixes: a910e4a94f69 ("cw1200: add driver for the ST-E CW1100 & CW1200 WLAN chipsets")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://patch.msgid.link/e91fb43fcedc4893b604dfb973131661510901a7.1756456951.git.dan.carpenter@linaro.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: libertas: cap SSID len in lbs_associate() [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Fri Aug 29 15:48:35 2025 +0300

    wifi: libertas: cap SSID len in lbs_associate()
    
    [ Upstream commit c786794bd27b0d7a5fd9063695df83206009be59 ]
    
    If the ssid_eid[1] length is more that 32 it leads to memory corruption.
    
    Fixes: a910e4a94f69 ("cw1200: add driver for the ST-E CW1100 & CW1200 WLAN chipsets")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://patch.msgid.link/2a40f5ec7617144aef412034c12919a4927d90ad.1756456951.git.dan.carpenter@linaro.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

wifi: mwifiex: Initialize the chan_stats array to zero [+ + +]
Author: Qianfeng Rong <rongqianfeng@vivo.com>
Date:   Fri Aug 15 10:30:50 2025 +0800

    wifi: mwifiex: Initialize the chan_stats array to zero
    
    commit 0e20450829ca3c1dbc2db536391537c57a40fe0b upstream.
    
    The adapter->chan_stats[] array is initialized in
    mwifiex_init_channel_scan_gap() with vmalloc(), which doesn't zero out
    memory.  The array is filled in mwifiex_update_chan_statistics()
    and then the user can query the data in mwifiex_cfg80211_dump_survey().
    
    There are two potential issues here.  What if the user calls
    mwifiex_cfg80211_dump_survey() before the data has been filled in.
    Also the mwifiex_update_chan_statistics() function doesn't necessarily
    initialize the whole array.  Since the array was not initialized at
    the start that could result in an information leak.
    
    Also this array is pretty small.  It's a maximum of 900 bytes so it's
    more appropriate to use kcalloc() instead vmalloc().
    
    Cc: stable@vger.kernel.org
    Fixes: bf35443314ac ("mwifiex: channel statistics support for mwifiex")
    Suggested-by: Dan Carpenter <dan.carpenter@linaro.org>
    Signed-off-by: Qianfeng Rong <rongqianfeng@vivo.com>
    Reviewed-by: Dan Carpenter <dan.carpenter@linaro.org>
    Link: https://patch.msgid.link/20250815023055.477719-1-rongqianfeng@vivo.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/mm/64: define ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings() [+ + +]
Author: Harry Yoo <harry.yoo@oracle.com>
Date:   Mon Aug 18 11:02:06 2025 +0900

    x86/mm/64: define ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings()
    
    commit 6659d027998083fbb6d42a165b0c90dc2e8ba989 upstream.
    
    Define ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings() to ensure
    page tables are properly synchronized when calling p*d_populate_kernel().
    
    For 5-level paging, synchronization is performed via
    pgd_populate_kernel().  In 4-level paging, pgd_populate() is a no-op, so
    synchronization is instead performed at the P4D level via
    p4d_populate_kernel().
    
    This fixes intermittent boot failures on systems using 4-level paging and
    a large amount of persistent memory:
    
      BUG: unable to handle page fault for address: ffffe70000000034
      #PF: supervisor write access in kernel mode
      #PF: error_code(0x0002) - not-present page
      PGD 0 P4D 0
      Oops: 0002 [#1] SMP NOPTI
      RIP: 0010:__init_single_page+0x9/0x6d
      Call Trace:
       <TASK>
       __init_zone_device_page+0x17/0x5d
       memmap_init_zone_device+0x154/0x1bb
       pagemap_range+0x2e0/0x40f
       memremap_pages+0x10b/0x2f0
       devm_memremap_pages+0x1e/0x60
       dev_dax_probe+0xce/0x2ec [device_dax]
       dax_bus_probe+0x6d/0xc9
       [... snip ...]
       </TASK>
    
    It also fixes a crash in vmemmap_set_pmd() caused by accessing vmemmap
    before sync_global_pgds() [1]:
    
      BUG: unable to handle page fault for address: ffffeb3ff1200000
      #PF: supervisor write access in kernel mode
      #PF: error_code(0x0002) - not-present page
      PGD 0 P4D 0
      Oops: Oops: 0002 [#1] PREEMPT SMP NOPTI
      Tainted: [W]=WARN
      RIP: 0010:vmemmap_set_pmd+0xff/0x230
       <TASK>
       vmemmap_populate_hugepages+0x176/0x180
       vmemmap_populate+0x34/0x80
       __populate_section_memmap+0x41/0x90
       sparse_add_section+0x121/0x3e0
       __add_pages+0xba/0x150
       add_pages+0x1d/0x70
       memremap_pages+0x3dc/0x810
       devm_memremap_pages+0x1c/0x60
       xe_devm_add+0x8b/0x100 [xe]
       xe_tile_init_noalloc+0x6a/0x70 [xe]
       xe_device_probe+0x48c/0x740 [xe]
       [... snip ...]
    
    Link: https://lkml.kernel.org/r/20250818020206.4517-4-harry.yoo@oracle.com
    Fixes: 8d400913c231 ("x86/vmemmap: handle unpopulated sub-pmd ranges")
    Signed-off-by: Harry Yoo <harry.yoo@oracle.com>
    Closes: https://lore.kernel.org/linux-mm/20250311114420.240341-1-gwan-gyeong.mun@intel.com [1]
    Suggested-by: Dave Hansen <dave.hansen@linux.intel.com>
    Acked-by: Kiryl Shutsemau <kas@kernel.org>
    Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
    Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Alistair Popple <apopple@nvidia.com>
    Cc: Andrey Konovalov <andreyknvl@gmail.com>
    Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: bibo mao <maobibo@loongson.cn>
    Cc: Borislav Betkov <bp@alien8.de>
    Cc: Christoph Lameter (Ampere) <cl@gentwo.org>
    Cc: Dennis Zhou <dennis@kernel.org>
    Cc: Dev Jain <dev.jain@arm.com>
    Cc: Dmitriy Vyukov <dvyukov@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jane Chu <jane.chu@oracle.com>
    Cc: Joao Martins <joao.m.martins@oracle.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Kevin Brodsky <kevin.brodsky@arm.com>
    Cc: Liam Howlett <liam.howlett@oracle.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Qi Zheng <zhengqi.arch@bytedance.com>
    Cc: Ryan Roberts <ryan.roberts@arm.com>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Thomas Gleinxer <tglx@linutronix.de>
    Cc: Thomas Huth <thuth@redhat.com>
    Cc: "Uladzislau Rezki (Sony)" <urezki@gmail.com>
    Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xirc2ps_cs: fix register access when enabling FullDuplex [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Wed Aug 27 12:26:43 2025 -0700

    xirc2ps_cs: fix register access when enabling FullDuplex
    
    [ Upstream commit b79e498080b170fd94fc83bca2471f450811549b ]
    
    The current code incorrectly passes (XIRCREG1_ECR | FullDuplex) as
    the register address to GetByte(), instead of fetching the register
    value and OR-ing it with FullDuplex. This results in an invalid
    register access.
    
    Fix it by reading XIRCREG1_ECR first, then or-ing with FullDuplex
    before writing it back.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/20250827192645.658496-1-alok.a.tiwari@oracle.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>