Changelog in Linux kernel 6.6.115

 
ACPICA: Work around bogus -Wstringop-overread warning since GCC 11 [+ + +]
Author: Xi Ruoyao <[email protected]>
Date:   Tue Oct 21 17:28:25 2025 +0800

    ACPICA: Work around bogus -Wstringop-overread warning since GCC 11
    
    commit 6e3a4754717a74e931a9f00b5f953be708e07acb upstream.
    
    When ACPI_MISALIGNMENT_NOT_SUPPORTED is set, GCC can produce a bogus
    -Wstringop-overread warning, see [1].
    
    To me, it's very clear that we have a compiler bug here, thus just
    disable the warning.
    
    Fixes: a9d13433fe17 ("LoongArch: Align ACPI structures if ARCH_STRICT_ALIGN enabled")
    Link: https://lore.kernel.org/all/[email protected]/
    Link: https://github.com/acpica/acpica/commit/abf5b573
    Link: https://gcc.gnu.org/PR122073 [1]
    Co-developed-by: Saket Dumbre <[email protected]>
    Signed-off-by: Saket Dumbre <[email protected]>
    Signed-off-by: Xi Ruoyao <[email protected]>
    Acked-by: Huacai Chen <[email protected]>
    Cc: All applicable <[email protected]>
    [ rjw: Subject and changelog edits ]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
arch_topology: Fix incorrect error check in topology_parse_cpu_capacity() [+ + +]
Author: Kaushlendra Kumar <[email protected]>
Date:   Tue Sep 23 23:13:08 2025 +0530

    arch_topology: Fix incorrect error check in topology_parse_cpu_capacity()
    
    commit 2eead19334516c8e9927c11b448fbe512b1f18a1 upstream.
    
    Fix incorrect use of PTR_ERR_OR_ZERO() in topology_parse_cpu_capacity()
    which causes the code to proceed with NULL clock pointers. The current
    logic uses !PTR_ERR_OR_ZERO(cpu_clk) which evaluates to true for both
    valid pointers and NULL, leading to potential NULL pointer dereference
    in clk_get_rate().
    
    Per include/linux/err.h documentation, PTR_ERR_OR_ZERO(ptr) returns:
    "The error code within @ptr if it is an error pointer; 0 otherwise."
    
    This means PTR_ERR_OR_ZERO() returns 0 for both valid pointers AND NULL
    pointers. Therefore !PTR_ERR_OR_ZERO(cpu_clk) evaluates to true (proceed)
    when cpu_clk is either valid or NULL, causing clk_get_rate(NULL) to be
    called when of_clk_get() returns NULL.
    
    Replace with !IS_ERR_OR_NULL(cpu_clk) which only proceeds for valid
    pointers, preventing potential NULL pointer dereference in clk_get_rate().
    
    Cc: stable <[email protected]>
    Signed-off-by: Kaushlendra Kumar <[email protected]>
    Reviewed-by: Sudeep Holla <[email protected]>
    Fixes: b8fe128dad8f ("arch_topology: Adjust initial CPU capacities with current freq")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
arm64, mm: avoid always making PTE dirty in pte_mkwrite() [+ + +]
Author: Huang Ying <[email protected]>
Date:   Wed Oct 15 10:37:12 2025 +0800

    arm64, mm: avoid always making PTE dirty in pte_mkwrite()
    
    [ Upstream commit 143937ca51cc6ae2fccc61a1cb916abb24cd34f5 ]
    
    Current pte_mkwrite_novma() makes PTE dirty unconditionally.  This may
    mark some pages that are never written dirty wrongly.  For example,
    do_swap_page() may map the exclusive pages with writable and clean PTEs
    if the VMA is writable and the page fault is for read access.
    However, current pte_mkwrite_novma() implementation always dirties the
    PTE.  This may cause unnecessary disk writing if the pages are
    never written before being reclaimed.
    
    So, change pte_mkwrite_novma() to clear the PTE_RDONLY bit only if the
    PTE_DIRTY bit is set to make it possible to make the PTE writable and
    clean.
    
    The current behavior was introduced in commit 73e86cb03cf2 ("arm64:
    Move PTE_RDONLY bit handling out of set_pte_at()").  Before that,
    pte_mkwrite() only sets the PTE_WRITE bit, while set_pte_at() only
    clears the PTE_RDONLY bit if both the PTE_WRITE and the PTE_DIRTY bits
    are set.
    
    To test the performance impact of the patch, on an arm64 server
    machine, run 16 redis-server processes on socket 1 and 16
    memtier_benchmark processes on socket 0 with mostly get
    transactions (that is, redis-server will mostly read memory only).
    The memory footprint of redis-server is larger than the available
    memory, so swap out/in will be triggered.  Test results show that the
    patch can avoid most swapping out because the pages are mostly clean.
    And the benchmark throughput improves ~23.9% in the test.
    
    Fixes: 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out of set_pte_at()")
    Signed-off-by: Huang Ying <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: Anshuman Khandual <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: Gavin Shan <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Matthew Wilcox (Oracle) <[email protected]>
    Cc: Yicong Yang <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Reviewed-by: Catalin Marinas <[email protected]>
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
binder: remove "invalid inc weak" check [+ + +]
Author: Alice Ryhl <[email protected]>
Date:   Wed Oct 15 14:26:55 2025 +0000

    binder: remove "invalid inc weak" check
    
    commit d90eeb8ecd227c204ab6c34a17b372bd950b7aa2 upstream.
    
    There are no scenarios where a weak increment is invalid on binder_node.
    The only possible case where it could be invalid is if the kernel
    delivers BR_DECREFS to the process that owns the node, and then
    increments the weak refcount again, effectively "reviving" a dead node.
    
    However, that is not possible: when the BR_DECREFS command is delivered,
    the kernel removes and frees the binder_node. The fact that you were
    able to call binder_inc_node_nilocked() implies that the node is not yet
    destroyed, which implies that BR_DECREFS has not been delivered to
    userspace, so incrementing the weak refcount is valid.
    
    Note that it's currently possible to trigger this condition if the owner
    calls BINDER_THREAD_EXIT while node->has_weak_ref is true. This causes
    BC_INCREFS on binder_ref instances to fail when they should not.
    
    Cc: [email protected]
    Fixes: 457b9a6f09f0 ("Staging: android: add binder driver")
    Reported-by: Yu-Ting Tseng <[email protected]>
    Signed-off-by: Alice Ryhl <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
can: bxcan: bxcan_start_xmit(): use can_dev_dropped_skb() instead of can_dropped_invalid_skb() [+ + +]
Author: Marc Kleine-Budde <[email protected]>
Date:   Fri Oct 17 16:28:49 2025 +0200

    can: bxcan: bxcan_start_xmit(): use can_dev_dropped_skb() instead of can_dropped_invalid_skb()
    
    [ Upstream commit 3a20c444cd123e820e10ae22eeaf00e189315aa1 ]
    
    In addition to can_dropped_invalid_skb(), the helper function
    can_dev_dropped_skb() checks whether the device is in listen-only mode and
    discards the skb accordingly.
    
    Replace can_dropped_invalid_skb() by can_dev_dropped_skb() to also drop
    skbs in for listen-only mode.
    
    Reported-by: Marc Kleine-Budde <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Fixes: f00647d8127b ("can: bxcan: add support for ST bxCAN controller")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: netlink: can_changelink(): allow disabling of automatic restart [+ + +]
Author: Marc Kleine-Budde <[email protected]>
Date:   Mon Oct 20 11:51:03 2025 +0200

    can: netlink: can_changelink(): allow disabling of automatic restart
    
    commit 8e93ac51e4c6dc399fad59ec21f55f2cfb46d27c upstream.
    
    Since the commit c1f3f9797c1f ("can: netlink: can_changelink(): fix NULL
    pointer deref of struct can_priv::do_set_mode"), the automatic restart
    delay can only be set for devices that implement the restart handler struct
    can_priv::do_set_mode. As it makes no sense to configure a automatic
    restart for devices that doesn't support it.
    
    However, since systemd commit 13ce5d4632e3 ("network/can: properly handle
    CAN.RestartSec=0") [1], systemd-networkd correctly handles a restart delay
    of "0" (i.e. the restart is disabled). Which means that a disabled restart
    is always configured in the kernel.
    
    On systems with both changes active this causes that CAN interfaces that
    don't implement a restart handler cannot be brought up by systemd-networkd.
    
    Solve this problem by allowing a delay of "0" to be configured, even if the
    device does not implement a restart handler.
    
    [1] https://github.com/systemd/systemd/commit/13ce5d4632e395521e6205c954493c7fc1c4c6e0
    
    Cc: [email protected]
    Cc: Andrei Lalaev <[email protected]>
    Reported-by: Marc Kleine-Budde <[email protected]>
    Closes: https://lore.kernel.org/all/20251020-certain-arrogant-vole-of-sunshine-141841-mkl@pengutronix.de
    Fixes: c1f3f9797c1f ("can: netlink: can_changelink(): fix NULL pointer deref of struct can_priv::do_set_mode")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cifs: Fix TCP_Server_Info::credits to be signed [+ + +]
Author: David Howells <[email protected]>
Date:   Mon Oct 20 09:40:02 2025 +0100

    cifs: Fix TCP_Server_Info::credits to be signed
    
    commit 5b2ff4873aeab972f919d5aea11c51393322bf58 upstream.
    
    Fix TCP_Server_Info::credits to be signed, just as echo_credits and
    oplock_credits are.  This also fixes what ought to get at least a
    compilation warning if not an outright error in *get_credits_field() as a
    pointer to the unsigned server->credits field is passed back as a pointer
    to a signed int.
    
    Signed-off-by: David Howells <[email protected]>
    cc: [email protected]
    Cc: [email protected]
    Acked-by: Paulo Alcantara (Red Hat) <[email protected]>
    Acked-by: Pavel Shilovskiy <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
comedi: fix divide-by-zero in comedi_buf_munge() [+ + +]
Author: Deepanshu Kartikey <[email protected]>
Date:   Wed Sep 24 15:56:39 2025 +0530

    comedi: fix divide-by-zero in comedi_buf_munge()
    
    commit 87b318ba81dda2ee7b603f4f6c55e78ec3e95974 upstream.
    
    The comedi_buf_munge() function performs a modulo operation
    `async->munge_chan %= async->cmd.chanlist_len` without first
    checking if chanlist_len is zero. If a user program submits a command with
    chanlist_len set to zero, this causes a divide-by-zero error when the device
    processes data in the interrupt handler path.
    
    Add a check for zero chanlist_len at the beginning of the
    function, similar to the existing checks for !map and
    CMDF_RAWDATA flag. When chanlist_len is zero, update
    munge_count and return early, indicating the data was
    handled without munging.
    
    This prevents potential kernel panics from malformed user commands.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=f6c3c066162d2c43a66c
    Cc: [email protected]
    Signed-off-by: Deepanshu Kartikey <[email protected]>
    Reviewed-by: Ian Abbott <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
devcoredump: Fix circular locking dependency with devcd->mutex. [+ + +]
Author: Maarten Lankhorst <[email protected]>
Date:   Sun Oct 26 19:49:50 2025 -0400

    devcoredump: Fix circular locking dependency with devcd->mutex.
    
    [ Upstream commit a91c8096590bd7801a26454789f2992094fe36da ]
    
    The original code causes a circular locking dependency found by lockdep.
    
    ======================================================
    WARNING: possible circular locking dependency detected
    6.16.0-rc6-lgci-xe-xe-pw-151626v3+ #1 Tainted: G S   U
    ------------------------------------------------------
    xe_fault_inject/5091 is trying to acquire lock:
    ffff888156815688 ((work_completion)(&(&devcd->del_wk)->work)){+.+.}-{0:0}, at: __flush_work+0x25d/0x660
    
    but task is already holding lock:
    
    ffff888156815620 (&devcd->mutex){+.+.}-{3:3}, at: dev_coredump_put+0x3f/0xa0
    which lock already depends on the new lock.
    the existing dependency chain (in reverse order) is:
    -> #2 (&devcd->mutex){+.+.}-{3:3}:
           mutex_lock_nested+0x4e/0xc0
           devcd_data_write+0x27/0x90
           sysfs_kf_bin_write+0x80/0xf0
           kernfs_fop_write_iter+0x169/0x220
           vfs_write+0x293/0x560
           ksys_write+0x72/0xf0
           __x64_sys_write+0x19/0x30
           x64_sys_call+0x2bf/0x2660
           do_syscall_64+0x93/0xb60
           entry_SYSCALL_64_after_hwframe+0x76/0x7e
    -> #1 (kn->active#236){++++}-{0:0}:
           kernfs_drain+0x1e2/0x200
           __kernfs_remove+0xae/0x400
           kernfs_remove_by_name_ns+0x5d/0xc0
           remove_files+0x54/0x70
           sysfs_remove_group+0x3d/0xa0
           sysfs_remove_groups+0x2e/0x60
           device_remove_attrs+0xc7/0x100
           device_del+0x15d/0x3b0
           devcd_del+0x19/0x30
           process_one_work+0x22b/0x6f0
           worker_thread+0x1e8/0x3d0
           kthread+0x11c/0x250
           ret_from_fork+0x26c/0x2e0
           ret_from_fork_asm+0x1a/0x30
    -> #0 ((work_completion)(&(&devcd->del_wk)->work)){+.+.}-{0:0}:
           __lock_acquire+0x1661/0x2860
           lock_acquire+0xc4/0x2f0
           __flush_work+0x27a/0x660
           flush_delayed_work+0x5d/0xa0
           dev_coredump_put+0x63/0xa0
           xe_driver_devcoredump_fini+0x12/0x20 [xe]
           devm_action_release+0x12/0x30
           release_nodes+0x3a/0x120
           devres_release_all+0x8a/0xd0
           device_unbind_cleanup+0x12/0x80
           device_release_driver_internal+0x23a/0x280
           device_driver_detach+0x14/0x20
           unbind_store+0xaf/0xc0
           drv_attr_store+0x21/0x50
           sysfs_kf_write+0x4a/0x80
           kernfs_fop_write_iter+0x169/0x220
           vfs_write+0x293/0x560
           ksys_write+0x72/0xf0
           __x64_sys_write+0x19/0x30
           x64_sys_call+0x2bf/0x2660
           do_syscall_64+0x93/0xb60
           entry_SYSCALL_64_after_hwframe+0x76/0x7e
    other info that might help us debug this:
    Chain exists of: (work_completion)(&(&devcd->del_wk)->work) --> kn->active#236 --> &devcd->mutex
     Possible unsafe locking scenario:
           CPU0                    CPU1
           ----                    ----
      lock(&devcd->mutex);
                                   lock(kn->active#236);
                                   lock(&devcd->mutex);
      lock((work_completion)(&(&devcd->del_wk)->work));
     *** DEADLOCK ***
    5 locks held by xe_fault_inject/5091:
     #0: ffff8881129f9488 (sb_writers#5){.+.+}-{0:0}, at: ksys_write+0x72/0xf0
     #1: ffff88810c755078 (&of->mutex#2){+.+.}-{3:3}, at: kernfs_fop_write_iter+0x123/0x220
     #2: ffff8881054811a0 (&dev->mutex){....}-{3:3}, at: device_release_driver_internal+0x55/0x280
     #3: ffff888156815620 (&devcd->mutex){+.+.}-{3:3}, at: dev_coredump_put+0x3f/0xa0
     #4: ffffffff8359e020 (rcu_read_lock){....}-{1:2}, at: __flush_work+0x72/0x660
    stack backtrace:
    CPU: 14 UID: 0 PID: 5091 Comm: xe_fault_inject Tainted: G S   U              6.16.0-rc6-lgci-xe-xe-pw-151626v3+ #1 PREEMPT_{RT,(lazy)}
    Tainted: [S]=CPU_OUT_OF_SPEC, [U]=USER
    Hardware name: Micro-Star International Co., Ltd. MS-7D25/PRO Z690-A DDR4(MS-7D25), BIOS 1.10 12/13/2021
    Call Trace:
     <TASK>
     dump_stack_lvl+0x91/0xf0
     dump_stack+0x10/0x20
     print_circular_bug+0x285/0x360
     check_noncircular+0x135/0x150
     ? register_lock_class+0x48/0x4a0
     __lock_acquire+0x1661/0x2860
     lock_acquire+0xc4/0x2f0
     ? __flush_work+0x25d/0x660
     ? mark_held_locks+0x46/0x90
     ? __flush_work+0x25d/0x660
     __flush_work+0x27a/0x660
     ? __flush_work+0x25d/0x660
     ? trace_hardirqs_on+0x1e/0xd0
     ? __pfx_wq_barrier_func+0x10/0x10
     flush_delayed_work+0x5d/0xa0
     dev_coredump_put+0x63/0xa0
     xe_driver_devcoredump_fini+0x12/0x20 [xe]
     devm_action_release+0x12/0x30
     release_nodes+0x3a/0x120
     devres_release_all+0x8a/0xd0
     device_unbind_cleanup+0x12/0x80
     device_release_driver_internal+0x23a/0x280
     ? bus_find_device+0xa8/0xe0
     device_driver_detach+0x14/0x20
     unbind_store+0xaf/0xc0
     drv_attr_store+0x21/0x50
     sysfs_kf_write+0x4a/0x80
     kernfs_fop_write_iter+0x169/0x220
     vfs_write+0x293/0x560
     ksys_write+0x72/0xf0
     __x64_sys_write+0x19/0x30
     x64_sys_call+0x2bf/0x2660
     do_syscall_64+0x93/0xb60
     ? __f_unlock_pos+0x15/0x20
     ? __x64_sys_getdents64+0x9b/0x130
     ? __pfx_filldir64+0x10/0x10
     ? do_syscall_64+0x1a2/0xb60
     ? clear_bhb_loop+0x30/0x80
     ? clear_bhb_loop+0x30/0x80
     entry_SYSCALL_64_after_hwframe+0x76/0x7e
    RIP: 0033:0x76e292edd574
    Code: c7 00 16 00 00 00 b8 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 80 3d d5 ea 0e 00 00 74 13 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 55 48 89 e5 48 83 ec 20 48 89
    RSP: 002b:00007fffe247a828 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 000076e292edd574
    RDX: 000000000000000c RSI: 00006267f6306063 RDI: 000000000000000b
    RBP: 000000000000000c R08: 000076e292fc4b20 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000202 R12: 00006267f6306063
    R13: 000000000000000b R14: 00006267e6859c00 R15: 000076e29322a000
     </TASK>
    xe 0000:03:00.0: [drm] Xe device coredump has been deleted.
    
    Fixes: 01daccf74832 ("devcoredump : Serialize devcd_del work")
    Cc: Mukesh Ojha <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Johannes Berg <[email protected]>
    Cc: Rafael J. Wysocki <[email protected]>
    Cc: Danilo Krummrich <[email protected]>
    Cc: [email protected]
    Cc: [email protected] # v6.1+
    Signed-off-by: Maarten Lankhorst <[email protected]>
    Cc: Matthew Brost <[email protected]>
    Acked-by: Mukesh Ojha <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    [ replaced disable_delayed_work_sync() with cancel_delayed_work_sync() ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dlm: check for defined force value in dlm_lockspace_release [+ + +]
Author: Alexander Aring <[email protected]>
Date:   Wed Jul 23 11:21:52 2025 -0400

    dlm: check for defined force value in dlm_lockspace_release
    
    [ Upstream commit 6af515c9f3ccec3eb8a262ca86bef2c499d07951 ]
    
    Force values over 3 are undefined, so don't treat them as 3.
    
    Signed-off-by: Alexander Aring <[email protected]>
    Signed-off-by: David Teigland <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dma-debug: don't report false positives with DMA_BOUNCE_UNALIGNED_KMALLOC [+ + +]
Author: Marek Szyprowski <[email protected]>
Date:   Thu Oct 9 16:15:08 2025 +0200

    dma-debug: don't report false positives with DMA_BOUNCE_UNALIGNED_KMALLOC
    
    commit 03521c892bb8d0712c23e158ae9bdf8705897df8 upstream.
    
    Commit 370645f41e6e ("dma-mapping: force bouncing if the kmalloc() size is
    not cache-line-aligned") introduced DMA_BOUNCE_UNALIGNED_KMALLOC feature
    and permitted architecture specific code configure kmalloc slabs with
    sizes smaller than the value of dma_get_cache_alignment().
    
    When that feature is enabled, the physical address of some small
    kmalloc()-ed buffers might be not aligned to the CPU cachelines, thus not
    really suitable for typical DMA.  To properly handle that case a SWIOTLB
    buffer bouncing is used, so no CPU cache corruption occurs.  When that
    happens, there is no point reporting a false-positive DMA-API warning that
    the buffer is not properly aligned, as this is not a client driver fault.
    
    [[email protected]: replace is_swiotlb_allocated() with is_swiotlb_active(), per Catalin]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 370645f41e6e ("dma-mapping: force bouncing if the kmalloc() size is not cache-line-aligned")
    Signed-off-by: Marek Szyprowski <[email protected]>
    Reviewed-by: Catalin Marinas <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Inki Dae <[email protected]>
    Cc: Robin Murohy <[email protected]>
    Cc: "Isaac J. Manjarres" <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dpaa2-eth: fix the pointer passed to PTR_ALIGN on Tx path [+ + +]
Author: Ioana Ciornei <[email protected]>
Date:   Thu Oct 16 16:58:07 2025 +0300

    dpaa2-eth: fix the pointer passed to PTR_ALIGN on Tx path
    
    [ Upstream commit 902e81e679d86846a2404630d349709ad9372d0d ]
    
    The blamed commit increased the needed headroom to account for
    alignment. This means that the size required to always align a Tx buffer
    was added inside the dpaa2_eth_needed_headroom() function. By doing
    that, a manual adjustment of the pointer passed to PTR_ALIGN() was no
    longer correct since the 'buffer_start' variable was already pointing
    to the start of the skb's memory.
    
    The behavior of the dpaa2-eth driver without this patch was to drop
    frames on Tx even when the headroom was matching the 128 bytes
    necessary. Fix this by removing the manual adjust of 'buffer_start' from
    the PTR_MODE call.
    
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Fixes: f422abe3f23d ("dpaa2-eth: increase the needed headroom to account for alignment")
    Signed-off-by: Ioana Ciornei <[email protected]>
    Tested-by: Mathew McBride <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drivers/perf: hisi: Relax the event ID check in the framework [+ + +]
Author: Yicong Yang <[email protected]>
Date:   Fri Aug 29 18:14:19 2025 +0800

    drivers/perf: hisi: Relax the event ID check in the framework
    
    [ Upstream commit 43de0ac332b815cf56dbdce63687de9acfd35d49 ]
    
    Event ID is only using the attr::config bit [7, 0] but we check the
    event range using the whole 64bit field. It blocks the usage of the
    rest field of attr::config. Relax the check by only using the
    bit [7, 0].
    
    Acked-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Yicong Yang <[email protected]>
    Signed-off-by: Yushan Wang <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dt-bindings: usb: dwc3-imx8mp: dma-range is required only for imx8mp [+ + +]
Author: Xu Yang <[email protected]>
Date:   Fri Sep 19 14:25:34 2025 +0800

    dt-bindings: usb: dwc3-imx8mp: dma-range is required only for imx8mp
    
    commit 268eb6fb908bc82ce479e4dba9a2cad11f536c9c upstream.
    
    Only i.MX8MP need dma-range property to let USB controller work properly.
    Remove dma-range from required list and add limitation for imx8mp.
    
    Fixes: d2a704e29711 ("dt-bindings: usb: dwc3-imx8mp: add imx8mp dwc3 glue bindings")
    Cc: stable <[email protected]>
    Reviewed-by: Jun Li <[email protected]>
    Signed-off-by: Xu Yang <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Acked-by: Conor Dooley <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
exec: Fix incorrect type for ret [+ + +]
Author: Xichao Zhao <[email protected]>
Date:   Mon Aug 25 15:36:09 2025 +0800

    exec: Fix incorrect type for ret
    
    [ Upstream commit 5e088248375d171b80c643051e77ade6b97bc386 ]
    
    In the setup_arg_pages(), ret is declared as an unsigned long.
    The ret might take a negative value. Therefore, its type should
    be changed to int.
    
    Signed-off-by: Xichao Zhao <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
 
firmware: arm_scmi: Account for failed debug initialization [+ + +]
Author: Cristian Marussi <[email protected]>
Date:   Tue Oct 14 12:53:44 2025 +0100

    firmware: arm_scmi: Account for failed debug initialization
    
    [ Upstream commit 2290ab43b9d8eafb8046387f10a8dfa2b030ba46 ]
    
    When the SCMI debug subsystem fails to initialize, the related debug root
    will be missing, and the underlying descriptor will be NULL.
    
    Handle this fault condition in the SCMI debug helpers that maintain
    metrics counters.
    
    Fixes: 0b3d48c4726e ("firmware: arm_scmi: Track basic SCMI communication debug metrics")
    Signed-off-by: Cristian Marussi <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

firmware: arm_scmi: Fix premature SCMI_XFER_FLAG_IS_RAW clearing in raw mode [+ + +]
Author: Artem Shimko <[email protected]>
Date:   Wed Oct 8 12:10:57 2025 +0300

    firmware: arm_scmi: Fix premature SCMI_XFER_FLAG_IS_RAW clearing in raw mode
    
    [ Upstream commit 20b93a0088a595bceed4a026d527cbbac4e876c5 ]
    
    The SCMI_XFER_FLAG_IS_RAW flag was being cleared prematurely in
    scmi_xfer_raw_put() before the transfer completion was properly
    acknowledged by the raw message handlers.
    
    Move the clearing of SCMI_XFER_FLAG_IS_RAW and SCMI_XFER_FLAG_CHAN_SET
    from scmi_xfer_raw_put() to __scmi_xfer_put() to ensure the flags remain
    set throughout the entire raw message processing pipeline until the
    transfer is returned to the free pool.
    
    Fixes: 3095a3e25d8f ("firmware: arm_scmi: Add xfer helpers to provide raw access")
    Suggested-by: Cristian Marussi <[email protected]>
    Signed-off-by: Artem Shimko <[email protected]>
    Reviewed-by: Cristian Marussi <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/notify: call exportfs_encode_fid with s_umount [+ + +]
Author: Jakub Acs <[email protected]>
Date:   Sun Oct 26 12:04:56 2025 -0400

    fs/notify: call exportfs_encode_fid with s_umount
    
    [ Upstream commit a7c4bb43bfdc2b9f06ee9d036028ed13a83df42a ]
    
    Calling intotify_show_fdinfo() on fd watching an overlayfs inode, while
    the overlayfs is being unmounted, can lead to dereferencing NULL ptr.
    
    This issue was found by syzkaller.
    
    Race Condition Diagram:
    
    Thread 1                           Thread 2
    --------                           --------
    
    generic_shutdown_super()
     shrink_dcache_for_umount
      sb->s_root = NULL
    
                        |
                        |             vfs_read()
                        |              inotify_fdinfo()
                        |               * inode get from mark *
                        |               show_mark_fhandle(m, inode)
                        |                exportfs_encode_fid(inode, ..)
                        |                 ovl_encode_fh(inode, ..)
                        |                  ovl_check_encode_origin(inode)
                        |                   * deref i_sb->s_root *
                        |
                        |
                        v
     fsnotify_sb_delete(sb)
    
    Which then leads to:
    
    [   32.133461] Oops: general protection fault, probably for non-canonical address 0xdffffc0000000006: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN NOPTI
    [   32.134438] KASAN: null-ptr-deref in range [0x0000000000000030-0x0000000000000037]
    [   32.135032] CPU: 1 UID: 0 PID: 4468 Comm: systemd-coredum Not tainted 6.17.0-rc6 #22 PREEMPT(none)
    
    <snip registers, unreliable trace>
    
    [   32.143353] Call Trace:
    [   32.143732]  ovl_encode_fh+0xd5/0x170
    [   32.144031]  exportfs_encode_inode_fh+0x12f/0x300
    [   32.144425]  show_mark_fhandle+0xbe/0x1f0
    [   32.145805]  inotify_fdinfo+0x226/0x2d0
    [   32.146442]  inotify_show_fdinfo+0x1c5/0x350
    [   32.147168]  seq_show+0x530/0x6f0
    [   32.147449]  seq_read_iter+0x503/0x12a0
    [   32.148419]  seq_read+0x31f/0x410
    [   32.150714]  vfs_read+0x1f0/0x9e0
    [   32.152297]  ksys_read+0x125/0x240
    
    IOW ovl_check_encode_origin derefs inode->i_sb->s_root, after it was set
    to NULL in the unmount path.
    
    Fix it by protecting calling exportfs_encode_fid() from
    show_mark_fhandle() with s_umount lock.
    
    This form of fix was suggested by Amir in [1].
    
    [1]: https://lore.kernel.org/all/CAOQ4uxhbDwhb+2Brs1UdkoF0a3NSdBAOQPNfEHjahrgoKJpLEw@mail.gmail.com/
    
    Fixes: c45beebfde34 ("ovl: support encoding fid from inode with no alias")
    Signed-off-by: Jakub Acs <[email protected]>
    Cc: Jan Kara <[email protected]>
    Cc: Amir Goldstein <[email protected]>
    Cc: Miklos Szeredi <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Jan Kara <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fuse: allocate ff->release_args only if release is needed [+ + +]
Author: Amir Goldstein <[email protected]>
Date:   Tue Oct 21 16:16:18 2025 -0400

    fuse: allocate ff->release_args only if release is needed
    
    [ Upstream commit e26ee4efbc79610b20e7abe9d96c87f33dacc1ff ]
    
    This removed the need to pass isdir argument to fuse_put_file().
    
    Signed-off-by: Amir Goldstein <[email protected]>
    Signed-off-by: Miklos Szeredi <[email protected]>
    Stable-dep-of: 26e5c67deb2e ("fuse: fix livelock in synchronous file put from fuseblk workers")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

fuse: fix livelock in synchronous file put from fuseblk workers [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Tue Oct 21 16:16:19 2025 -0400

    fuse: fix livelock in synchronous file put from fuseblk workers
    
    [ Upstream commit 26e5c67deb2e1f42a951f022fdf5b9f7eb747b01 ]
    
    I observed a hang when running generic/323 against a fuseblk server.
    This test opens a file, initiates a lot of AIO writes to that file
    descriptor, and closes the file descriptor before the writes complete.
    Unsurprisingly, the AIO exerciser threads are mostly stuck waiting for
    responses from the fuseblk server:
    
    # cat /proc/372265/task/372313/stack
    [<0>] request_wait_answer+0x1fe/0x2a0 [fuse]
    [<0>] __fuse_simple_request+0xd3/0x2b0 [fuse]
    [<0>] fuse_do_getattr+0xfc/0x1f0 [fuse]
    [<0>] fuse_file_read_iter+0xbe/0x1c0 [fuse]
    [<0>] aio_read+0x130/0x1e0
    [<0>] io_submit_one+0x542/0x860
    [<0>] __x64_sys_io_submit+0x98/0x1a0
    [<0>] do_syscall_64+0x37/0xf0
    [<0>] entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    But the /weird/ part is that the fuseblk server threads are waiting for
    responses from itself:
    
    # cat /proc/372210/task/372232/stack
    [<0>] request_wait_answer+0x1fe/0x2a0 [fuse]
    [<0>] __fuse_simple_request+0xd3/0x2b0 [fuse]
    [<0>] fuse_file_put+0x9a/0xd0 [fuse]
    [<0>] fuse_release+0x36/0x50 [fuse]
    [<0>] __fput+0xec/0x2b0
    [<0>] task_work_run+0x55/0x90
    [<0>] syscall_exit_to_user_mode+0xe9/0x100
    [<0>] do_syscall_64+0x43/0xf0
    [<0>] entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    The fuseblk server is fuse2fs so there's nothing all that exciting in
    the server itself.  So why is the fuse server calling fuse_file_put?
    The commit message for the fstest sheds some light on that:
    
    "By closing the file descriptor before calling io_destroy, you pretty
    much guarantee that the last put on the ioctx will be done in interrupt
    context (during I/O completion).
    
    Aha.  AIO fgets a new struct file from the fd when it queues the ioctx.
    The completion of the FUSE_WRITE command from userspace causes the fuse
    server to call the AIO completion function.  The completion puts the
    struct file, queuing a delayed fput to the fuse server task.  When the
    fuse server task returns to userspace, it has to run the delayed fput,
    which in the case of a fuseblk server, it does synchronously.
    
    Sending the FUSE_RELEASE command sychronously from fuse server threads
    is a bad idea because a client program can initiate enough simultaneous
    AIOs such that all the fuse server threads end up in delayed_fput, and
    now there aren't any threads left to handle the queued fuse commands.
    
    Fix this by only using asynchronous fputs when closing files, and leave
    a comment explaining why.
    
    Cc: [email protected] # v2.6.38
    Fixes: 5a18ec176c934c ("fuse: fix hang of single threaded fuseblk filesystem")
    Signed-off-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Miklos Szeredi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
gpio: 104-idio-16: Define maximum valid register address offset [+ + +]
Author: William Breathitt Gray <[email protected]>
Date:   Mon Oct 20 17:51:44 2025 +0900

    gpio: 104-idio-16: Define maximum valid register address offset
    
    commit c4d35e635f3a65aec291a6045cae8c99cede5bba upstream.
    
    Attempting to load the 104-idio-16 module fails during regmap
    initialization with a return error -EINVAL. This is a result of the
    regmap cache failing initialization. Set the idio_16_regmap_config
    max_register member to fix this failure.
    
    Fixes: 2c210c9a34a3 ("gpio: 104-idio-16: Migrate to the regmap API")
    Reported-by: Mark Cave-Ayland <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]
    Suggested-by: Mark Cave-Ayland <[email protected]>
    Cc: [email protected]
    Reviewed-by: Andy Shevchenko <[email protected]>
    Signed-off-by: William Breathitt Gray <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gpio: ljca: Fix duplicated IRQ mapping [+ + +]
Author: Haotian Zhang <[email protected]>
Date:   Thu Oct 23 15:02:30 2025 +0800

    gpio: ljca: Fix duplicated IRQ mapping
    
    [ Upstream commit 4c4e6ea4a120cc5ab58e437c6ba123cbfc357d45 ]
    
    The generic_handle_domain_irq() function resolves the hardware IRQ
    internally. The driver performed a duplicative mapping by calling
    irq_find_mapping() first, which could lead to an RCU stall.
    
    Delete the redundant irq_find_mapping() call and pass the hardware IRQ
    directly to generic_handle_domain_irq().
    
    Fixes: c5a4b6fd31e8 ("gpio: Add support for Intel LJCA USB GPIO driver")
    Signed-off-by: Haotian Zhang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [Bartosz: remove unused variable]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gpio: ljca: Initialize num before accessing item in ljca_gpio_config [+ + +]
Author: Haoyu Li <[email protected]>
Date:   Tue Dec 3 22:14:51 2024 +0800

    gpio: ljca: Initialize num before accessing item in ljca_gpio_config
    
    commit 3396995f9fb6bcbe0004a68118a22f98bab6e2b9 upstream.
    
    With the new __counted_by annocation in ljca_gpio_packet, the "num"
    struct member must be set before accessing the "item" array. Failing to
    do so will trigger a runtime warning when enabling CONFIG_UBSAN_BOUNDS
    and CONFIG_FORTIFY_SOURCE.
    
    Fixes: 1034cc423f1b ("gpio: update Intel LJCA USB GPIO driver")
    Cc: [email protected]
    Signed-off-by: Haoyu Li <[email protected]>
    Link: https://lore.kernel.org/stable/20241203141451.342316-1-lihaoyu499%40gmail.com
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gpio: pci-idio-16: Define maximum valid register address offset [+ + +]
Author: William Breathitt Gray <[email protected]>
Date:   Mon Oct 20 17:51:45 2025 +0900

    gpio: pci-idio-16: Define maximum valid register address offset
    
    commit d37623132a6347b4ab9e2179eb3f2fa77863c364 upstream.
    
    Attempting to load the pci-idio-16 module fails during regmap
    initialization with a return error -EINVAL. This is a result of the
    regmap cache failing initialization. Set the idio_16_regmap_config
    max_register member to fix this failure.
    
    Fixes: 73d8f3efc5c2 ("gpio: pci-idio-16: Migrate to the regmap API")
    Reported-by: Mark Cave-Ayland <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]
    Suggested-by: Mark Cave-Ayland <[email protected]>
    Cc: [email protected]
    Reviewed-by: Andy Shevchenko <[email protected]>
    Signed-off-by: William Breathitt Gray <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gpio: update Intel LJCA USB GPIO driver [+ + +]
Author: Wentong Wu <[email protected]>
Date:   Mon Oct 9 14:33:25 2023 +0800

    gpio: update Intel LJCA USB GPIO driver
    
    [ Upstream commit 1034cc423f1b4a7a9a56d310ca980fcd2753e11d ]
    
    This driver communicate with LJCA GPIO module with specific
    protocol through interfaces exported by LJCA USB driver.
    Update the driver according to LJCA USB driver's changes.
    
    Signed-off-by: Wentong Wu <[email protected]>
    Reviewed-by: Sakari Ailus <[email protected]>
    Acked-by: Linus Walleij <[email protected]>
    Acked-by: Bartosz Golaszewski <[email protected]>
    Tested-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Stable-dep-of: 4c4e6ea4a120 ("gpio: ljca: Fix duplicated IRQ mapping")
    Signed-off-by: Sasha Levin <[email protected]>

 
hfs: clear offset and space out of valid records in b-tree node [+ + +]
Author: Viacheslav Dubeyko <[email protected]>
Date:   Fri Aug 15 12:49:19 2025 -0700

    hfs: clear offset and space out of valid records in b-tree node
    
    [ Upstream commit 18b07c44f245beb03588b00b212b38fce9af7cc9 ]
    
    Currently, hfs_brec_remove() executes moving records
    towards the location of deleted record and it updates
    offsets of moved records. However, the hfs_brec_remove()
    logic ignores the "mess" of b-tree node's free space and
    it doesn't touch the offsets out of records number.
    Potentially, it could confuse fsck or driver logic or
    to be a reason of potential corruption cases.
    
    This patch reworks the logic of hfs_brec_remove()
    by means of clearing freed space of b-tree node
    after the records moving. And it clear the last
    offset that keeping old location of free space
    because now the offset before this one is keeping
    the actual offset to the free space after the record
    deletion.
    
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    cc: John Paul Adrian Glaubitz <[email protected]>
    cc: Yangtao Li <[email protected]>
    cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hfs: fix KMSAN uninit-value issue in hfs_find_set_zero_bits() [+ + +]
Author: Viacheslav Dubeyko <[email protected]>
Date:   Wed Aug 20 16:06:38 2025 -0700

    hfs: fix KMSAN uninit-value issue in hfs_find_set_zero_bits()
    
    [ Upstream commit 2048ec5b98dbdfe0b929d2e42dc7a54c389c53dd ]
    
    The syzbot reported issue in hfs_find_set_zero_bits():
    
    =====================================================
    BUG: KMSAN: uninit-value in hfs_find_set_zero_bits+0x74d/0xb60 fs/hfs/bitmap.c:45
     hfs_find_set_zero_bits+0x74d/0xb60 fs/hfs/bitmap.c:45
     hfs_vbm_search_free+0x13c/0x5b0 fs/hfs/bitmap.c:151
     hfs_extend_file+0x6a5/0x1b00 fs/hfs/extent.c:408
     hfs_get_block+0x435/0x1150 fs/hfs/extent.c:353
     __block_write_begin_int+0xa76/0x3030 fs/buffer.c:2151
     block_write_begin fs/buffer.c:2262 [inline]
     cont_write_begin+0x10e1/0x1bc0 fs/buffer.c:2601
     hfs_write_begin+0x85/0x130 fs/hfs/inode.c:52
     cont_expand_zero fs/buffer.c:2528 [inline]
     cont_write_begin+0x35a/0x1bc0 fs/buffer.c:2591
     hfs_write_begin+0x85/0x130 fs/hfs/inode.c:52
     hfs_file_truncate+0x1d6/0xe60 fs/hfs/extent.c:494
     hfs_inode_setattr+0x964/0xaa0 fs/hfs/inode.c:654
     notify_change+0x1993/0x1aa0 fs/attr.c:552
     do_truncate+0x28f/0x310 fs/open.c:68
     do_ftruncate+0x698/0x730 fs/open.c:195
     do_sys_ftruncate fs/open.c:210 [inline]
     __do_sys_ftruncate fs/open.c:215 [inline]
     __se_sys_ftruncate fs/open.c:213 [inline]
     __x64_sys_ftruncate+0x11b/0x250 fs/open.c:213
     x64_sys_call+0xfe3/0x3db0 arch/x86/include/generated/asm/syscalls_64.h:78
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xd9/0x210 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Uninit was created at:
     slab_post_alloc_hook mm/slub.c:4154 [inline]
     slab_alloc_node mm/slub.c:4197 [inline]
     __kmalloc_cache_noprof+0x7f7/0xed0 mm/slub.c:4354
     kmalloc_noprof include/linux/slab.h:905 [inline]
     hfs_mdb_get+0x1cc8/0x2a90 fs/hfs/mdb.c:175
     hfs_fill_super+0x3d0/0xb80 fs/hfs/super.c:337
     get_tree_bdev_flags+0x6e3/0x920 fs/super.c:1681
     get_tree_bdev+0x38/0x50 fs/super.c:1704
     hfs_get_tree+0x35/0x40 fs/hfs/super.c:388
     vfs_get_tree+0xb0/0x5c0 fs/super.c:1804
     do_new_mount+0x738/0x1610 fs/namespace.c:3902
     path_mount+0x6db/0x1e90 fs/namespace.c:4226
     do_mount fs/namespace.c:4239 [inline]
     __do_sys_mount fs/namespace.c:4450 [inline]
     __se_sys_mount+0x6eb/0x7d0 fs/namespace.c:4427
     __x64_sys_mount+0xe4/0x150 fs/namespace.c:4427
     x64_sys_call+0xfa7/0x3db0 arch/x86/include/generated/asm/syscalls_64.h:166
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xd9/0x210 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    CPU: 1 UID: 0 PID: 12609 Comm: syz.1.2692 Not tainted 6.16.0-syzkaller #0 PREEMPT(none)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/12/2025
    =====================================================
    
    The HFS_SB(sb)->bitmap buffer is allocated in hfs_mdb_get():
    
    HFS_SB(sb)->bitmap = kmalloc(8192, GFP_KERNEL);
    
    Finally, it can trigger the reported issue because kmalloc()
    doesn't clear the allocated memory. If allocated memory contains
    only zeros, then everything will work pretty fine.
    But if the allocated memory contains the "garbage", then
    it can affect the bitmap operations and it triggers
    the reported issue.
    
    This patch simply exchanges the kmalloc() on kzalloc()
    with the goal to guarantee the correctness of bitmap operations.
    Because, newly created allocation bitmap should have all
    available blocks free. Potentially, initialization bitmap's read
    operation could not fill the whole allocated memory and
    "garbage" in the not initialized memory will be the reason of
    volume coruptions and file system driver bugs.
    
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=773fa9d79b29bd8b6831
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    cc: John Paul Adrian Glaubitz <[email protected]>
    cc: Yangtao Li <[email protected]>
    cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hfs: make proper initalization of struct hfs_find_data [+ + +]
Author: Viacheslav Dubeyko <[email protected]>
Date:   Mon Aug 18 15:52:52 2025 -0700

    hfs: make proper initalization of struct hfs_find_data
    
    [ Upstream commit c62663a986acee7c4485c1fa9de5fc40194b6290 ]
    
    Potenatially, __hfs_ext_read_extent() could operate by
    not initialized values of fd->key after hfs_brec_find() call:
    
    static inline int __hfs_ext_read_extent(struct hfs_find_data *fd, struct hfs_extent *extent,
                                            u32 cnid, u32 block, u8 type)
    {
            int res;
    
            hfs_ext_build_key(fd->search_key, cnid, block, type);
            fd->key->ext.FNum = 0;
            res = hfs_brec_find(fd);
            if (res && res != -ENOENT)
                    return res;
            if (fd->key->ext.FNum != fd->search_key->ext.FNum ||
                fd->key->ext.FkType != fd->search_key->ext.FkType)
                    return -ENOENT;
            if (fd->entrylength != sizeof(hfs_extent_rec))
                    return -EIO;
            hfs_bnode_read(fd->bnode, extent, fd->entryoffset, sizeof(hfs_extent_rec));
            return 0;
    }
    
    This patch changes kmalloc() on kzalloc() in hfs_find_init()
    and intializes fd->record, fd->keyoffset, fd->keylength,
    fd->entryoffset, fd->entrylength for the case if hfs_brec_find()
    has been found nothing in the b-tree node.
    
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    cc: John Paul Adrian Glaubitz <[email protected]>
    cc: Yangtao Li <[email protected]>
    cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hfs: validate record offset in hfsplus_bmap_alloc [+ + +]
Author: Yang Chenzhi <[email protected]>
Date:   Mon Aug 18 22:17:34 2025 +0800

    hfs: validate record offset in hfsplus_bmap_alloc
    
    [ Upstream commit 738d5a51864ed8d7a68600b8c0c63fe6fe5c4f20 ]
    
    hfsplus_bmap_alloc can trigger a crash if a
    record offset or length is larger than node_size
    
    [   15.264282] BUG: KASAN: slab-out-of-bounds in hfsplus_bmap_alloc+0x887/0x8b0
    [   15.265192] Read of size 8 at addr ffff8881085ca188 by task test/183
    [   15.265949]
    [   15.266163] CPU: 0 UID: 0 PID: 183 Comm: test Not tainted 6.17.0-rc2-gc17b750b3ad9 #14 PREEMPT(voluntary)
    [   15.266165] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   15.266167] Call Trace:
    [   15.266168]  <TASK>
    [   15.266169]  dump_stack_lvl+0x53/0x70
    [   15.266173]  print_report+0xd0/0x660
    [   15.266181]  kasan_report+0xce/0x100
    [   15.266185]  hfsplus_bmap_alloc+0x887/0x8b0
    [   15.266208]  hfs_btree_inc_height.isra.0+0xd5/0x7c0
    [   15.266217]  hfsplus_brec_insert+0x870/0xb00
    [   15.266222]  __hfsplus_ext_write_extent+0x428/0x570
    [   15.266225]  __hfsplus_ext_cache_extent+0x5e/0x910
    [   15.266227]  hfsplus_ext_read_extent+0x1b2/0x200
    [   15.266233]  hfsplus_file_extend+0x5a7/0x1000
    [   15.266237]  hfsplus_get_block+0x12b/0x8c0
    [   15.266238]  __block_write_begin_int+0x36b/0x12c0
    [   15.266251]  block_write_begin+0x77/0x110
    [   15.266252]  cont_write_begin+0x428/0x720
    [   15.266259]  hfsplus_write_begin+0x51/0x100
    [   15.266262]  cont_write_begin+0x272/0x720
    [   15.266270]  hfsplus_write_begin+0x51/0x100
    [   15.266274]  generic_perform_write+0x321/0x750
    [   15.266285]  generic_file_write_iter+0xc3/0x310
    [   15.266289]  __kernel_write_iter+0x2fd/0x800
    [   15.266296]  dump_user_range+0x2ea/0x910
    [   15.266301]  elf_core_dump+0x2a94/0x2ed0
    [   15.266320]  vfs_coredump+0x1d85/0x45e0
    [   15.266349]  get_signal+0x12e3/0x1990
    [   15.266357]  arch_do_signal_or_restart+0x89/0x580
    [   15.266362]  irqentry_exit_to_user_mode+0xab/0x110
    [   15.266364]  asm_exc_page_fault+0x26/0x30
    [   15.266366] RIP: 0033:0x41bd35
    [   15.266367] Code: bc d1 f3 0f 7f 27 f3 0f 7f 6f 10 f3 0f 7f 77 20 f3 0f 7f 7f 30 49 83 c0 0f 49 29 d0 48 8d 7c 17 31 e9 9f 0b 00 00 66 0f ef c0 <f3> 0f 6f 0e f3 0f 6f 56 10 66 0f 74 c1 66 0f d7 d0 49 83 f8f
    [   15.266369] RSP: 002b:00007ffc9e62d078 EFLAGS: 00010283
    [   15.266371] RAX: 00007ffc9e62d100 RBX: 0000000000000000 RCX: 0000000000000000
    [   15.266372] RDX: 00000000000000e0 RSI: 0000000000000000 RDI: 00007ffc9e62d100
    [   15.266373] RBP: 0000400000000040 R08: 00000000000000e0 R09: 0000000000000000
    [   15.266374] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    [   15.266375] R13: 0000000000000000 R14: 0000000000000000 R15: 0000400000000000
    [   15.266376]  </TASK>
    
    When calling hfsplus_bmap_alloc to allocate a free node, this function
    first retrieves the bitmap from header node and map node using node->page
    together with the offset and length from hfs_brec_lenoff
    
    ```
    len = hfs_brec_lenoff(node, 2, &off16);
    off = off16;
    
    off += node->page_offset;
    pagep = node->page + (off >> PAGE_SHIFT);
    data = kmap_local_page(*pagep);
    ```
    
    However, if the retrieved offset or length is invalid(i.e. exceeds
    node_size), the code may end up accessing pages outside the allocated
    range for this node.
    
    This patch adds proper validation of both offset and length before use,
    preventing out-of-bounds page access. Move is_bnode_offset_valid and
    check_and_correct_requested_length to hfsplus_fs.h, as they may be
    required by other functions.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Yang Chenzhi <[email protected]>
    Reviewed-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hfsplus: fix KMSAN uninit-value issue in __hfsplus_ext_cache_extent() [+ + +]
Author: Viacheslav Dubeyko <[email protected]>
Date:   Mon Aug 18 15:52:32 2025 -0700

    hfsplus: fix KMSAN uninit-value issue in __hfsplus_ext_cache_extent()
    
    [ Upstream commit 4840ceadef4290c56cc422f0fc697655f3cbf070 ]
    
    The syzbot reported issue in __hfsplus_ext_cache_extent():
    
    [   70.194323][ T9350] BUG: KMSAN: uninit-value in __hfsplus_ext_cache_extent+0x7d0/0x990
    [   70.195022][ T9350]  __hfsplus_ext_cache_extent+0x7d0/0x990
    [   70.195530][ T9350]  hfsplus_file_extend+0x74f/0x1cf0
    [   70.195998][ T9350]  hfsplus_get_block+0xe16/0x17b0
    [   70.196458][ T9350]  __block_write_begin_int+0x962/0x2ce0
    [   70.196959][ T9350]  cont_write_begin+0x1000/0x1950
    [   70.197416][ T9350]  hfsplus_write_begin+0x85/0x130
    [   70.197873][ T9350]  generic_perform_write+0x3e8/0x1060
    [   70.198374][ T9350]  __generic_file_write_iter+0x215/0x460
    [   70.198892][ T9350]  generic_file_write_iter+0x109/0x5e0
    [   70.199393][ T9350]  vfs_write+0xb0f/0x14e0
    [   70.199771][ T9350]  ksys_write+0x23e/0x490
    [   70.200149][ T9350]  __x64_sys_write+0x97/0xf0
    [   70.200570][ T9350]  x64_sys_call+0x3015/0x3cf0
    [   70.201065][ T9350]  do_syscall_64+0xd9/0x1d0
    [   70.201506][ T9350]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   70.202054][ T9350]
    [   70.202279][ T9350] Uninit was created at:
    [   70.202693][ T9350]  __kmalloc_noprof+0x621/0xf80
    [   70.203149][ T9350]  hfsplus_find_init+0x8d/0x1d0
    [   70.203602][ T9350]  hfsplus_file_extend+0x6ca/0x1cf0
    [   70.204087][ T9350]  hfsplus_get_block+0xe16/0x17b0
    [   70.204561][ T9350]  __block_write_begin_int+0x962/0x2ce0
    [   70.205074][ T9350]  cont_write_begin+0x1000/0x1950
    [   70.205547][ T9350]  hfsplus_write_begin+0x85/0x130
    [   70.206017][ T9350]  generic_perform_write+0x3e8/0x1060
    [   70.206519][ T9350]  __generic_file_write_iter+0x215/0x460
    [   70.207042][ T9350]  generic_file_write_iter+0x109/0x5e0
    [   70.207552][ T9350]  vfs_write+0xb0f/0x14e0
    [   70.207961][ T9350]  ksys_write+0x23e/0x490
    [   70.208375][ T9350]  __x64_sys_write+0x97/0xf0
    [   70.208810][ T9350]  x64_sys_call+0x3015/0x3cf0
    [   70.209255][ T9350]  do_syscall_64+0xd9/0x1d0
    [   70.209680][ T9350]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   70.210230][ T9350]
    [   70.210454][ T9350] CPU: 2 UID: 0 PID: 9350 Comm: repro Not tainted 6.12.0-rc5 #5
    [   70.211174][ T9350] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   70.212115][ T9350] =====================================================
    [   70.212734][ T9350] Disabling lock debugging due to kernel taint
    [   70.213284][ T9350] Kernel panic - not syncing: kmsan.panic set ...
    [   70.213858][ T9350] CPU: 2 UID: 0 PID: 9350 Comm: repro Tainted: G    B              6.12.0-rc5 #5
    [   70.214679][ T9350] Tainted: [B]=BAD_PAGE
    [   70.215057][ T9350] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   70.215999][ T9350] Call Trace:
    [   70.216309][ T9350]  <TASK>
    [   70.216585][ T9350]  dump_stack_lvl+0x1fd/0x2b0
    [   70.217025][ T9350]  dump_stack+0x1e/0x30
    [   70.217421][ T9350]  panic+0x502/0xca0
    [   70.217803][ T9350]  ? kmsan_get_metadata+0x13e/0x1c0
    
    [   70.218294][ Message fromT sy9350]  kmsan_report+0x296/slogd@syzkaller 0x2aat Aug 18 22:11:058 ...
     kernel
    :[   70.213284][ T9350] Kernel panic - not syncing: kmsan.panic [   70.220179][ T9350]  ? kmsan_get_metadata+0x13e/0x1c0
    set ...
    [   70.221254][ T9350]  ? __msan_warning+0x96/0x120
    [   70.222066][ T9350]  ? __hfsplus_ext_cache_extent+0x7d0/0x990
    [   70.223023][ T9350]  ? hfsplus_file_extend+0x74f/0x1cf0
    [   70.224120][ T9350]  ? hfsplus_get_block+0xe16/0x17b0
    [   70.224946][ T9350]  ? __block_write_begin_int+0x962/0x2ce0
    [   70.225756][ T9350]  ? cont_write_begin+0x1000/0x1950
    [   70.226337][ T9350]  ? hfsplus_write_begin+0x85/0x130
    [   70.226852][ T9350]  ? generic_perform_write+0x3e8/0x1060
    [   70.227405][ T9350]  ? __generic_file_write_iter+0x215/0x460
    [   70.227979][ T9350]  ? generic_file_write_iter+0x109/0x5e0
    [   70.228540][ T9350]  ? vfs_write+0xb0f/0x14e0
    [   70.228997][ T9350]  ? ksys_write+0x23e/0x490
    [   70.229458][ T9350]  ? __x64_sys_write+0x97/0xf0
    [   70.229939][ T9350]  ? x64_sys_call+0x3015/0x3cf0
    [   70.230432][ T9350]  ? do_syscall_64+0xd9/0x1d0
    [   70.230941][ T9350]  ? entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   70.231926][ T9350]  ? kmsan_get_metadata+0x13e/0x1c0
    [   70.232738][ T9350]  ? kmsan_internal_set_shadow_origin+0x77/0x110
    [   70.233711][ T9350]  ? kmsan_get_metadata+0x13e/0x1c0
    [   70.234516][ T9350]  ? kmsan_get_shadow_origin_ptr+0x4a/0xb0
    [   70.235398][ T9350]  ? __msan_metadata_ptr_for_load_4+0x24/0x40
    [   70.236323][ T9350]  ? hfsplus_brec_find+0x218/0x9f0
    [   70.237090][ T9350]  ? __pfx_hfs_find_rec_by_key+0x10/0x10
    [   70.237938][ T9350]  ? __msan_instrument_asm_store+0xbf/0xf0
    [   70.238827][ T9350]  ? __msan_metadata_ptr_for_store_4+0x27/0x40
    [   70.239772][ T9350]  ? __hfsplus_ext_write_extent+0x536/0x620
    [   70.240666][ T9350]  ? kmsan_get_metadata+0x13e/0x1c0
    [   70.241175][ T9350]  __msan_warning+0x96/0x120
    [   70.241645][ T9350]  __hfsplus_ext_cache_extent+0x7d0/0x990
    [   70.242223][ T9350]  hfsplus_file_extend+0x74f/0x1cf0
    [   70.242748][ T9350]  hfsplus_get_block+0xe16/0x17b0
    [   70.243255][ T9350]  ? kmsan_internal_set_shadow_origin+0x77/0x110
    [   70.243878][ T9350]  ? kmsan_get_metadata+0x13e/0x1c0
    [   70.244400][ T9350]  ? kmsan_get_shadow_origin_ptr+0x4a/0xb0
    [   70.244967][ T9350]  __block_write_begin_int+0x962/0x2ce0
    [   70.245531][ T9350]  ? __pfx_hfsplus_get_block+0x10/0x10
    [   70.246079][ T9350]  cont_write_begin+0x1000/0x1950
    [   70.246598][ T9350]  hfsplus_write_begin+0x85/0x130
    [   70.247105][ T9350]  ? __pfx_hfsplus_get_block+0x10/0x10
    [   70.247650][ T9350]  ? __pfx_hfsplus_write_begin+0x10/0x10
    [   70.248211][ T9350]  generic_perform_write+0x3e8/0x1060
    [   70.248752][ T9350]  __generic_file_write_iter+0x215/0x460
    [   70.249314][ T9350]  generic_file_write_iter+0x109/0x5e0
    [   70.249856][ T9350]  ? kmsan_internal_set_shadow_origin+0x77/0x110
    [   70.250487][ T9350]  vfs_write+0xb0f/0x14e0
    [   70.250930][ T9350]  ? __pfx_generic_file_write_iter+0x10/0x10
    [   70.251530][ T9350]  ksys_write+0x23e/0x490
    [   70.251974][ T9350]  __x64_sys_write+0x97/0xf0
    [   70.252450][ T9350]  x64_sys_call+0x3015/0x3cf0
    [   70.252924][ T9350]  do_syscall_64+0xd9/0x1d0
    [   70.253384][ T9350]  ? irqentry_exit+0x16/0x60
    [   70.253844][ T9350]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   70.254430][ T9350] RIP: 0033:0x7f7a92adffc9
    [   70.254873][ T9350] Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 48
    [   70.256674][ T9350] RSP: 002b:00007fff0bca3188 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
    [   70.257485][ T9350] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f7a92adffc9
    [   70.258246][ T9350] RDX: 000000000208e24b RSI: 0000000020000100 RDI: 0000000000000004
    [   70.258998][ T9350] RBP: 00007fff0bca31a0 R08: 00007fff0bca31a0 R09: 00007fff0bca31a0
    [   70.259769][ T9350] R10: 0000000000000000 R11: 0000000000000202 R12: 000055e0d75f8250
    [   70.260520][ T9350] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    [   70.261286][ T9350]  </TASK>
    [   70.262026][ T9350] Kernel Offset: disabled
    
    (gdb) l *__hfsplus_ext_cache_extent+0x7d0
    0xffffffff8318aef0 is in __hfsplus_ext_cache_extent (fs/hfsplus/extents.c:168).
    163             fd->key->ext.cnid = 0;
    164             res = hfs_brec_find(fd, hfs_find_rec_by_key);
    165             if (res && res != -ENOENT)
    166                     return res;
    167             if (fd->key->ext.cnid != fd->search_key->ext.cnid ||
    168                 fd->key->ext.fork_type != fd->search_key->ext.fork_type)
    169                     return -ENOENT;
    170             if (fd->entrylength != sizeof(hfsplus_extent_rec))
    171                     return -EIO;
    172             hfs_bnode_read(fd->bnode, extent, fd->entryoffset,
    
    The __hfsplus_ext_cache_extent() calls __hfsplus_ext_read_extent():
    
    res = __hfsplus_ext_read_extent(fd, hip->cached_extents, inode->i_ino,
                                    block, HFSPLUS_IS_RSRC(inode) ?
                                            HFSPLUS_TYPE_RSRC :
                                            HFSPLUS_TYPE_DATA);
    
    And if inode->i_ino could be equal to zero or any non-available CNID,
    then hfs_brec_find() could not find the record in the tree. As a result,
    fd->key could be compared with fd->search_key. But hfsplus_find_init()
    uses kmalloc() for fd->key and fd->search_key allocation:
    
    int hfs_find_init(struct hfs_btree *tree, struct hfs_find_data *fd)
    {
    <skipped>
            ptr = kmalloc(tree->max_key_len * 2 + 4, GFP_KERNEL);
            if (!ptr)
                    return -ENOMEM;
            fd->search_key = ptr;
            fd->key = ptr + tree->max_key_len + 2;
    <skipped>
    }
    
    Finally, fd->key is still not initialized if hfs_brec_find()
    has found nothing.
    
    This patch changes kmalloc() on kzalloc() in hfs_find_init()
    and intializes fd->record, fd->keyoffset, fd->keylength,
    fd->entryoffset, fd->entrylength for the case if hfs_brec_find()
    has been found nothing in the b-tree node.
    
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=55ad87f38795d6787521
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    cc: John Paul Adrian Glaubitz <[email protected]>
    cc: Yangtao Li <[email protected]>
    cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hfsplus: fix KMSAN uninit-value issue in hfsplus_delete_cat() [+ + +]
Author: Viacheslav Dubeyko <[email protected]>
Date:   Mon Aug 25 15:51:04 2025 -0700

    hfsplus: fix KMSAN uninit-value issue in hfsplus_delete_cat()
    
    [ Upstream commit 9b3d15a758910bb98ba8feb4109d99cc67450ee4 ]
    
    The syzbot reported issue in hfsplus_delete_cat():
    
    [   70.682285][ T9333] =====================================================
    [   70.682943][ T9333] BUG: KMSAN: uninit-value in hfsplus_subfolders_dec+0x1d7/0x220
    [   70.683640][ T9333]  hfsplus_subfolders_dec+0x1d7/0x220
    [   70.684141][ T9333]  hfsplus_delete_cat+0x105d/0x12b0
    [   70.684621][ T9333]  hfsplus_rmdir+0x13d/0x310
    [   70.685048][ T9333]  vfs_rmdir+0x5ba/0x810
    [   70.685447][ T9333]  do_rmdir+0x964/0xea0
    [   70.685833][ T9333]  __x64_sys_rmdir+0x71/0xb0
    [   70.686260][ T9333]  x64_sys_call+0xcd8/0x3cf0
    [   70.686695][ T9333]  do_syscall_64+0xd9/0x1d0
    [   70.687119][ T9333]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   70.687646][ T9333]
    [   70.687856][ T9333] Uninit was stored to memory at:
    [   70.688311][ T9333]  hfsplus_subfolders_inc+0x1c2/0x1d0
    [   70.688779][ T9333]  hfsplus_create_cat+0x148e/0x1800
    [   70.689231][ T9333]  hfsplus_mknod+0x27f/0x600
    [   70.689730][ T9333]  hfsplus_mkdir+0x5a/0x70
    [   70.690146][ T9333]  vfs_mkdir+0x483/0x7a0
    [   70.690545][ T9333]  do_mkdirat+0x3f2/0xd30
    [   70.690944][ T9333]  __x64_sys_mkdir+0x9a/0xf0
    [   70.691380][ T9333]  x64_sys_call+0x2f89/0x3cf0
    [   70.691816][ T9333]  do_syscall_64+0xd9/0x1d0
    [   70.692229][ T9333]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   70.692773][ T9333]
    [   70.692990][ T9333] Uninit was stored to memory at:
    [   70.693469][ T9333]  hfsplus_subfolders_inc+0x1c2/0x1d0
    [   70.693960][ T9333]  hfsplus_create_cat+0x148e/0x1800
    [   70.694438][ T9333]  hfsplus_fill_super+0x21c1/0x2700
    [   70.694911][ T9333]  mount_bdev+0x37b/0x530
    [   70.695320][ T9333]  hfsplus_mount+0x4d/0x60
    [   70.695729][ T9333]  legacy_get_tree+0x113/0x2c0
    [   70.696167][ T9333]  vfs_get_tree+0xb3/0x5c0
    [   70.696588][ T9333]  do_new_mount+0x73e/0x1630
    [   70.697013][ T9333]  path_mount+0x6e3/0x1eb0
    [   70.697425][ T9333]  __se_sys_mount+0x733/0x830
    [   70.697857][ T9333]  __x64_sys_mount+0xe4/0x150
    [   70.698269][ T9333]  x64_sys_call+0x2691/0x3cf0
    [   70.698704][ T9333]  do_syscall_64+0xd9/0x1d0
    [   70.699117][ T9333]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   70.699730][ T9333]
    [   70.699946][ T9333] Uninit was created at:
    [   70.700378][ T9333]  __alloc_pages_noprof+0x714/0xe60
    [   70.700843][ T9333]  alloc_pages_mpol_noprof+0x2a2/0x9b0
    [   70.701331][ T9333]  alloc_pages_noprof+0xf8/0x1f0
    [   70.701774][ T9333]  allocate_slab+0x30e/0x1390
    [   70.702194][ T9333]  ___slab_alloc+0x1049/0x33a0
    [   70.702635][ T9333]  kmem_cache_alloc_lru_noprof+0x5ce/0xb20
    [   70.703153][ T9333]  hfsplus_alloc_inode+0x5a/0xd0
    [   70.703598][ T9333]  alloc_inode+0x82/0x490
    [   70.703984][ T9333]  iget_locked+0x22e/0x1320
    [   70.704428][ T9333]  hfsplus_iget+0x5c/0xba0
    [   70.704827][ T9333]  hfsplus_btree_open+0x135/0x1dd0
    [   70.705291][ T9333]  hfsplus_fill_super+0x1132/0x2700
    [   70.705776][ T9333]  mount_bdev+0x37b/0x530
    [   70.706171][ T9333]  hfsplus_mount+0x4d/0x60
    [   70.706579][ T9333]  legacy_get_tree+0x113/0x2c0
    [   70.707019][ T9333]  vfs_get_tree+0xb3/0x5c0
    [   70.707444][ T9333]  do_new_mount+0x73e/0x1630
    [   70.707865][ T9333]  path_mount+0x6e3/0x1eb0
    [   70.708270][ T9333]  __se_sys_mount+0x733/0x830
    [   70.708711][ T9333]  __x64_sys_mount+0xe4/0x150
    [   70.709158][ T9333]  x64_sys_call+0x2691/0x3cf0
    [   70.709630][ T9333]  do_syscall_64+0xd9/0x1d0
    [   70.710053][ T9333]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   70.710611][ T9333]
    [   70.710842][ T9333] CPU: 3 UID: 0 PID: 9333 Comm: repro Not tainted 6.12.0-rc6-dirty #17
    [   70.711568][ T9333] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   70.712490][ T9333] =====================================================
    [   70.713085][ T9333] Disabling lock debugging due to kernel taint
    [   70.713618][ T9333] Kernel panic - not syncing: kmsan.panic set ...
    [   70.714159][ T9333] CPU: 3 UID: 0 PID: 9333 Comm: repro Tainted: G    B              6.12.0-rc6-dirty #17
    [   70.715007][ T9333] Tainted: [B]=BAD_PAGE
    [   70.715365][ T9333] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   70.716311][ T9333] Call Trace:
    [   70.716621][ T9333]  <TASK>
    [   70.716899][ T9333]  dump_stack_lvl+0x1fd/0x2b0
    [   70.717350][ T9333]  dump_stack+0x1e/0x30
    [   70.717743][ T9333]  panic+0x502/0xca0
    [   70.718116][ T9333]  ? kmsan_get_metadata+0x13e/0x1c0
    [   70.718611][ T9333]  kmsan_report+0x296/0x2a0
    [   70.719038][ T9333]  ? __msan_metadata_ptr_for_load_4+0x24/0x40
    [   70.719859][ T9333]  ? __msan_warning+0x96/0x120
    [   70.720345][ T9333]  ? hfsplus_subfolders_dec+0x1d7/0x220
    [   70.720881][ T9333]  ? hfsplus_delete_cat+0x105d/0x12b0
    [   70.721412][ T9333]  ? hfsplus_rmdir+0x13d/0x310
    [   70.721880][ T9333]  ? vfs_rmdir+0x5ba/0x810
    [   70.722458][ T9333]  ? do_rmdir+0x964/0xea0
    [   70.722883][ T9333]  ? __x64_sys_rmdir+0x71/0xb0
    [   70.723397][ T9333]  ? x64_sys_call+0xcd8/0x3cf0
    [   70.723915][ T9333]  ? do_syscall_64+0xd9/0x1d0
    [   70.724454][ T9333]  ? entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   70.725110][ T9333]  ? vprintk_emit+0xd1f/0xe60
    [   70.725616][ T9333]  ? vprintk_default+0x3f/0x50
    [   70.726175][ T9333]  ? vprintk+0xce/0xd0
    [   70.726628][ T9333]  ? _printk+0x17e/0x1b0
    [   70.727129][ T9333]  ? __msan_metadata_ptr_for_load_4+0x24/0x40
    [   70.727739][ T9333]  ? kmsan_get_metadata+0x13e/0x1c0
    [   70.728324][ T9333]  __msan_warning+0x96/0x120
    [   70.728854][ T9333]  hfsplus_subfolders_dec+0x1d7/0x220
    [   70.729479][ T9333]  hfsplus_delete_cat+0x105d/0x12b0
    [   70.729984][ T9333]  ? kmsan_get_shadow_origin_ptr+0x4a/0xb0
    [   70.730646][ T9333]  ? __msan_metadata_ptr_for_load_4+0x24/0x40
    [   70.731296][ T9333]  ? kmsan_get_metadata+0x13e/0x1c0
    [   70.731863][ T9333]  hfsplus_rmdir+0x13d/0x310
    [   70.732390][ T9333]  ? __pfx_hfsplus_rmdir+0x10/0x10
    [   70.732919][ T9333]  vfs_rmdir+0x5ba/0x810
    [   70.733416][ T9333]  ? kmsan_get_shadow_origin_ptr+0x4a/0xb0
    [   70.734044][ T9333]  do_rmdir+0x964/0xea0
    [   70.734537][ T9333]  __x64_sys_rmdir+0x71/0xb0
    [   70.735032][ T9333]  x64_sys_call+0xcd8/0x3cf0
    [   70.735579][ T9333]  do_syscall_64+0xd9/0x1d0
    [   70.736092][ T9333]  ? irqentry_exit+0x16/0x60
    [   70.736637][ T9333]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [   70.737269][ T9333] RIP: 0033:0x7fa9424eafc9
    [   70.737775][ T9333] Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 48
    [   70.739844][ T9333] RSP: 002b:00007fff099cd8d8 EFLAGS: 00000202 ORIG_RAX: 0000000000000054
    [   70.740760][ T9333] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fa9424eafc9
    [   70.741642][ T9333] RDX: 006c6f72746e6f63 RSI: 000000000000000a RDI: 0000000020000100
    [   70.742543][ T9333] RBP: 00007fff099cd8e0 R08: 00007fff099cd910 R09: 00007fff099cd910
    [   70.743376][ T9333] R10: 0000000000000000 R11: 0000000000000202 R12: 0000565430642260
    [   70.744247][ T9333] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    [   70.745082][ T9333]  </TASK>
    
    The main reason of the issue that struct hfsplus_inode_info
    has not been properly initialized for the case of root folder.
    In the case of root folder, hfsplus_fill_super() calls
    the hfsplus_iget() that implements only partial initialization of
    struct hfsplus_inode_info and subfolders field is not
    initialized by hfsplus_iget() logic.
    
    This patch implements complete initialization of
    struct hfsplus_inode_info in the hfsplus_iget() logic with
    the goal to prevent likewise issues for the case of
    root folder.
    
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=fdedff847a0e5e84c39f
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    cc: John Paul Adrian Glaubitz <[email protected]>
    cc: Yangtao Li <[email protected]>
    cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hfsplus: return EIO when type of hidden directory mismatch in hfsplus_fill_super() [+ + +]
Author: Yangtao Li <[email protected]>
Date:   Tue Aug 5 10:58:59 2025 -0600

    hfsplus: return EIO when type of hidden directory mismatch in hfsplus_fill_super()
    
    [ Upstream commit 9282bc905f0949fab8cf86c0f620ca988761254c ]
    
    If Catalog File contains corrupted record for the case of
    hidden directory's type, regard it as I/O error instead of
    Invalid argument.
    
    Signed-off-by: Yangtao Li <[email protected]>
    Reviewed-by: Viacheslav Dubeyko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hwmon: (sht3x) Fix error handling [+ + +]
Author: Guenter Roeck <[email protected]>
Date:   Sat Oct 18 06:04:57 2025 -0700

    hwmon: (sht3x) Fix error handling
    
    [ Upstream commit 8dcc66ad379ec0642fb281c45ccfd7d2d366e53f ]
    
    Handling of errors when reading status, temperature, and humidity returns
    the error number as negative attribute value. Fix it up by returning
    the error as return value.
    
    Fixes: a0ac418c6007c ("hwmon: (sht3x) convert some of sysfs interface to hwmon")
    Cc: JuenKit Yip <[email protected]>
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring: correct __must_hold annotation in io_install_fixed_file [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Thu Oct 23 04:55:24 2025 -0700

    io_uring: correct __must_hold annotation in io_install_fixed_file
    
    [ Upstream commit c5efc6a0b3940381d67887302ddb87a5cf623685 ]
    
    The __must_hold annotation references &req->ctx->uring_lock, but req
    is not in scope in io_install_fixed_file. This change updates the
    annotation to reference the correct ctx->uring_lock.
    improving code clarity.
    
    Fixes: f110ed8498af ("io_uring: split out fixed file installation and removal")
    Signed-off-by: Alok Tiwari <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ksmbd: transport_ipc: validate payload size before reading handle [+ + +]
Author: Qianchang Zhao <[email protected]>
Date:   Wed Oct 22 15:27:47 2025 +0900

    ksmbd: transport_ipc: validate payload size before reading handle
    
    commit 6f40e50ceb99fc8ef37e5c56e2ec1d162733fef0 upstream.
    
    handle_response() dereferences the payload as a 4-byte handle without
    verifying that the declared payload size is at least 4 bytes. A malformed
    or truncated message from ksmbd.mountd can lead to a 4-byte read past the
    declared payload size. Validate the size before dereferencing.
    
    This is a minimal fix to guard the initial handle read.
    
    Fixes: 0626e6641f6b ("cifsd: add server handler for central processing and tranport layers")
    Cc: [email protected]
    Reported-by: Qianchang Zhao <[email protected]>
    Signed-off-by: Qianchang Zhao <[email protected]>
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Linux: Linux 6.6.115 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Oct 29 14:07:06 2025 +0100

    Linux 6.6.115
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Brett A C Sheffield <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Tested-by: Slade Watkins <[email protected]>
    Tested-by: Miguel Ojeda <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
lkdtm: fortify: Fix potential NULL dereference on kmalloc failure [+ + +]
Author: Junjie Cao <[email protected]>
Date:   Thu Aug 14 14:06:05 2025 +0800

    lkdtm: fortify: Fix potential NULL dereference on kmalloc failure
    
    [ Upstream commit 01c7344e21c2140e72282d9d16d79a61f840fc20 ]
    
    Add missing NULL pointer checks after kmalloc() calls in
    lkdtm_FORTIFY_STR_MEMBER() and lkdtm_FORTIFY_MEM_MEMBER() functions.
    
    Signed-off-by: Junjie Cao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
m68k: bitops: Fix find_*_bit() signatures [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Wed Sep 10 17:16:13 2025 +0200

    m68k: bitops: Fix find_*_bit() signatures
    
    [ Upstream commit 6d5674090543b89aac0c177d67e5fb32ddc53804 ]
    
    The function signatures of the m68k-optimized implementations of the
    find_{first,next}_{,zero_}bit() helpers do not match the generic
    variants.
    
    Fix this by changing all non-pointer inputs and outputs to "unsigned
    long", and updating a few local variables.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Acked-by: "Yury Norov (NVIDIA)" <[email protected]>
    Link: https://patch.msgid.link/de6919554fbb4cd1427155c6bafbac8a9df822c8.1757517135.git.geert@linux-m68k.org
    Signed-off-by: Sasha Levin <[email protected]>

 
mei: me: add wildcat lake P DID [+ + +]
Author: Alexander Usyskin <[email protected]>
Date:   Thu Oct 16 15:59:12 2025 +0300

    mei: me: add wildcat lake P DID
    
    commit 410d6c2ad4d1a88efa0acbb9966693725b564933 upstream.
    
    Add Wildcat Lake P device id.
    
    Cc: [email protected]
    Co-developed-by: Tomas Winkler <[email protected]>
    Signed-off-by: Tomas Winkler <[email protected]>
    Signed-off-by: Alexander Usyskin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
MIPS: Malta: Fix keyboard resource preventing i8042 driver from registering [+ + +]
Author: Maciej W. Rozycki <[email protected]>
Date:   Tue Oct 21 20:38:22 2025 +0100

    MIPS: Malta: Fix keyboard resource preventing i8042 driver from registering
    
    commit bf5570590a981d0659d0808d2d4bcda21b27a2a5 upstream.
    
    MIPS Malta platform code registers the PCI southbridge legacy port I/O
    PS/2 keyboard range as a standard resource marked as busy.  It prevents
    the i8042 driver from registering as it fails to claim the resource in
    a call to i8042_platform_init().  Consequently PS/2 keyboard and mouse
    devices cannot be used with this platform.
    
    Fix the issue by removing the busy marker from the standard reservation,
    making the driver register successfully:
    
      serio: i8042 KBD port at 0x60,0x64 irq 1
      serio: i8042 AUX port at 0x60,0x64 irq 12
    
    and the resource show up as expected among the legacy devices:
    
      00000000-00ffffff : MSC PCI I/O
        00000000-0000001f : dma1
        00000020-00000021 : pic1
        00000040-0000005f : timer
        00000060-0000006f : keyboard
          00000060-0000006f : i8042
        00000070-00000077 : rtc0
        00000080-0000008f : dma page reg
        000000a0-000000a1 : pic2
        000000c0-000000df : dma2
        [...]
    
    If the i8042 driver has not been configured, then the standard resource
    will remain there preventing any conflicting dynamic assignment of this
    PCI port I/O address range.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Maciej W. Rozycki <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Acked-by: Thomas Bogendoerfer <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
misc: fastrpc: Fix dma_buf object leak in fastrpc_map_lookup [+ + +]
Author: Junhao Xie <[email protected]>
Date:   Fri Oct 17 16:39:06 2025 +0800

    misc: fastrpc: Fix dma_buf object leak in fastrpc_map_lookup
    
    commit fff111bf45cbeeb659324316d68554e35d350092 upstream.
    
    In fastrpc_map_lookup, dma_buf_get is called to obtain a reference to
    the dma_buf for comparison purposes. However, this reference is never
    released when the function returns, leading to a dma_buf memory leak.
    
    Fix this by adding dma_buf_put before returning from the function,
    ensuring that the temporarily acquired reference is properly released
    regardless of whether a matching map is found.
    
    Fixes: 9031626ade38 ("misc: fastrpc: Fix fastrpc_map_lookup operation")
    Cc: [email protected]
    Signed-off-by: Junhao Xie <[email protected]>
    Tested-by: Xilin Wu <[email protected]>
    Link: https://lore.kernel.org/stable/48B368FB4C7007A7%2B20251017083906.3259343-1-bigfoot%40radxa.com
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
most: usb: Fix use-after-free in hdm_disconnect [+ + +]
Author: Victoria Votokina <[email protected]>
Date:   Fri Oct 10 13:52:40 2025 +0300

    most: usb: Fix use-after-free in hdm_disconnect
    
    commit 4b1270902609ef0d935ed2faa2ea6d122bd148f5 upstream.
    
    hdm_disconnect() calls most_deregister_interface(), which eventually
    unregisters the MOST interface device with device_unregister(iface->dev).
    If that drops the last reference, the device core may call release_mdev()
    immediately while hdm_disconnect() is still executing.
    
    The old code also freed several mdev-owned allocations in
    hdm_disconnect() and then performed additional put_device() calls.
    Depending on refcount order, this could lead to use-after-free or
    double-free when release_mdev() ran (or when unregister paths also
    performed puts).
    
    Fix by moving the frees of mdev-owned allocations into release_mdev(),
    so they happen exactly once when the device is truly released, and by
    dropping the extra put_device() calls in hdm_disconnect() that are
    redundant after device_unregister() and most_deregister_interface().
    
    This addresses the KASAN slab-use-after-free reported by syzbot in
    hdm_disconnect(). See report and stack traces in the bug link below.
    
    Reported-by: [email protected]
    Cc: stable <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=916742d5d24f6c254761
    Fixes: 97a6f772f36b ("drivers: most: add USB adapter driver")
    Signed-off-by: Victoria Votokina <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

most: usb: hdm_probe: Fix calling put_device() before device initialization [+ + +]
Author: Victoria Votokina <[email protected]>
Date:   Fri Oct 10 13:52:41 2025 +0300

    most: usb: hdm_probe: Fix calling put_device() before device initialization
    
    commit a8cc9e5fcb0e2eef21513a4fec888f5712cb8162 upstream.
    
    The early error path in hdm_probe() can jump to err_free_mdev before
    &mdev->dev has been initialized with device_initialize(). Calling
    put_device(&mdev->dev) there triggers a device core WARN and ends up
    invoking kref_put(&kobj->kref, kobject_release) on an uninitialized
    kobject.
    
    In this path the private struct was only kmalloc'ed and the intended
    release is effectively kfree(mdev) anyway, so free it directly instead
    of calling put_device() on an uninitialized device.
    
    This removes the WARNING and fixes the pre-initialization error path.
    
    Fixes: 97a6f772f36b ("drivers: most: add USB adapter driver")
    Cc: stable <[email protected]>
    Signed-off-by: Victoria Votokina <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net/mlx5e: Return 1 instead of 0 in invalid case in mlx5e_mpwrq_umr_entry_size() [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Tue Oct 14 13:46:49 2025 -0700

    net/mlx5e: Return 1 instead of 0 in invalid case in mlx5e_mpwrq_umr_entry_size()
    
    [ Upstream commit aaf043a5688114703ae2c1482b92e7e0754d684e ]
    
    When building with Clang 20 or newer, there are some objtool warnings
    from unexpected fallthroughs to other functions:
    
      vmlinux.o: warning: objtool: mlx5e_mpwrq_mtts_per_wqe() falls through to next function mlx5e_mpwrq_max_num_entries()
      vmlinux.o: warning: objtool: mlx5e_mpwrq_max_log_rq_size() falls through to next function mlx5e_get_linear_rq_headroom()
    
    LLVM 20 contains an (admittedly problematic [1]) optimization [2] to
    convert divide by zero into the equivalent of __builtin_unreachable(),
    which invokes undefined behavior and destroys code generation when it is
    encountered in a control flow graph.
    
    mlx5e_mpwrq_umr_entry_size() returns 0 in the default case of an
    unrecognized mlx5e_mpwrq_umr_mode value. mlx5e_mpwrq_mtts_per_wqe(),
    which is inlined into mlx5e_mpwrq_max_log_rq_size(), uses the result of
    mlx5e_mpwrq_umr_entry_size() in a divide operation without checking for
    zero, so LLVM is able to infer there will be a divide by zero in this
    case and invokes undefined behavior. While there is some proposed work
    to isolate this undefined behavior and avoid the destructive code
    generation that results in these objtool warnings, code should still be
    defensive against divide by zero.
    
    As the WARN_ONCE() implies that an invalid value should be handled
    gracefully, return 1 instead of 0 in the default case so that the
    results of this division operation is always valid.
    
    Fixes: 168723c1f8d6 ("net/mlx5e: xsk: Use umr_mode to calculate striding RQ parameters")
    Link: https://lore.kernel.org/CAGG=3QUk8-Ak7YKnRziO4=0z=1C_7+4jF+6ZeDQ9yF+kuTOHOQ@mail.gmail.com/ [1]
    Link: https://github.com/llvm/llvm-project/commit/37932643abab699e8bb1def08b7eb4eae7ff1448 [2]
    Closes: https://github.com/ClangBuiltLinux/linux/issues/2131
    Closes: https://github.com/ClangBuiltLinux/linux/issues/2132
    Signed-off-by: Nathan Chancellor <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/20251014-mlx5e-avoid-zero-div-from-mlx5e_mpwrq_umr_entry_size-v1-1-dc186b8819ef@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: Reuse per-RQ XDP buffer to avoid stack zeroing overhead [+ + +]
Author: Carolina Jubran <[email protected]>
Date:   Wed May 14 23:03:52 2025 +0300

    net/mlx5e: Reuse per-RQ XDP buffer to avoid stack zeroing overhead
    
    [ Upstream commit b66b76a82c8879d764ab89adc21ee855ffd292d5 ]
    
    CONFIG_INIT_STACK_ALL_ZERO introduces a performance cost by
    zero-initializing all stack variables on function entry. The mlx5 XDP
    RX path previously allocated a struct mlx5e_xdp_buff on the stack per
    received CQE, resulting in measurable performance degradation under
    this config.
    
    This patch reuses a mlx5e_xdp_buff stored in the mlx5e_rq struct,
    avoiding per-CQE stack allocations and repeated zeroing.
    
    With this change, XDP_DROP and XDP_TX performance matches that of
    kernels built without CONFIG_INIT_STACK_ALL_ZERO.
    
    Performance was measured on a ConnectX-6Dx using a single RX channel
    (1 CPU at 100% usage) at ~50 Mpps. The baseline results were taken from
    net-next-6.15.
    
    Stack zeroing disabled:
    - XDP_DROP:
        * baseline:                     31.47 Mpps
        * baseline + per-RQ allocation: 32.31 Mpps (+2.68%)
    
    - XDP_TX:
        * baseline:                     12.41 Mpps
        * baseline + per-RQ allocation: 12.95 Mpps (+4.30%)
    
    Stack zeroing enabled:
    - XDP_DROP:
        * baseline:                     24.32 Mpps
        * baseline + per-RQ allocation: 32.27 Mpps (+32.7%)
    
    - XDP_TX:
        * baseline:                     11.80 Mpps
        * baseline + per-RQ allocation: 12.24 Mpps (+3.72%)
    
    Reported-by: Sebastiano Miano <[email protected]>
    Reported-by: Samuel Dobron <[email protected]>
    Link: https://lore.kernel.org/all/CAMENy5pb8ea+piKLg5q5yRTMZacQqYWAoVLE1FE9WhQPq92E0g@mail.gmail.com/
    Signed-off-by: Carolina Jubran <[email protected]>
    Reviewed-by: Dragos Tatulea <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Acked-by: Jesper Dangaard Brouer <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: afd5ba577c10 ("net/mlx5e: RX, Fix generating skb from non-linear xdp_buff for legacy RQ")
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: RX, Fix generating skb from non-linear xdp_buff for legacy RQ [+ + +]
Author: Amery Hung <[email protected]>
Date:   Thu Oct 16 22:55:39 2025 +0300

    net/mlx5e: RX, Fix generating skb from non-linear xdp_buff for legacy RQ
    
    [ Upstream commit afd5ba577c10639f62e8120df67dc70ea4b61176 ]
    
    XDP programs can release xdp_buff fragments when calling
    bpf_xdp_adjust_tail(). The driver currently assumes the number of
    fragments to be unchanged and may generate skb with wrong truesize or
    containing invalid frags. Fix the bug by generating skb according to
    xdp_buff after the XDP program runs.
    
    Fixes: ea5d49bdae8b ("net/mlx5e: Add XDP multi buffer support to the non-linear legacy RQ")
    Reviewed-by: Dragos Tatulea <[email protected]>
    Signed-off-by: Amery Hung <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5e: RX, Fix generating skb from non-linear xdp_buff for striding RQ [+ + +]
Author: Amery Hung <[email protected]>
Date:   Thu Oct 16 22:55:40 2025 +0300

    net/mlx5e: RX, Fix generating skb from non-linear xdp_buff for striding RQ
    
    [ Upstream commit 87bcef158ac1faca1bd7e0104588e8e2956d10be ]
    
    XDP programs can change the layout of an xdp_buff through
    bpf_xdp_adjust_tail() and bpf_xdp_adjust_head(). Therefore, the driver
    cannot assume the size of the linear data area nor fragments. Fix the
    bug in mlx5 by generating skb according to xdp_buff after XDP programs
    run.
    
    Currently, when handling multi-buf XDP, the mlx5 driver assumes the
    layout of an xdp_buff to be unchanged. That is, the linear data area
    continues to be empty and fragments remain the same. This may cause
    the driver to generate erroneous skb or triggering a kernel
    warning. When an XDP program added linear data through
    bpf_xdp_adjust_head(), the linear data will be ignored as
    mlx5e_build_linear_skb() builds an skb without linear data and then
    pull data from fragments to fill the linear data area. When an XDP
    program has shrunk the non-linear data through bpf_xdp_adjust_tail(),
    the delta passed to __pskb_pull_tail() may exceed the actual nonlinear
    data size and trigger the BUG_ON in it.
    
    To fix the issue, first record the original number of fragments. If the
    number of fragments changes after the XDP program runs, rewind the end
    fragment pointer by the difference and recalculate the truesize. Then,
    build the skb with the linear data area matching the xdp_buff. Finally,
    only pull data in if there is non-linear data and fill the linear part
    up to 256 bytes.
    
    Fixes: f52ac7028bec ("net/mlx5e: RX, Add XDP multi-buffer support in Striding RQ")
    Signed-off-by: Amery Hung <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: bonding: fix possible peer notify event loss or dup issue [+ + +]
Author: Tonghao Zhang <[email protected]>
Date:   Tue Oct 21 13:09:33 2025 +0800

    net: bonding: fix possible peer notify event loss or dup issue
    
    commit 10843e1492e474c02b91314963161731fa92af91 upstream.
    
    If the send_peer_notif counter and the peer event notify are not synchronized.
    It may cause problems such as the loss or dup of peer notify event.
    
    Before this patch:
    - If should_notify_peers is true and the lock for send_peer_notif-- fails, peer
      event may be sent again in next mii_monitor loop, because should_notify_peers
      is still true.
    - If should_notify_peers is true and the lock for send_peer_notif-- succeeded,
      but the lock for peer event fails, the peer event will be lost.
    
    This patch locks the RTNL for send_peer_notif, events, and commit simultaneously.
    
    Fixes: 07a4ddec3ce9 ("bonding: add an option to specify a delay between peer notifications")
    Cc: Jay Vosburgh <[email protected]>
    Cc: Andrew Lunn <[email protected]>
    Cc: Eric Dumazet <[email protected]>
    Cc: Jakub Kicinski <[email protected]>
    Cc: Paolo Abeni <[email protected]>
    Cc: Hangbin Liu <[email protected]>
    Cc: Nikolay Aleksandrov <[email protected]>
    Cc: Vincent Bernat <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Tonghao Zhang <[email protected]>
    Acked-by: Jay Vosburgh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: enetc: correct the value of ENETC_RXB_TRUESIZE [+ + +]
Author: Wei Fang <[email protected]>
Date:   Thu Oct 16 16:01:31 2025 +0800

    net: enetc: correct the value of ENETC_RXB_TRUESIZE
    
    [ Upstream commit e59bc32df2e989f034623a580e30a2a72af33b3f ]
    
    The ENETC RX ring uses the page halves flipping mechanism, each page is
    split into two halves for the RX ring to use. And ENETC_RXB_TRUESIZE is
    defined to 2048 to indicate the size of half a page. However, the page
    size is configurable, for ARM64 platform, PAGE_SIZE is default to 4K,
    but it could be configured to 16K or 64K.
    
    When PAGE_SIZE is set to 16K or 64K, ENETC_RXB_TRUESIZE is not correct,
    and the RX ring will always use the first half of the page. This is not
    consistent with the description in the relevant kernel doc and commit
    messages.
    
    This issue is invisible in most cases, but if users want to increase
    PAGE_SIZE to receive a Jumbo frame with a single buffer for some use
    cases, it will not work as expected, because the buffer size of each
    RX BD is fixed to 2048 bytes.
    
    Based on the above two points, we expect to correct ENETC_RXB_TRUESIZE
    to (PAGE_SIZE >> 1), as described in the comment.
    
    Fixes: d4fd0404c1c9 ("enetc: Introduce basic PF and VF ENETC ethernet drivers")
    Signed-off-by: Wei Fang <[email protected]>
    Reviewed-by: Claudiu Manoil <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: enetc: fix the deadlock of enetc_mdio_lock [+ + +]
Author: Jianpeng Chang <[email protected]>
Date:   Wed Oct 15 10:14:27 2025 +0800

    net: enetc: fix the deadlock of enetc_mdio_lock
    
    [ Upstream commit 50bd33f6b3922a6b760aa30d409cae891cec8fb5 ]
    
    After applying the workaround for err050089, the LS1028A platform
    experiences RCU stalls on RT kernel. This issue is caused by the
    recursive acquisition of the read lock enetc_mdio_lock. Here list some
    of the call stacks identified under the enetc_poll path that may lead to
    a deadlock:
    
    enetc_poll
      -> enetc_lock_mdio
      -> enetc_clean_rx_ring OR napi_complete_done
         -> napi_gro_receive
            -> enetc_start_xmit
               -> enetc_lock_mdio
               -> enetc_map_tx_buffs
               -> enetc_unlock_mdio
      -> enetc_unlock_mdio
    
    After enetc_poll acquires the read lock, a higher-priority writer attempts
    to acquire the lock, causing preemption. The writer detects that a
    read lock is already held and is scheduled out. However, readers under
    enetc_poll cannot acquire the read lock again because a writer is already
    waiting, leading to a thread hang.
    
    Currently, the deadlock is avoided by adjusting enetc_lock_mdio to prevent
    recursive lock acquisition.
    
    Fixes: 6d36ecdbc441 ("net: enetc: take the MDIO lock only once per NAPI poll cycle")
    Signed-off-by: Jianpeng Chang <[email protected]>
    Acked-by: Wei Fang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ravb: Enforce descriptor type ordering [+ + +]
Author: Lad Prabhakar <[email protected]>
Date:   Fri Oct 17 16:18:29 2025 +0100

    net: ravb: Enforce descriptor type ordering
    
    commit 5370c31e84b0e0999c7b5ff949f4e104def35584 upstream.
    
    Ensure the TX descriptor type fields are published in a safe order so the
    DMA engine never begins processing a descriptor chain before all descriptor
    fields are fully initialised.
    
    For multi-descriptor transmits the driver writes DT_FEND into the last
    descriptor and DT_FSTART into the first. The DMA engine begins processing
    when it observes DT_FSTART. Move the dma_wmb() barrier so it executes
    immediately after DT_FEND and immediately before writing DT_FSTART
    (and before DT_FSINGLE in the single-descriptor case). This guarantees
    that all prior CPU writes to the descriptor memory are visible to the
    device before DT_FSTART is seen.
    
    This avoids a situation where compiler/CPU reordering could publish
    DT_FSTART ahead of DT_FEND or other descriptor fields, allowing the DMA to
    start on a partially initialised chain and causing corrupted transmissions
    or TX timeouts. Such a failure was observed on RZ/G2L with an RT kernel as
    transmit queue timeouts and device resets.
    
    Fixes: 2f45d1902acf ("ravb: minimize TX data copying")
    Cc: [email protected]
    Co-developed-by: Fabrizio Castro <[email protected]>
    Signed-off-by: Fabrizio Castro <[email protected]>
    Signed-off-by: Lad Prabhakar <[email protected]>
    Reviewed-by: Niklas Söderlund <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: ravb: Ensure memory write completes before ringing TX doorbell [+ + +]
Author: Lad Prabhakar <[email protected]>
Date:   Fri Oct 17 16:18:30 2025 +0100

    net: ravb: Ensure memory write completes before ringing TX doorbell
    
    commit 706136c5723626fcde8dd8f598a4dcd251e24927 upstream.
    
    Add a final dma_wmb() barrier before triggering the transmit request
    (TCCR_TSRQ) to ensure all descriptor and buffer writes are visible to
    the DMA engine.
    
    According to the hardware manual, a read-back operation is required
    before writing to the doorbell register to guarantee completion of
    previous writes. Instead of performing a dummy read, a dma_wmb() is
    used to both enforce the same ordering semantics on the CPU side and
    also to ensure completion of writes.
    
    Fixes: c156633f1353 ("Renesas Ethernet AVB driver proper")
    Cc: [email protected]
    Co-developed-by: Fabrizio Castro <[email protected]>
    Signed-off-by: Fabrizio Castro <[email protected]>
    Signed-off-by: Lad Prabhakar <[email protected]>
    Reviewed-by: Niklas Söderlund <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: stmmac: dwmac-rk: Fix disabling set_clock_selection [+ + +]
Author: Sebastian Reichel <[email protected]>
Date:   Tue Oct 14 17:49:34 2025 +0200

    net: stmmac: dwmac-rk: Fix disabling set_clock_selection
    
    commit 7f864458e9a6d2000b726d14b3d3a706ac92a3b0 upstream.
    
    On all platforms set_clock_selection() writes to a GRF register. This
    requires certain clocks running and thus should happen before the
    clocks are disabled.
    
    This has been noticed on RK3576 Sige5, which hangs during system suspend
    when trying to suspend the second network interface. Note, that
    suspending the first interface works, because the second device ensures
    that the necessary clocks for the GRF are enabled.
    
    Cc: [email protected]
    Fixes: 2f2b60a0ec28 ("net: ethernet: stmmac: dwmac-rk: Add gmac support for rk3588")
    Signed-off-by: Sebastian Reichel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/20251014-rockchip-network-clock-fix-v1-1-c257b4afdf75@collabora.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: Tree wide: Replace xdp_do_flush_map() with xdp_do_flush(). [+ + +]
Author: Sebastian Andrzej Siewior <[email protected]>
Date:   Fri Sep 8 16:32:14 2023 +0200

    net: Tree wide: Replace xdp_do_flush_map() with xdp_do_flush().
    
    [ Upstream commit 7f04bd109d4c358a12b125bc79a6f0eac2e915ec ]
    
    xdp_do_flush_map() is deprecated and new code should use xdp_do_flush()
    instead.
    
    Replace xdp_do_flush_map() with xdp_do_flush().
    
    Cc: AngeloGioacchino Del Regno <[email protected]>
    Cc: Clark Wang <[email protected]>
    Cc: Claudiu Manoil <[email protected]>
    Cc: David Arinzon <[email protected]>
    Cc: Edward Cree <[email protected]>
    Cc: Felix Fietkau <[email protected]>
    Cc: Grygorii Strashko <[email protected]>
    Cc: Jassi Brar <[email protected]>
    Cc: Jesse Brandeburg <[email protected]>
    Cc: John Crispin <[email protected]>
    Cc: Leon Romanovsky <[email protected]>
    Cc: Lorenzo Bianconi <[email protected]>
    Cc: Louis Peens <[email protected]>
    Cc: Marcin Wojtas <[email protected]>
    Cc: Mark Lee <[email protected]>
    Cc: Matthias Brugger <[email protected]>
    Cc: NXP Linux Team <[email protected]>
    Cc: Noam Dagan <[email protected]>
    Cc: Russell King <[email protected]>
    Cc: Saeed Bishara <[email protected]>
    Cc: Saeed Mahameed <[email protected]>
    Cc: Sean Wang <[email protected]>
    Cc: Shay Agroskin <[email protected]>
    Cc: Shenwei Wang <[email protected]>
    Cc: Thomas Petazzoni <[email protected]>
    Cc: Tony Nguyen <[email protected]>
    Cc: Vladimir Oltean <[email protected]>
    Cc: Wei Fang <[email protected]>
    Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
    Acked-by: Arthur Kiyanovski <[email protected]>
    Acked-by: Toke Høiland-Jørgensen <[email protected]>
    Acked-by: Ilias Apalodimas <[email protected]>
    Acked-by: Martin Habets <[email protected]>
    Acked-by: Jesper Dangaard Brouer <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 50bd33f6b392 ("net: enetc: fix the deadlock of enetc_mdio_lock")
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: rtl8150: Fix frame padding [+ + +]
Author: Michal Pecio <[email protected]>
Date:   Tue Oct 14 20:35:28 2025 +0200

    net: usb: rtl8150: Fix frame padding
    
    commit 75cea9860aa6b2350d90a8d78fed114d27c7eca2 upstream.
    
    TX frames aren't padded and unknown memory is sent into the ether.
    
    Theoretically, it isn't even guaranteed that the extra memory exists
    and can be sent out, which could cause further problems. In practice,
    I found that plenty of tailroom exists in the skb itself (in my test
    with ping at least) and skb_padto() easily succeeds, so use it here.
    
    In the event of -ENOMEM drop the frame like other drivers do.
    
    The use of one more padding byte instead of a USB zero-length packet
    is retained to avoid regression. I have a dodgy Etron xHCI controller
    which doesn't seem to support sending ZLPs at all.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: [email protected]
    Signed-off-by: Michal Pecio <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nios2: ensure that memblock.current_limit is set when setting pfn limits [+ + +]
Author: Simon Schuster <[email protected]>
Date:   Thu Aug 21 12:37:07 2025 +0200

    nios2: ensure that memblock.current_limit is set when setting pfn limits
    
    [ Upstream commit a20b83cf45be2057f3d073506779e52c7fa17f94 ]
    
    On nios2, with CONFIG_FLATMEM set, the kernel relies on
    memblock_get_current_limit() to determine the limits of mem_map, in
    particular for max_low_pfn.
    Unfortunately, memblock.current_limit is only default initialized to
    MEMBLOCK_ALLOC_ANYWHERE at this point of the bootup, potentially leading
    to situations where max_low_pfn can erroneously exceed the value of
    max_pfn and, thus, the valid range of available DRAM.
    
    This can in turn cause kernel-level paging failures, e.g.:
    
    [   76.900000] Unable to handle kernel paging request at virtual address 20303000
    [   76.900000] ea = c0080890, ra = c000462c, cause = 14
    [   76.900000] Kernel panic - not syncing: Oops
    [   76.900000] ---[ end Kernel panic - not syncing: Oops ]---
    
    This patch fixes this by pre-calculating memblock.current_limit
    based on the upper limits of the available memory ranges via
    adjust_lowmem_bounds, a simplified version of the equivalent
    implementation within the arm architecture.
    
    Signed-off-by: Simon Schuster <[email protected]>
    Signed-off-by: Andreas Oetken <[email protected]>
    Signed-off-by: Dinh Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ocfs2: clear extent cache after moving/defragmenting extents [+ + +]
Author: Deepanshu Kartikey <[email protected]>
Date:   Thu Oct 9 21:19:03 2025 +0530

    ocfs2: clear extent cache after moving/defragmenting extents
    
    commit 78a63493f8e352296dbc7cb7b3f4973105e8679e upstream.
    
    The extent map cache can become stale when extents are moved or
    defragmented, causing subsequent operations to see outdated extent flags.
    This triggers a BUG_ON in ocfs2_refcount_cal_cow_clusters().
    
    The problem occurs when:
    1. copy_file_range() creates a reflinked extent with OCFS2_EXT_REFCOUNTED
    2. ioctl(FITRIM) triggers ocfs2_move_extents()
    3. __ocfs2_move_extents_range() reads and caches the extent (flags=0x2)
    4. ocfs2_move_extent()/ocfs2_defrag_extent() calls __ocfs2_move_extent()
       which clears OCFS2_EXT_REFCOUNTED flag on disk (flags=0x0)
    5. The extent map cache is not invalidated after the move
    6. Later write() operations read stale cached flags (0x2) but disk has
       updated flags (0x0), causing a mismatch
    7. BUG_ON(!(rec->e_flags & OCFS2_EXT_REFCOUNTED)) triggers
    
    Fix by clearing the extent map cache after each extent move/defrag
    operation in __ocfs2_move_extents_range().  This ensures subsequent
    operations read fresh extent data from disk.
    
    Link: https://lore.kernel.org/all/[email protected]/T/
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 53069d4e7695 ("Ocfs2/move_extents: move/defrag extents within a certain range.")
    Signed-off-by: Deepanshu Kartikey <[email protected]>
    Reported-by: [email protected]
    Tested-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?id=2959889e1f6e216585ce522f7e8bc002b46ad9e7
    Reviewed-by: Mark Fasheh <[email protected]>
    Reviewed-by: Joseph Qi <[email protected]>
    Cc: Joel Becker <[email protected]>
    Cc: Junxiao Bi <[email protected]>
    Cc: Changwei Ge <[email protected]>
    Cc: Jun Piao <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
powerpc/32: Remove PAGE_KERNEL_TEXT to fix startup failure [+ + +]
Author: Christophe Leroy <[email protected]>
Date:   Tue Sep 9 12:03:49 2025 +0200

    powerpc/32: Remove PAGE_KERNEL_TEXT to fix startup failure
    
    [ Upstream commit 9316512b717f6f25c4649b3fdb0a905b6a318e9f ]
    
    PAGE_KERNEL_TEXT is an old macro that is used to tell kernel whether
    kernel text has to be mapped read-only or read-write based on build
    time options.
    
    But nowadays, with functionnalities like jump_labels, static links,
    etc ... more only less all kernels need to be read-write at some
    point, and some combinations of configs failed to work due to
    innacurate setting of PAGE_KERNEL_TEXT. On the other hand, today
    we have CONFIG_STRICT_KERNEL_RWX which implements a more controlled
    access to kernel modifications.
    
    Instead of trying to keep PAGE_KERNEL_TEXT accurate with all
    possible options that may imply kernel text modification, always
    set kernel text read-write at startup and rely on
    CONFIG_STRICT_KERNEL_RWX to provide accurate protection.
    
    Do this by passing PAGE_KERNEL_X to map_kernel_page() in
    __maping_ram_chunk() instead of passing PAGE_KERNEL_TEXT. Once
    this is done, the only remaining user of PAGE_KERNEL_TEXT is
    mmu_mark_initmem_nx() which uses it in a call to setibat().
    As setibat() ignores the RW/RO, we can seamlessly replace
    PAGE_KERNEL_TEXT by PAGE_KERNEL_X here as well and get rid of
    PAGE_KERNEL_TEXT completely.
    
    Reported-by: Erhard Furtner <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Christophe Leroy <[email protected]>
    Tested-by: Andrew Donnellan <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/8e2d793abf87ae3efb8f6dce10f974ac0eda61b8.1757412205.git.christophe.leroy@csgroup.eu
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "cpuidle: menu: Avoid discarding useful information" [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Sat Oct 18 14:27:15 2025 +0200

    Revert "cpuidle: menu: Avoid discarding useful information"
    
    commit 10fad4012234a7dea621ae17c0c9486824f645a0 upstream.
    
    It is reported that commit 85975daeaa4d ("cpuidle: menu: Avoid discarding
    useful information") led to a performance regression on Intel Jasper Lake
    systems because it reduced the time spent by CPUs in idle state C7 which
    is correlated to the maximum frequency the CPUs can get to because of an
    average running power limit [1].
    
    Before that commit, get_typical_interval() would have returned UINT_MAX
    whenever it had been unable to make a high-confidence prediction which
    had led to selecting the deepest available idle state too often and
    both power and performance had been inadequate as a result of that on
    some systems.  However, this had not been a problem on systems with
    relatively aggressive average running power limits, like the Jasper Lake
    systems in question, because on those systems it was compensated by the
    ability to run CPUs faster.
    
    It was addressed by causing get_typical_interval() to return a number
    based on the recent idle duration information available to it even if it
    could not make a high-confidence prediction, but that clearly did not
    take the possible correlation between idle power and available CPU
    capacity into account.
    
    For this reason, revert most of the changes made by commit 85975daeaa4d,
    except for one cosmetic cleanup, and add a comment explaining the
    rationale for returning UINT_MAX from get_typical_interval() when it
    is unable to make a high-confidence prediction.
    
    Fixes: 85975daeaa4d ("cpuidle: menu: Avoid discarding useful information")
    Closes: https://lore.kernel.org/linux-pm/36iykr223vmcfsoysexug6s274nq2oimcu55ybn6ww4il3g3cv@cohflgdbpnq7/ [1]
    Reported-by: Sergey Senozhatsky <[email protected]>
    Cc: All applicable <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
RISC-V: Define pgprot_dmacoherent() for non-coherent devices [+ + +]
Author: Anup Patel <[email protected]>
Date:   Fri Oct 17 21:30:05 2025 -0600

    RISC-V: Define pgprot_dmacoherent() for non-coherent devices
    
    [ Upstream commit ca525d53f994d45c8140968b571372c45f555ac1 ]
    
    The pgprot_dmacoherent() is used when allocating memory for
    non-coherent devices and by default pgprot_dmacoherent() is
    same as pgprot_noncached() unless architecture overrides it.
    
    Currently, there is no pgprot_dmacoherent() definition for
    RISC-V hence non-coherent device memory is being mapped as
    IO thereby making CPU access to such memory slow.
    
    Define pgprot_dmacoherent() to be same as pgprot_writecombine()
    for RISC-V so that CPU access non-coherent device memory as
    NOCACHE which is better than accessing it as IO.
    
    Fixes: ff689fd21cb1 ("riscv: add RISC-V Svpbmt extension support")
    Signed-off-by: Anup Patel <[email protected]>
    Tested-by: Han Gao <[email protected]>
    Tested-by: Guo Ren (Alibaba DAMO Academy) <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Paul Walmsley <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

RISC-V: Don't print details of CPUs disabled in DT [+ + +]
Author: Anup Patel <[email protected]>
Date:   Tue Oct 14 22:00:09 2025 +0530

    RISC-V: Don't print details of CPUs disabled in DT
    
    [ Upstream commit d2721bb165b3ee00dd23525885381af07fec852a ]
    
    Early boot stages may disable CPU DT nodes for unavailable
    CPUs based on SKU, pinstraps, eFuse, etc. Currently, the
    riscv_early_of_processor_hartid() prints details of a CPU
    if it is disabled in DT which has no value and gives a
    false impression to the users that there some issue with
    the CPU.
    
    Fixes: e3d794d555cd ("riscv: treat cpu devicetree nodes without status as enabled")
    Signed-off-by: Anup Patel <[email protected]>
    Reviewed-by: Andrew Jones <[email protected]>
    Reviewed-by: Conor Dooley <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Paul Walmsley <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rtnetlink: Allow deleting FDB entries in user namespace [+ + +]
Author: Johannes Wiesböck <[email protected]>
Date:   Wed Oct 15 22:15:43 2025 +0200

    rtnetlink: Allow deleting FDB entries in user namespace
    
    [ Upstream commit bf29555f5bdc017bac22ca66fcb6c9f46ec8788f ]
    
    Creating FDB entries is possible from a non-initial user namespace when
    having CAP_NET_ADMIN, yet, when deleting FDB entries, processes receive
    an EPERM because the capability is always checked against the initial
    user namespace. This restricts the FDB management from unprivileged
    containers.
    
    Drop the netlink_capable check in rtnl_fdb_del as it was originally
    dropped in c5c351088ae7 and reintroduced in 1690be63a27b without
    intention.
    
    This patch was tested using a container on GyroidOS, where it was
    possible to delete FDB entries from an unprivileged user namespace and
    private network namespace.
    
    Fixes: 1690be63a27b ("bridge: Add vlan support to static neighbors")
    Reviewed-by: Michael Weiß <[email protected]>
    Tested-by: Harshal Gohel <[email protected]>
    Signed-off-by: Johannes Wiesböck <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/cio: Update purge function to unregister the unused subchannels [+ + +]
Author: Vineeth Vijayan <[email protected]>
Date:   Thu Oct 23 13:49:13 2025 +0200

    s390/cio: Update purge function to unregister the unused subchannels
    
    commit 9daa5a8795865f9a3c93d8d1066785b07ded6073 upstream.
    
    Starting with 'commit 2297791c92d0 ("s390/cio: dont unregister
    subchannel from child-drivers")', cio no longer unregisters
    subchannels when the attached device is invalid or unavailable.
    
    As an unintended side-effect, the cio_ignore purge function no longer
    removes subchannels for devices on the cio_ignore list if no CCW device
    is attached. This situation occurs when a CCW device is non-operational
    or unavailable
    
    To ensure the same outcome of the purge function as when the
    current cio_ignore list had been active during boot, update the purge
    function to remove I/O subchannels without working CCW devices if the
    associated device number is found on the cio_ignore list.
    
    Fixes: 2297791c92d0 ("s390/cio: dont unregister subchannel from child-drivers")
    Suggested-by: Peter Oberparleiter <[email protected]>
    Reviewed-by: Peter Oberparleiter <[email protected]>
    Signed-off-by: Vineeth Vijayan <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sched: Remove never used code in mm_cid_get() [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Wed Oct 15 11:19:34 2025 +0200

    sched: Remove never used code in mm_cid_get()
    
    [ Upstream commit 53abe3e1c154628cc74e33a1bfcd865656e433a5 ]
    
    Clang is not happy with set but unused variable (this is visible
    with `make W=1` build:
    
      kernel/sched/sched.h:3744:18: error: variable 'cpumask' set but not used [-Werror,-Wunused-but-set-variable]
    
    It seems like the variable was never used along with the assignment
    that does not have side effects as far as I can see.  Remove those
    altogether.
    
    Fixes: 223baf9d17f2 ("sched: Fix performance regression introduced by mm_cid")
    Signed-off-by: Andy Shevchenko <[email protected]>
    Tested-by: Eric Biggers <[email protected]>
    Reviewed-by: Breno Leitao <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sctp: avoid NULL dereference when chunk data buffer is missing [+ + +]
Author: Alexey Simakov <[email protected]>
Date:   Tue Oct 21 16:00:36 2025 +0300

    sctp: avoid NULL dereference when chunk data buffer is missing
    
    [ Upstream commit 441f0647f7673e0e64d4910ef61a5fb8f16bfb82 ]
    
    chunk->skb pointer is dereferenced in the if-block where it's supposed
    to be NULL only.
    
    chunk->skb can only be NULL if chunk->head_skb is not. Check for frag_list
    instead and do it just before replacing chunk->skb. We're sure that
    otherwise chunk->skb is non-NULL because of outer if() condition.
    
    Fixes: 90017accff61 ("sctp: Add GSO support")
    Signed-off-by: Alexey Simakov <[email protected]>
    Acked-by: Marcelo Ricardo Leitner <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/net: convert sctp_vrf.sh to run it in unique namespace [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Sat Dec 2 10:01:09 2023 +0800

    selftests/net: convert sctp_vrf.sh to run it in unique namespace
    
    [ Upstream commit 90e271f65ee428ae5a75e783f5ba50a10dece09d ]
    
    Here is the test result after conversion.
    
    ]# ./sctp_vrf.sh
    Testing For SCTP VRF:
    TEST 01: nobind, connect from client 1, l3mdev_accept=1, Y [PASS]
    ...
    TEST 12: bind vrf-2 & 1 in server, connect from client 1 & 2, N [PASS]
    ***v6 Tests Done***
    
    Acked-by: David Ahern <[email protected]>
    Reviewed-by: Xin Long <[email protected]>
    Signed-off-by: Hangbin Liu <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Stable-dep-of: a73ca0449bcb ("selftests: net: fix server bind failure in sctp_vrf.sh")
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests: mptcp: join: mark 'flush re-add' as skipped if not supported [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Mon Oct 20 22:53:27 2025 +0200

    selftests: mptcp: join: mark 'flush re-add' as skipped if not supported
    
    commit d68460bc31f9c8c6fc81fbb56ec952bec18409f1 upstream.
    
    The call to 'continue_if' was missing: it properly marks a subtest as
    'skipped' if the attached condition is not valid.
    
    Without that, the test is wrongly marked as passed on older kernels.
    
    Fixes: e06959e9eebd ("selftests: mptcp: join: test for flush/re-add endpoints")
    Cc: [email protected]
    Reviewed-by: Geliang Tang <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/20251020-net-mptcp-c-flag-late-add-addr-v1-2-8207030cb0e8@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

selftests: mptcp: join: mark implicit tests as skipped if not supported [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Mon Oct 20 22:53:28 2025 +0200

    selftests: mptcp: join: mark implicit tests as skipped if not supported
    
    commit 973f80d715bd2504b4db6e049f292e694145cd79 upstream.
    
    The call to 'continue_if' was missing: it properly marks a subtest as
    'skipped' if the attached condition is not valid.
    
    Without that, the test is wrongly marked as passed on older kernels.
    
    Fixes: 36c4127ae8dd ("selftests: mptcp: join: skip implicit tests if not supported")
    Cc: [email protected]
    Reviewed-by: Geliang Tang <[email protected]>
    Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
    Link: https://patch.msgid.link/20251020-net-mptcp-c-flag-late-add-addr-v1-3-8207030cb0e8@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

selftests: net: fix server bind failure in sctp_vrf.sh [+ + +]
Author: Xin Long <[email protected]>
Date:   Fri Oct 17 16:06:14 2025 -0400

    selftests: net: fix server bind failure in sctp_vrf.sh
    
    [ Upstream commit a73ca0449bcb7c238097cc6a1bf3fd82a78374df ]
    
    sctp_vrf.sh could fail:
    
      TEST 12: bind vrf-2 & 1 in server, connect from client 1 & 2, N [FAIL]
      not ok 1 selftests: net: sctp_vrf.sh # exit=3
    
    The failure happens when the server bind in a new run conflicts with an
    existing association from the previous run:
    
    [1] ip netns exec $SERVER_NS ./sctp_hello server ...
    [2] ip netns exec $CLIENT_NS ./sctp_hello client ...
    [3] ip netns exec $SERVER_NS pkill sctp_hello ...
    [4] ip netns exec $SERVER_NS ./sctp_hello server ...
    
    It occurs if the client in [2] sends a message and closes immediately.
    With the message unacked, no SHUTDOWN is sent. Killing the server in [3]
    triggers a SHUTDOWN the client also ignores due to the unacked message,
    leaving the old association alive. This causes the bind at [4] to fail
    until the message is acked and the client responds to a second SHUTDOWN
    after the server’s T2 timer expires (3s).
    
    This patch fixes the issue by preventing the client from sending data.
    Instead, the client blocks on recv() and waits for the server to close.
    It also waits until both the server and the client sockets are fully
    released in stop_server and wait_client before restarting.
    
    Additionally, replace 2>&1 >/dev/null with -q in sysctl and grep, and
    drop other redundant 2>&1 >/dev/null redirections, and fix a typo from
    N to Y (connect successfully) in the description of the last test.
    
    Fixes: a61bd7b9fef3 ("selftests: add a selftest for sctp vrf")
    Reported-by: Hangbin Liu <[email protected]>
    Tested-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Xin Long <[email protected]>
    Link: https://patch.msgid.link/be2dacf52d0917c4ba5e2e8c5a9cb640740ad2b6.1760731574.git.lucien.xin@gmail.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: 8250_dw: handle reset control deassert error [+ + +]
Author: Artem Shimko <[email protected]>
Date:   Sun Oct 19 12:51:31 2025 +0300

    serial: 8250_dw: handle reset control deassert error
    
    commit daeb4037adf7d3349b4a1fb792f4bc9824686a4b upstream.
    
    Check the return value of reset_control_deassert() in the probe
    function to prevent continuing probe when reset deassertion fails.
    
    Previously, reset_control_deassert() was called without checking its
    return value, which could lead to probe continuing even when the
    device reset wasn't properly deasserted.
    
    The fix checks the return value and returns an error with dev_err_probe()
    if reset deassertion fails, providing better error handling and
    diagnostics.
    
    Fixes: acbdad8dd1ab ("serial: 8250_dw: simplify optional reset handling")
    Cc: stable <[email protected]>
    Signed-off-by: Artem Shimko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

serial: 8250_exar: add support for Advantech 2 port card with Device ID 0x0018 [+ + +]
Author: Florian Eckert <[email protected]>
Date:   Wed Sep 24 15:41:15 2025 +0200

    serial: 8250_exar: add support for Advantech 2 port card with Device ID 0x0018
    
    commit e7cbce761fe3fcbcb49bcf30d4f8ca5e1a9ee2a0 upstream.
    
    The Advantech 2-port serial card with PCI vendor=0x13fe and device=0x0018
    has a 'XR17V35X' chip installed on the circuit board. Therefore, this
    driver can be used instead of theu outdated out-of-tree driver from the
    manufacturer.
    
    Signed-off-by: Florian Eckert <[email protected]>
    Cc: stable <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

serial: 8250_mtk: Enable baud clock and manage in runtime PM [+ + +]
Author: Daniel Golle <[email protected]>
Date:   Tue Sep 16 22:37:27 2025 +0100

    serial: 8250_mtk: Enable baud clock and manage in runtime PM
    
    commit d518314a1fa4e980a227d1b2bda1badf433cb932 upstream.
    
    Some MediaTek SoCs got a gated UART baud clock, which currently gets
    disabled as the clk subsystem believes it would be unused. This results in
    the uart freezing right after "clk: Disabling unused clocks" on those
    platforms.
    
    Request the baud clock to be prepared and enabled during probe, and to
    restore run-time power management capabilities to what it was before commit
    e32a83c70cf9 ("serial: 8250-mtk: modify mtk uart power and clock
    management") disable and unprepare the baud clock when suspending the UART,
    prepare and enable it again when resuming it.
    
    Fixes: e32a83c70cf9 ("serial: 8250-mtk: modify mtk uart power and clock management")
    Fixes: b6c7ff2693ddc ("serial: 8250_mtk: Simplify clock sequencing and runtime PM")
    Cc: stable <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Daniel Golle <[email protected]>
    Link: https://patch.msgid.link/de5197ccc31e1dab0965cabcc11ca92e67246cf6.1758058441.git.daniel@makrotopia.org
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
smb: server: let smb_direct_flush_send_list() invalidate a remote key first [+ + +]
Author: Stefan Metzmacher <[email protected]>
Date:   Mon Sep 8 22:22:35 2025 +0200

    smb: server: let smb_direct_flush_send_list() invalidate a remote key first
    
    [ Upstream commit 1b53426334c3c942db47e0959a2527a4f815af50 ]
    
    If we want to invalidate a remote key we should do that as soon as
    possible, so do it in the first send work request.
    
    Acked-by: Namjae Jeon <[email protected]>
    Cc: Steve French <[email protected]>
    Cc: Tom Talpey <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Stefan Metzmacher <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: spi-nxp-fspi: add extra delay after dll locked [+ + +]
Author: Han Xu <[email protected]>
Date:   Mon Sep 22 16:47:14 2025 +0800

    spi: spi-nxp-fspi: add extra delay after dll locked
    
    [ Upstream commit b93b4269791fdebbac2a9ad26f324dc2abb9e60f ]
    
    Due to the erratum ERR050272, the DLL lock status register STS2
    [xREFLOCK, xSLVLOCK] bit may indicate DLL is locked before DLL is
    actually locked. Add an extra 4us delay as a workaround.
    
    refer to ERR050272, on Page 20.
    https://www.nxp.com/docs/en/errata/IMX8_1N94W.pdf
    
    Fixes: 99d822b3adc4 ("spi: spi-nxp-fspi: use DLL calibration when clock rate > 100MHz")
    Signed-off-by: Han Xu <[email protected]>
    Signed-off-by: Haibo Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tcpm: switch check for role_sw device with fw_node [+ + +]
Author: Michael Grzeschik <[email protected]>
Date:   Mon Oct 13 11:43:40 2025 +0200

    tcpm: switch check for role_sw device with fw_node
    
    commit 2d8713f807a49b8a67c221670e50ae04967e915d upstream.
    
    When there is no port entry in the tcpci entry itself, the driver will
    trigger an error message "OF: graph: no port node found in /...../typec" .
    
    It is documented that the dts node should contain an connector entry
    with ports and several port pointing to devices with usb-role-switch
    property set. Only when those connector entry is missing, it should
    check for port entries in the main node.
    
    We switch the search order for looking after ports, which will avoid the
    failure message while there are explicit connector entries.
    
    Fixes: d56de8c9a17d ("usb: typec: tcpm: try to get role switch from tcpc fwnode")
    Cc: stable <[email protected]>
    Signed-off-by: Michael Grzeschik <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Reviewed-by: Badhri Jagan Sridharan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Unbreak : 'make tools/*' for user-space targets [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Mon Sep 29 12:24:20 2025 -0700

    Unbreak 'make tools/*' for user-space targets
    
    [ Upstream commit ee916dccd4df6e2fd19c3606c4735282b72f1473 ]
    
    This pattern isn't very documented, and apparently not used much outside
    of 'make tools/help', but it has existed for over a decade (since commit
    ea01fa9f63ae: "tools: Connect to the kernel build system").
    
    However, it doesn't work very well for most cases, particularly the
    useful "tools/all" target, because it overrides the LDFLAGS value with
    an empty one.
    
    And once overridden, 'make' will then not honor the tooling makefiles
    trying to change it - which then makes any LDFLAGS use in the tooling
    directory break, typically causing odd link errors.
    
    Remove that LDFLAGS override, since it seems to be entirely historical.
    The core kernel makefiles no longer modify LDFLAGS as part of the build,
    and use kernel-specific link flags instead (eg 'KBUILD_LDFLAGS' and
    friends).
    
    This allows more of the 'make tools/*' cases to work.  I say 'more',
    because some of the tooling build rules make various other assumptions
    or have other issues, so it's still a bit hit-or-miss.  But those issues
    tend to show up with the 'make -C tools xyz' pattern too, so now it's no
    longer an issue of this particular 'tools/*' build rule being special.
    
    Acked-by: Nathan Chancellor <[email protected]>
    Cc: Nicolas Schier <[email protected]>
    Cc: Borislav Petkov <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
usb/core/quirks: Add Huawei ME906S to wakeup quirk [+ + +]
Author: Tim Guttzeit <[email protected]>
Date:   Mon Oct 20 15:39:04 2025 +0200

    usb/core/quirks: Add Huawei ME906S to wakeup quirk
    
    commit dfc2cf4dcaa03601cd4ca0f7def88b2630fca6ab upstream.
    
    The list of Huawei LTE modules needing the quirk fixing spurious wakeups
    was missing the IDs of the Huawei ME906S module, therefore suspend did not
    work.
    
    Cc: stable <[email protected]>
    Signed-off-by: Tim Guttzeit <[email protected]>
    Signed-off-by: Werner Sembach <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
usb: raw-gadget: do not limit transfer length [+ + +]
Author: Andrey Konovalov <[email protected]>
Date:   Wed Oct 22 00:25:45 2025 +0200

    usb: raw-gadget: do not limit transfer length
    
    commit 37b9dd0d114a0e38c502695e30f55a74fb0c37d0 upstream.
    
    Drop the check on the maximum transfer length in Raw Gadget for both
    control and non-control transfers.
    
    Limiting the transfer length causes a problem with emulating USB devices
    whose full configuration descriptor exceeds PAGE_SIZE in length.
    
    Overall, there does not appear to be any reason to enforce any kind of
    transfer length limit on the Raw Gadget side for either control or
    non-control transfers, so let's just drop the related check.
    
    Cc: stable <[email protected]>
    Fixes: f2c2e717642c ("usb: gadget: add raw-gadget interface")
    Signed-off-by: Andrey Konovalov <[email protected]>
    Link: https://patch.msgid.link/a6024e8eab679043e9b8a5defdb41c4bda62f02b.1761085528.git.andreyknvl@gmail.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
USB: serial: option: add Quectel RG255C [+ + +]
Author: Reinhard Speyerer <[email protected]>
Date:   Wed Oct 22 16:17:26 2025 +0200

    USB: serial: option: add Quectel RG255C
    
    commit 89205c60c0fc96b73567a2e9fe27ee3f59d01193 upstream.
    
    Add support for Quectel RG255C devices to complement commit 5c964c8a97c1
    ("net: usb: qmi_wwan: add Quectel RG255C").
    The composition is DM / NMEA / AT / QMI.
    
    T:  Bus=01 Lev=02 Prnt=99 Port=01 Cnt=02 Dev#=110 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2c7c ProdID=0316 Rev= 5.15
    S:  Manufacturer=Quectel
    S:  Product=RG255C-GL
    S:  SerialNumber=xxxxxxxx
    C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Reinhard Speyerer <[email protected]>
    Cc: [email protected]
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

USB: serial: option: add Telit FN920C04 ECM compositions [+ + +]
Author: LI Qingwu <[email protected]>
Date:   Thu Oct 23 03:44:22 2025 +0000

    USB: serial: option: add Telit FN920C04 ECM compositions
    
    commit 622865c73ae30f254abdf182f4b66cccbe3e0f10 upstream.
    
    Add support for the Telit Cinterion FN920C04 module when operating in
    ECM (Ethernet Control Model) mode. The following USB product IDs are
    used by the module when AT#USBCFG is set to 3 or 7.
    
    0x10A3: ECM + tty (NMEA) + tty (DUN) [+ tty (DIAG)]
    T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10a3 Rev= 5.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN920
    S:  SerialNumber=76e7cb38
    C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=82(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x10A8: ECM + tty (DUN) + tty (AUX) [+ tty (DIAG)]
    T:  Bus=03 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=10a8 Rev= 5.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN920
    S:  SerialNumber=76e7cb38
    C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=82(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Adding these IDs allows the option driver to automatically create the
    corresponding /dev/ttyUSB* ports under ECM mode.
    
    Tested with FN920C04 under ECM configuration (USBCFG=3 and 7).
    
    Signed-off-by: LI Qingwu <[email protected]>
    Cc: [email protected]
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

USB: serial: option: add UNISOC UIS7720 [+ + +]
Author: Renjun Wang <[email protected]>
Date:   Sun Oct 19 18:44:38 2025 +0800

    USB: serial: option: add UNISOC UIS7720
    
    commit 71c07570b918f000de5d0f7f1bf17a2887e303b5 upstream.
    
    Add support for UNISOC (Spreadtrum) UIS7720 (A7720) module.
    
    T:  Bus=05 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  5 Spd=480 MxCh= 0
    D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1782 ProdID=4064 Rev=04.04
    S:  Manufacturer=Unisoc-phone
    S:  Product=Unisoc-phone
    S:  SerialNumber=0123456789ABCDEF
    C:  #Ifs= 9 Cfg#= 1 Atr=c0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0&1: RNDIS, 2: LOG, 3: DIAG, 4&5: AT Ports, 6&7: AT2 Ports, 8: ADB
    
    Signed-off-by: Renjun Wang <[email protected]>
    Cc: [email protected]
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
vsock: fix lock inversion in vsock_assign_transport() [+ + +]
Author: Stefano Garzarella <[email protected]>
Date:   Tue Oct 21 14:17:18 2025 +0200

    vsock: fix lock inversion in vsock_assign_transport()
    
    commit f7c877e7535260cc7a21484c994e8ce7e8cb6780 upstream.
    
    Syzbot reported a potential lock inversion deadlock between
    vsock_register_mutex and sk_lock-AF_VSOCK when vsock_linger() is called.
    
    The issue was introduced by commit 687aa0c5581b ("vsock: Fix
    transport_* TOCTOU") which added vsock_register_mutex locking in
    vsock_assign_transport() around the transport->release() call, that can
    call vsock_linger(). vsock_assign_transport() can be called with sk_lock
    held. vsock_linger() calls sk_wait_event() that temporarily releases and
    re-acquires sk_lock. During this window, if another thread hold
    vsock_register_mutex while trying to acquire sk_lock, a circular
    dependency is created.
    
    Fix this by releasing vsock_register_mutex before calling
    transport->release() and vsock_deassign_transport(). This is safe
    because we don't need to hold vsock_register_mutex while releasing the
    old transport, and we ensure the new transport won't disappear by
    obtaining a module reference first via try_module_get().
    
    Reported-by: [email protected]
    Tested-by: [email protected]
    Fixes: 687aa0c5581b ("vsock: Fix transport_* TOCTOU")
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Stefano Garzarella <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/microcode: Fix Entrysign revision check for Zen1/Naples [+ + +]
Author: Andrew Cooper <[email protected]>
Date:   Mon Oct 20 15:41:24 2025 +0100

    x86/microcode: Fix Entrysign revision check for Zen1/Naples
    
    commit 876f0d43af78639790bee0e57b39d498ae35adcf upstream.
    
    ... to match AMD's statement here:
    
    https://www.amd.com/en/resources/product-security/bulletin/amd-sb-7033.html
    
    Fixes: 50cef76d5cb0 ("x86/microcode/AMD: Load only SHA256-checksummed patches")
    Signed-off-by: Andrew Cooper <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/resctrl: Fix miscount of bandwidth event when reactivating previously unavailable RMID [+ + +]
Author: Babu Moger <[email protected]>
Date:   Thu Oct 23 11:12:40 2025 -0500

    x86/resctrl: Fix miscount of bandwidth event when reactivating previously unavailable RMID
    
    commit 15292f1b4c55a3a7c940dbcb6cb8793871ed3d92 upstream.
    
    Users can create as many monitoring groups as the number of RMIDs supported
    by the hardware. However, on AMD systems, only a limited number of RMIDs
    are guaranteed to be actively tracked by the hardware. RMIDs that exceed
    this limit are placed in an "Unavailable" state.
    
    When a bandwidth counter is read for such an RMID, the hardware sets
    MSR_IA32_QM_CTR.Unavailable (bit 62). When such an RMID starts being tracked
    again the hardware counter is reset to zero. MSR_IA32_QM_CTR.Unavailable
    remains set on first read after tracking re-starts and is clear on all
    subsequent reads as long as the RMID is tracked.
    
    resctrl miscounts the bandwidth events after an RMID transitions from the
    "Unavailable" state back to being tracked. This happens because when the
    hardware starts counting again after resetting the counter to zero, resctrl
    in turn compares the new count against the counter value stored from the
    previous time the RMID was tracked.
    
    This results in resctrl computing an event value that is either undercounting
    (when new counter is more than stored counter) or a mistaken overflow (when
    new counter is less than stored counter).
    
    Reset the stored value (arch_mbm_state::prev_msr) of MSR_IA32_QM_CTR to
    zero whenever the RMID is in the "Unavailable" state to ensure accurate
    counting after the RMID resets to zero when it starts to be tracked again.
    
    Example scenario that results in mistaken overflow
    ==================================================
    1. The resctrl filesystem is mounted, and a task is assigned to a
       monitoring group.
    
       $mount -t resctrl resctrl /sys/fs/resctrl
       $mkdir /sys/fs/resctrl/mon_groups/test1/
       $echo 1234 > /sys/fs/resctrl/mon_groups/test1/tasks
    
       $cat /sys/fs/resctrl/mon_groups/test1/mon_data/mon_L3_*/mbm_total_bytes
       21323            <- Total bytes on domain 0
       "Unavailable"    <- Total bytes on domain 1
    
       Task is running on domain 0. Counter on domain 1 is "Unavailable".
    
    2. The task runs on domain 0 for a while and then moves to domain 1. The
       counter starts incrementing on domain 1.
    
       $cat /sys/fs/resctrl/mon_groups/test1/mon_data/mon_L3_*/mbm_total_bytes
       7345357          <- Total bytes on domain 0
       4545             <- Total bytes on domain 1
    
    3. At some point, the RMID in domain 0 transitions to the "Unavailable"
       state because the task is no longer executing in that domain.
    
       $cat /sys/fs/resctrl/mon_groups/test1/mon_data/mon_L3_*/mbm_total_bytes
       "Unavailable"    <- Total bytes on domain 0
       434341           <- Total bytes on domain 1
    
    4.  Since the task continues to migrate between domains, it may eventually
        return to domain 0.
    
        $cat /sys/fs/resctrl/mon_groups/test1/mon_data/mon_L3_*/mbm_total_bytes
        17592178699059  <- Overflow on domain 0
        3232332         <- Total bytes on domain 1
    
    In this case, the RMID on domain 0 transitions from "Unavailable" state to
    active state. The hardware sets MSR_IA32_QM_CTR.Unavailable (bit 62) when
    the counter is read and begins tracking the RMID counting from 0.
    
    Subsequent reads succeed but return a value smaller than the previously
    saved MSR value (7345357). Consequently, the resctrl's overflow logic is
    triggered, it compares the previous value (7345357) with the new, smaller
    value and incorrectly interprets this as a counter overflow, adding a large
    delta.
    
    In reality, this is a false positive: the counter did not overflow but was
    simply reset when the RMID transitioned from "Unavailable" back to active
    state.
    
    Here is the text from APM [1] available from [2].
    
    "In PQOS Version 2.0 or higher, the MBM hardware will set the U bit on the
    first QM_CTR read when it begins tracking an RMID that it was not
    previously tracking. The U bit will be zero for all subsequent reads from
    that RMID while it is still tracked by the hardware. Therefore, a QM_CTR
    read with the U bit set when that RMID is in use by a processor can be
    considered 0 when calculating the difference with a subsequent read."
    
    [1] AMD64 Architecture Programmer's Manual Volume 2: System Programming
        Publication # 24593 Revision 3.41 section 19.3.3 Monitoring L3 Memory
        Bandwidth (MBM).
    
      [ bp: Split commit message into smaller paragraph chunks for better
        consumption. ]
    
    Fixes: 4d05bf71f157d ("x86/resctrl: Introduce AMD QOS feature")
    Signed-off-by: Babu Moger <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Reinette Chatre <[email protected]>
    Tested-by: Reinette Chatre <[email protected]>
    Cc: [email protected] # needs adjustments for <= v6.17
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=206537 # [2]
    [[email protected]: Fix conflict for v6.6 stable]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
xfs: always warn about deprecated mount options [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Sun Oct 26 18:50:08 2025 -0400

    xfs: always warn about deprecated mount options
    
    [ Upstream commit 630785bfbe12c3ee3ebccd8b530a98d632b7e39d ]
    
    The deprecation of the 'attr2' mount option in 6.18 wasn't entirely
    successful because nobody noticed that the kernel never printed a
    warning about attr2 being set in fstab if the only xfs filesystem is the
    root fs; the initramfs mounts the root fs with no mount options; and the
    init scripts only conveyed the fstab options by remounting the root fs.
    
    Fix this by making it complain all the time.
    
    Cc: [email protected] # v5.13
    Fixes: 92cf7d36384b99 ("xfs: Skip repetitive warnings about mount options")
    Signed-off-by: Darrick J. Wong <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Carlos Maiolino <[email protected]>
    Signed-off-by: Carlos Maiolino <[email protected]>
    [ Update existing xfs_fs_warn_deprecated() callers ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
xhci: dbc: enable back DbC in resume if it was enabled before suspend [+ + +]
Author: Mathias Nyman <[email protected]>
Date:   Tue Oct 14 01:55:42 2025 +0300

    xhci: dbc: enable back DbC in resume if it was enabled before suspend
    
    commit 2bbd38fcd29670e46c0fdb9cd0e90507a8a1bf6a upstream.
    
    DbC is currently only enabled back if it's in configured state during
    suspend.
    
    If system is suspended after DbC is enabled, but before the device is
    properly enumerated by the host, then DbC would not be enabled back in
    resume.
    
    Always enable DbC back in resume if it's suspended in enabled,
    connected, or configured state
    
    Cc: stable <[email protected]>
    Fixes: dfba2174dc42 ("usb: xhci: Add DbC support in xHCI driver")
    Tested-by: Łukasz Bartosik <[email protected]>
    Signed-off-by: Mathias Nyman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>