Changelog in Linux kernel 5.4.299

 
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 19:53:54 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: 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>

 
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>

 
cifs: fix integer overflow in match_server() [+ + +]
Author: Roman Smirnov <r.smirnov@omp.ru>
Date:   Sun Sep 7 11:08:36 2025 -0400

    cifs: fix integer overflow in match_server()
    
    [ Upstream commit 2510859475d7f46ed7940db0853f3342bf1b65ee ]
    
    The echo_interval is not limited in any way during mounting,
    which makes it possible to write a large number to it. This can
    cause an overflow when multiplying ctx->echo_interval by HZ in
    match_server().
    
    Add constraints for echo_interval to smb3_fs_context_parse_param().
    
    Found by Linux Verification Center (linuxtesting.org) with Svace.
    
    Fixes: adfeb3e00e8e1 ("cifs: Make echo interval tunable")
    Cc: stable@vger.kernel.org
    Signed-off-by: Roman Smirnov <r.smirnov@omp.ru>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    [ Adapted to older CIFS filesystem structure and mount option parsing ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    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 16:19:18 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
    [ Adjust context ]
    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 17:26:31 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/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>

 
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>

 
gpio: pca953x: fix IRQ storm on system wake up [+ + +]
Author: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
Date:   Fri Sep 5 21:17:17 2025 -0400

    gpio: pca953x: fix IRQ storm on system wake up
    
    [ Upstream commit 3e38f946062b4845961ab86b726651b4457b2af8 ]
    
    If an input changes state during wake-up and is used as an interrupt
    source, the IRQ handler reads the volatile input register to clear the
    interrupt mask and deassert the IRQ line. However, the IRQ handler is
    triggered before access to the register is granted, causing the read
    operation to fail.
    
    As a result, the IRQ handler enters a loop, repeatedly printing the
    "failed reading register" message, until `pca953x_resume()` is eventually
    called, which restores the driver context and enables access to
    registers.
    
    Fix by disabling the IRQ line before entering suspend mode, and
    re-enabling it after the driver context is restored in `pca953x_resume()`.
    
    An IRQ can be disabled with disable_irq() and still wake the system as
    long as the IRQ has wake enabled, so the wake-up functionality is
    preserved.
    
    Fixes: b76574300504 ("gpio: pca953x: Restore registers after suspend/resume cycle")
    Cc: stable@vger.kernel.org
    Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
    Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/20250512095441.31645-1-francesco@dolcini.it
    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    [ Apply directly to suspend/resume functions ]
    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:   Sat Sep 6 09:02:44 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 23:45:11 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>

 
KVM: x86: Take irqfds.lock when adding/deleting IRQ bypass producer [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Sat Sep 6 11:12:05 2025 -0400

    KVM: x86: Take irqfds.lock when adding/deleting IRQ bypass producer
    
    [ Upstream commit f1fb088d9cecde5c3066d8ff8846789667519b7d ]
    
    Take irqfds.lock when adding/deleting an IRQ bypass producer to ensure
    irqfd->producer isn't modified while kvm_irq_routing_update() is running.
    The only lock held when a producer is added/removed is irqbypass's mutex.
    
    Fixes: 872768800652 ("KVM: x86: select IRQ_BYPASS_MANAGER")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-ID: <20250404193923.1413163-5-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

    Linux 5.4.299
    
    Link: https://lore.kernel.org/r/20250907195600.953058118@linuxfoundation.org
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Alok Tiwari <alok.a.tiwari@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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/khugepaged: fix ->anon_vma race [+ + +]
Author: Jann Horn <jannh@google.com>
Date:   Wed Jan 11 14:33:51 2023 +0100

    mm/khugepaged: fix ->anon_vma race
    
    commit 023f47a8250c6bdb4aebe744db4bf7f73414028b upstream.
    
    If an ->anon_vma is attached to the VMA, collapse_and_free_pmd() requires
    it to be locked.
    
    Page table traversal is allowed under any one of the mmap lock, the
    anon_vma lock (if the VMA is associated with an anon_vma), and the
    mapping lock (if the VMA is associated with a mapping); and so to be
    able to remove page tables, we must hold all three of them.
    retract_page_tables() bails out if an ->anon_vma is attached, but does
    this check before holding the mmap lock (as the comment above the check
    explains).
    
    If we racily merged an existing ->anon_vma (shared with a child
    process) from a neighboring VMA, subsequent rmap traversals on pages
    belonging to the child will be able to see the page tables that we are
    concurrently removing while assuming that nothing else can access them.
    
    Repeat the ->anon_vma check once we hold the mmap lock to ensure that
    there really is no concurrent page table access.
    
    Hitting this bug causes a lockdep warning in collapse_and_free_pmd(),
    in the line "lockdep_assert_held_write(&vma->anon_vma->root->rwsem)".
    It can also lead to use-after-free access.
    
    Link: https://lore.kernel.org/linux-mm/CAG48ez3434wZBKFFbdx4M9j6eUwSUVPd4dxhzW_k_POneSDF+A@mail.gmail.com/
    Link: https://lkml.kernel.org/r/20230111133351.807024-1-jannh@google.com
    Fixes: f3f0e1d2150b ("khugepaged: add support of collapse for tmpfs/shmem pages")
    Signed-off-by: Jann Horn <jannh@google.com>
    Reported-by: Zach O'Keefe <zokeefe@google.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@intel.linux.com>
    Reviewed-by: Yang Shi <shy828301@gmail.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    [doebel@amazon.de: Kernel 5.4 uses different control flow and locking
        mechanism. Context adjustments.]
    Signed-off-by: Bjoern Doebel <doebel@amazon.de>
    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 22:38:21 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>
    [ struct page + print_page_info() ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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 15:22:45 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 15:22:44 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: 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: 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>

 
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>

 
powerpc: boot: Remove leading zero in label in udelay() [+ + +]
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Wed Sep 3 14:11:58 2025 -0700

    powerpc: boot: Remove leading zero in label in udelay()
    
    When building powerpc configurations in linux-5.4.y with binutils 2.43
    or newer, there is an assembler error in arch/powerpc/boot/util.S:
    
      arch/powerpc/boot/util.S: Assembler messages:
      arch/powerpc/boot/util.S:44: Error: junk at end of line, first unrecognized character is `0'
      arch/powerpc/boot/util.S:49: Error: syntax error; found `b', expected `,'
      arch/powerpc/boot/util.S:49: Error: junk at end of line: `b'
    
    binutils 2.43 contains stricter parsing of certain labels [1], namely
    that leading zeros are no longer allowed. The GNU assembler
    documentation already somewhat forbade this construct:
    
      To define a local label, write a label of the form 'N:' (where N
      represents any non-negative integer).
    
    Eliminate the leading zero in the label to fix the syntax error. This is
    only needed in linux-5.4.y because commit 8b14e1dff067 ("powerpc: Remove
    support for PowerPC 601") removed this code altogether in 5.10.
    
    Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=226749d5a6ff0d5c607d6428d6c81e1e7e7a994b [1]
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.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>

 
randstruct: gcc-plugin: Fix attribute addition [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Fri Sep 5 12:36:53 2025 -0400

    randstruct: gcc-plugin: Fix attribute addition
    
    [ Upstream commit f39f18f3c3531aa802b58a20d39d96e82eb96c14 ]
    
    Based on changes in the 2021 public version of the randstruct
    out-of-tree GCC plugin[1], more carefully update the attributes on
    resulting decls, to avoid tripping checks in GCC 15's
    comptypes_check_enum_int() when it has been configured with
    "--enable-checking=misc":
    
    arch/arm64/kernel/kexec_image.c:132:14: internal compiler error: in comptypes_check_enum_int, at c/c-typeck.cc:1519
      132 | const struct kexec_file_ops kexec_image_ops = {
          |              ^~~~~~~~~~~~~~
     internal_error(char const*, ...), at gcc/gcc/diagnostic-global-context.cc:517
     fancy_abort(char const*, int, char const*), at gcc/gcc/diagnostic.cc:1803
     comptypes_check_enum_int(tree_node*, tree_node*, bool*), at gcc/gcc/c/c-typeck.cc:1519
     ...
    
    Link: https://archive.org/download/grsecurity/grsecurity-3.1-5.10.41-202105280954.patch.gz [1]
    Reported-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
    Closes: https://github.com/KSPP/linux/issues/367
    Closes: https://lore.kernel.org/lkml/20250530000646.104457-1-thiago.bauermann@linaro.org/
    Reported-by: Ingo Saitz <ingo@hannover.ccc.de>
    Closes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1104745
    Fixes: 313dd1b62921 ("gcc-plugins: Add the randstruct plugin")
    Tested-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
    Link: https://lore.kernel.org/r/20250530221824.work.623-kees@kernel.org
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

randstruct: gcc-plugin: Remove bogus void member [+ + +]
Author: Kees Cook <kees@kernel.org>
Date:   Fri Sep 5 12:36:52 2025 -0400

    randstruct: gcc-plugin: Remove bogus void member
    
    [ Upstream commit e136a4062174a9a8d1c1447ca040ea81accfa6a8 ]
    
    When building the randomized replacement tree of struct members, the
    randstruct GCC plugin would insert, as the first member, a 0-sized void
    member. This appears as though it was done to catch non-designated
    ("unnamed") static initializers, which wouldn't be stable since they
    depend on the original struct layout order.
    
    This was accomplished by having the side-effect of the "void member"
    tripping an assert in GCC internals (count_type_elements) if the member
    list ever needed to be counted (e.g. for figuring out the order of members
    during a non-designated initialization), which would catch impossible type
    (void) in the struct:
    
    security/landlock/fs.c: In function ‘hook_file_ioctl_common’:
    security/landlock/fs.c:1745:61: internal compiler error: in count_type_elements, at expr.cc:7075
     1745 |                         .u.op = &(struct lsm_ioctlop_audit) {
          |                                                             ^
    
    static HOST_WIDE_INT
    count_type_elements (const_tree type, bool for_ctor_p)
    {
      switch (TREE_CODE (type))
    ...
        case VOID_TYPE:
        default:
          gcc_unreachable ();
        }
    }
    
    However this is a redundant safety measure since randstruct uses the
    __designated_initializer attribute both internally and within the
    __randomized_layout attribute macro so that this would be enforced
    by the compiler directly even when randstruct was not enabled (via
    -Wdesignated-init).
    
    A recent change in Landlock ended up tripping the same member counting
    routine when using a full-struct copy initializer as part of an anonymous
    initializer. This, however, is a false positive as the initializer is
    copying between identical structs (and hence identical layouts). The
    "path" member is "struct path", a randomized struct, and is being copied
    to from another "struct path", the "f_path" member:
    
            landlock_log_denial(landlock_cred(file->f_cred), &(struct landlock_request) {
                    .type = LANDLOCK_REQUEST_FS_ACCESS,
                    .audit = {
                            .type = LSM_AUDIT_DATA_IOCTL_OP,
                            .u.op = &(struct lsm_ioctlop_audit) {
                                    .path = file->f_path,
                                    .cmd = cmd,
                            },
                    },
            ...
    
    As can be seen with the coming randstruct KUnit test, there appears to
    be no behavioral problems with this kind of initialization when the void
    member is removed from the randstruct GCC plugin, so remove it.
    
    Reported-by: "Dr. David Alan Gilbert" <linux@treblig.org>
    Closes: https://lore.kernel.org/lkml/Z_PRaKx7q70MKgCA@gallifrey/
    Reported-by: Mark Brown <broonie@kernel.org>
    Closes: https://lore.kernel.org/lkml/20250407-kbuild-disable-gcc-plugins-v1-1-5d46ae583f5e@kernel.org/
    Reported-by: WangYuli <wangyuli@uniontech.com>
    Closes: https://lore.kernel.org/lkml/337D5D4887277B27+3c677db3-a8b9-47f0-93a4-7809355f1381@uniontech.com/
    Fixes: 313dd1b62921 ("gcc-plugins: Add the randstruct plugin")
    Signed-off-by: Kees Cook <kees@kernel.org>
    Stable-dep-of: f39f18f3c353 ("randstruct: gcc-plugin: Fix attribute addition")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    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:   Sat Sep 6 23:18:45 2025 -0400

    scsi: lpfc: Fix buffer free/clear order in deferred receive path
    
    [ Upstream commit 9dba9a45c348e8460da97c450cddf70b2056deb3 ]
    
    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>
    [ Adjust context ]
    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>

 
vmxnet3: update MTU after device quiesce [+ + +]
Author: Ronak Doshi <ronak.doshi@broadcom.com>
Date:   Fri Sep 5 14:23:12 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: 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>

 
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>