Changelog in Linux kernel 6.1.158

 
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]>

 
ALSA: firewire: amdtp-stream: fix enum kernel-doc warnings [+ + +]
Author: Randy Dunlap <[email protected]>
Date:   Mon Oct 13 20:05:52 2025 -0700

    ALSA: firewire: amdtp-stream: fix enum kernel-doc warnings
    
    [ Upstream commit d41f68dff783d181a8fd462e612bda0fbab7f735 ]
    
    Fix spelling of CIP_NO_HEADER to prevent a kernel-doc warning.
    
    Warning: amdtp-stream.h:57 Enum value 'CIP_NO_HEADER' not described in enum 'cip_flags'
    Warning: amdtp-stream.h:57 Excess enum value '%CIP_NO_HEADERS' description in 'cip_flags'
    
    Fixes: 3b196c394dd9f ("ALSA: firewire-lib: add no-header packet processing")
    Signed-off-by: Randy Dunlap <[email protected]>
    Reviewed-by: Takashi Sakamoto <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Fix NULL pointer deference in try_to_register_card [+ + +]
Author: Jiaming Zhang <[email protected]>
Date:   Wed Oct 15 13:16:45 2025 +0800

    ALSA: usb-audio: Fix NULL pointer deference in try_to_register_card
    
    [ Upstream commit 28412b489b088fb88dff488305fd4e56bd47f6e4 ]
    
    In try_to_register_card(), the return value of usb_ifnum_to_if() is
    passed directly to usb_interface_claimed() without a NULL check, which
    will lead to a NULL pointer dereference when creating an invalid
    USB audio device. Fix this by adding a check to ensure the interface
    pointer is valid before passing it to usb_interface_claimed().
    
    Fixes: 39efc9c8a973 ("ALSA: usb-audio: Fix last interface check for registration")
    Closes: https://lore.kernel.org/all/CANypQFYtQxHL5ghREs-BujZG413RPJGnO5TH=xjFBKpPts33tA@mail.gmail.com/
    Signed-off-by: Jiaming Zhang <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
amd-xgbe: Avoid spurious link down messages during interface toggle [+ + +]
Author: Raju Rangoju <[email protected]>
Date:   Fri Oct 10 12:21:42 2025 +0530

    amd-xgbe: Avoid spurious link down messages during interface toggle
    
    [ Upstream commit 2616222e423398bb374ffcb5d23dea4ba2c3e524 ]
    
    During interface toggle operations (ifdown/ifup), the driver currently
    resets the local helper variable 'phy_link' to -1. This causes the link
    state machine to incorrectly interpret the state as a link change event,
    resulting in spurious "Link is down" messages being logged when the
    interface is brought back up.
    
    Preserve the phy_link state across interface toggles to avoid treating
    the -1 sentinel value as a legitimate link state transition.
    
    Fixes: 88131a812b16 ("amd-xgbe: Perform phy connect/disconnect at dev open/stop")
    Signed-off-by: Raju Rangoju <[email protected]>
    Reviewed-by: Dawid Osuchowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arch_topology: Fix incorrect error check in topology_parse_cpu_capacity() [+ + +]
Author: Kaushlendra Kumar <[email protected]>
Date:   Sun Oct 26 12:04:08 2025 -0400

    arch_topology: Fix incorrect error check in topology_parse_cpu_capacity()
    
    [ Upstream commit 2eead19334516c8e9927c11b448fbe512b1f18a1 ]
    
    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]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[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]>

 
arm64: cputype: Add Neoverse-V3AE definitions [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Fri Sep 19 15:58:28 2025 +0100

    arm64: cputype: Add Neoverse-V3AE definitions
    
    commit 3bbf004c4808e2c3241e5c1ad6cc102f38a03c39 upstream.
    
    Add cputype definitions for Neoverse-V3AE. These will be used for errata
    detection in subsequent patches.
    
    These values can be found in the Neoverse-V3AE TRM:
    
      https://developer.arm.com/documentation/SDEN-2615521/9-0/
    
    ... in section A.6.1 ("MIDR_EL1, Main ID Register").
    
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: James Morse <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: Catalin Marinas <[email protected]>
    Signed-off-by: Ryan Roberts <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    [ Ryan: Trivial backport ]
    Signed-off-by: Ryan Roberts <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: errata: Apply workarounds for Neoverse-V3AE [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Fri Sep 19 15:58:29 2025 +0100

    arm64: errata: Apply workarounds for Neoverse-V3AE
    
    commit 0c33aa1804d101c11ba1992504f17a42233f0e11 upstream.
    
    Neoverse-V3AE is also affected by erratum #3312417, as described in its
    Software Developer Errata Notice (SDEN) document:
    
      Neoverse V3AE (MP172) SDEN v9.0, erratum 3312417
      https://developer.arm.com/documentation/SDEN-2615521/9-0/
    
    Enable the workaround for Neoverse-V3AE, and document this.
    
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: James Morse <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: Catalin Marinas <[email protected]>
    Signed-off-by: Ryan Roberts <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    [ Ryan: Trivial backport ]
    Signed-off-by: Ryan Roberts <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: mte: Do not flag the zero page as PG_mte_tagged [+ + +]
Author: Catalin Marinas <[email protected]>
Date:   Mon Oct 20 12:12:38 2025 -0400

    arm64: mte: Do not flag the zero page as PG_mte_tagged
    
    [ Upstream commit f620d66af3165838bfa845dcf9f5f9b4089bf508 ]
    
    Commit 68d54ceeec0e ("arm64: mte: Allow PTRACE_PEEKMTETAGS access to the
    zero page") attempted to fix ptrace() reading of tags from the zero page
    by marking it as PG_mte_tagged during cpu_enable_mte(). The same commit
    also changed the ptrace() tag access permission check to the VM_MTE vma
    flag while turning the page flag test into a WARN_ON_ONCE().
    
    Attempting to set the PG_mte_tagged flag early with
    CONFIG_DEFERRED_STRUCT_PAGE_INIT enabled may either hang (after commit
    d77e59a8fccd "arm64: mte: Lock a page for MTE tag initialisation") or
    have the flags cleared later during page_alloc_init_late(). In addition,
    pages_identical() -> memcmp_pages() will reject any comparison with the
    zero page as it is marked as tagged.
    
    Partially revert the above commit to avoid setting PG_mte_tagged on the
    zero page. Update the __access_remote_tags() warning on untagged pages
    to ignore the zero page since it is known to have the tags initialised.
    
    Note that all user mapping of the zero page are marked as pte_special().
    The arm64 set_pte_at() will not call mte_sync_tags() on such pages, so
    PG_mte_tagged will remain cleared.
    
    Signed-off-by: Catalin Marinas <[email protected]>
    Fixes: 68d54ceeec0e ("arm64: mte: Allow PTRACE_PEEKMTETAGS access to the zero page")
    Reported-by: Gergely Kovacs <[email protected]>
    Cc: [email protected] # 5.10.x
    Cc: Will Deacon <[email protected]>
    Cc: David Hildenbrand <[email protected]>
    Cc: Lance Yang <[email protected]>
    Acked-by: Lance Yang <[email protected]>
    Reviewed-by: David Hildenbrand <[email protected]>
    Tested-by: Lance Yang <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    [ removed folio-based hugetlb MTE checks ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ARM: spear: Do not use timer namespace for timer_shutdown() function [+ + +]
Author: Steven Rostedt (Google) <[email protected]>
Date:   Sat Oct 11 00:02:42 2025 +0900

    ARM: spear: Do not use timer namespace for timer_shutdown() function
    
    [ Upstream commit 80b55772d41d8afec68dbc4ff0368a9fe5d1f390 ]
    
    A new "shutdown" timer state is being added to the generic timer code. One
    of the functions to change the timer into the state is called
    "timer_shutdown()". This means that there can not be other functions called
    "timer_shutdown()" as the timer code owns the "timer_*" name space.
    
    Rename timer_shutdown() to spear_timer_shutdown() to avoid this conflict.
    
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Guenter Roeck <[email protected]>
    Reviewed-by: Guenter Roeck <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Acked-by: Arnd Bergmann <[email protected]>
    Acked-by: Viresh Kumar <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/all/[email protected]/
    Link: https://lore.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ASoC: nau8821: Add DMI quirk to bypass jack debounce circuit [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Fri Oct 3 21:03:26 2025 +0300

    ASoC: nau8821: Add DMI quirk to bypass jack debounce circuit
    
    [ Upstream commit 2b4eda7bf7d8a4e2f7575a98f55d8336dec0f302 ]
    
    Stress testing the audio jack hotplug handling on a few Steam Deck units
    revealed that the debounce circuit is responsible for having a negative
    impact on the detection reliability, e.g. in some cases the ejection
    interrupt is not fired, while in other instances it goes into a kind of
    invalid state and generates a flood of misleading interrupts.
    
    Add new entries to the DMI table introduced via commit 1bc40efdaf4a
    ("ASoC: nau8821: Add DMI quirk mechanism for active-high jack-detect")
    and extend the quirk logic to allow bypassing the debounce circuit used
    for jack detection on Valve Steam Deck LCD and OLED models.
    
    While at it, rename existing NAU8821_JD_ACTIVE_HIGH quirk bitfield to
    NAU8821_QUIRK_JD_ACTIVE_HIGH.  This should help improve code readability
    by differentiating from similarly named register bits.
    
    Fixes: aab1ad11d69f ("ASoC: nau8821: new driver")
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: nau8821: Cancel jdet_work before handling jack ejection [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Fri Oct 3 21:03:23 2025 +0300

    ASoC: nau8821: Cancel jdet_work before handling jack ejection
    
    [ Upstream commit 6e54919cb541fdf1063b16f3254c28d01bc9e5ff ]
    
    The microphone detection work scheduled by a prior jack insertion
    interrupt may still be in a pending state or under execution when a jack
    ejection interrupt has been fired.
    
    This might lead to a racing condition or nau8821_jdet_work() completing
    after nau8821_eject_jack(), which will override the currently
    disconnected state of the jack and incorrectly report the headphone or
    the headset as being connected.
    
    Cancel any pending jdet_work or wait for its execution to finish before
    attempting to handle the ejection interrupt.
    
    Proceed similarly before launching the eject handler as a consequence of
    detecting an invalid insert interrupt.
    
    Fixes: aab1ad11d69f ("ASoC: nau8821: new driver")
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: nau8821: Generalize helper to clear IRQ status [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Fri Oct 3 21:03:24 2025 +0300

    ASoC: nau8821: Generalize helper to clear IRQ status
    
    [ Upstream commit 9273aa85b35cc02d0953a1ba3b7bd694e5a2c10e ]
    
    Instead of adding yet another utility function for dealing with the
    interrupt clearing register, generalize nau8821_int_status_clear_all()
    by renaming it to nau8821_irq_status_clear(), whilst introducing a
    second parameter to allow restricting the operation scope to a single
    interrupt instead of the whole range of active IRQs.
    
    While at it, also fix a spelling typo in the comment block.
    
    Note this is mainly a prerequisite for subsequent patches aiming to
    address some deficiencies in the implementation of the interrupt
    handler.  Thus the presence of the Fixes tag below is intentional, to
    facilitate backporting.
    
    Fixes: aab1ad11d69f ("ASoC: nau8821: new driver")
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[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]>

 
Bluetooth: hci_qca: Fix the teardown problem for real [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Sat Oct 11 00:02:52 2025 +0900

    Bluetooth: hci_qca: Fix the teardown problem for real
    
    [ Upstream commit e0d3da982c96aeddc1bbf1cf9469dbb9ebdca657 ]
    
    While discussing solutions for the teardown problem which results from
    circular dependencies between timers and workqueues, where timers schedule
    work from their timer callback and workqueues arm the timers from work
    items, it was discovered that the recent fix to the QCA code is incorrect.
    
    That commit fixes the obvious problem of using del_timer() instead of
    del_timer_sync() and reorders the teardown calls to
    
       destroy_workqueue(wq);
       del_timer_sync(t);
    
    This makes it less likely to explode, but it's still broken:
    
       destroy_workqueue(wq);
       /* After this point @wq cannot be touched anymore */
    
       ---> timer expires
             queue_work(wq) <---- Results in a NULL pointer dereference
                                  deep in the work queue core code.
       del_timer_sync(t);
    
    Use the new timer_shutdown_sync() function to ensure that the timers are
    disarmed, no timer callbacks are running and the timers cannot be armed
    again. This restores the original teardown sequence:
    
       timer_shutdown_sync(t);
       destroy_workqueue(wq);
    
    which is now correct because the timer core silently ignores potential
    rearming attempts which can happen when destroy_workqueue() drains pending
    work before mopping up the workqueue.
    
    Fixes: 72ef98445aca ("Bluetooth: hci_qca: Use del_timer_sync() before freeing")
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Guenter Roeck <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Acked-by: Luiz Augusto von Dentz <[email protected]>
    Link: https://lore.kernel.org/all/87iljhsftt.ffs@tglx
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
btrfs: do not assert we found block group item when creating free space tree [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Wed Oct 1 11:08:13 2025 +0100

    btrfs: do not assert we found block group item when creating free space tree
    
    commit a5a51bf4e9b7354ce7cd697e610d72c1b33fd949 upstream.
    
    Currently, when building a free space tree at populate_free_space_tree(),
    if we are not using the block group tree feature, we always expect to find
    block group items (either extent items or a block group item with key type
    BTRFS_BLOCK_GROUP_ITEM_KEY) when we search the extent tree with
    btrfs_search_slot_for_read(), so we assert that we found an item. However
    this expectation is wrong since we can have a new block group created in
    the current transaction which is still empty and for which we still have
    not added the block group's item to the extent tree, in which case we do
    not have any items in the extent tree associated to the block group.
    
    The insertion of a new block group's block group item in the extent tree
    happens at btrfs_create_pending_block_groups() when it calls the helper
    insert_block_group_item(). This typically is done when a transaction
    handle is released, committed or when running delayed refs (either as
    part of a transaction commit or when serving tickets for space reservation
    if we are low on free space).
    
    So remove the assertion at populate_free_space_tree() even when the block
    group tree feature is not enabled and update the comment to mention this
    case.
    
    Syzbot reported this with the following stack trace:
    
      BTRFS info (device loop3 state M): rebuilding free space tree
      assertion failed: ret == 0 :: 0, in fs/btrfs/free-space-tree.c:1115
      ------------[ cut here ]------------
      kernel BUG at fs/btrfs/free-space-tree.c:1115!
      Oops: invalid opcode: 0000 [#1] SMP KASAN PTI
      CPU: 1 UID: 0 PID: 6352 Comm: syz.3.25 Not tainted syzkaller #0 PREEMPT(full)
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/18/2025
      RIP: 0010:populate_free_space_tree+0x700/0x710 fs/btrfs/free-space-tree.c:1115
      Code: ff ff e8 d3 (...)
      RSP: 0018:ffffc9000430f780 EFLAGS: 00010246
      RAX: 0000000000000043 RBX: ffff88805b709630 RCX: fea61d0e2e79d000
      RDX: 0000000000000000 RSI: 0000000080000000 RDI: 0000000000000000
      RBP: ffffc9000430f8b0 R08: ffffc9000430f4a7 R09: 1ffff92000861e94
      R10: dffffc0000000000 R11: fffff52000861e95 R12: 0000000000000001
      R13: 1ffff92000861f00 R14: dffffc0000000000 R15: 0000000000000000
      FS:  00007f424d9fe6c0(0000) GS:ffff888125afc000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007fd78ad212c0 CR3: 0000000076d68000 CR4: 00000000003526f0
      Call Trace:
       <TASK>
       btrfs_rebuild_free_space_tree+0x1ba/0x6d0 fs/btrfs/free-space-tree.c:1364
       btrfs_start_pre_rw_mount+0x128f/0x1bf0 fs/btrfs/disk-io.c:3062
       btrfs_remount_rw fs/btrfs/super.c:1334 [inline]
       btrfs_reconfigure+0xaed/0x2160 fs/btrfs/super.c:1559
       reconfigure_super+0x227/0x890 fs/super.c:1076
       do_remount fs/namespace.c:3279 [inline]
       path_mount+0xd1a/0xfe0 fs/namespace.c:4027
       do_mount fs/namespace.c:4048 [inline]
       __do_sys_mount fs/namespace.c:4236 [inline]
       __se_sys_mount+0x313/0x410 fs/namespace.c:4213
       do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
       do_syscall_64+0xfa/0xfa0 arch/x86/entry/syscall_64.c:94
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
       RIP: 0033:0x7f424e39066a
      Code: d8 64 89 02 (...)
      RSP: 002b:00007f424d9fde68 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
      RAX: ffffffffffffffda RBX: 00007f424d9fdef0 RCX: 00007f424e39066a
      RDX: 0000200000000180 RSI: 0000200000000380 RDI: 0000000000000000
      RBP: 0000200000000180 R08: 00007f424d9fdef0 R09: 0000000000000020
      R10: 0000000000000020 R11: 0000000000000246 R12: 0000200000000380
      R13: 00007f424d9fdeb0 R14: 0000000000000000 R15: 00002000000002c0
       </TASK>
      Modules linked in:
      ---[ end trace 0000000000000000 ]---
    
    Reported-by: [email protected]
    Link: https://lore.kernel.org/linux-btrfs/[email protected]/
    Fixes: a5ed91828518 ("Btrfs: implement the free space B-tree")
    CC: <[email protected]> # 6.1.x: 1961d20f6fa8: btrfs: fix assertion when building free space tree
    CC: <[email protected]> # 6.1.x
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: fix clearing of BTRFS_FS_RELOC_RUNNING if relocation already running [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Wed Sep 24 16:10:38 2025 +0100

    btrfs: fix clearing of BTRFS_FS_RELOC_RUNNING if relocation already running
    
    commit 7e5a5983edda664e8e4bb20af17b80f5135c655c upstream.
    
    When starting relocation, at reloc_chunk_start(), if we happen to find
    the flag BTRFS_FS_RELOC_RUNNING is already set we return an error
    (-EINPROGRESS) to the callers, however the callers call reloc_chunk_end()
    which will clear the flag BTRFS_FS_RELOC_RUNNING, which is wrong since
    relocation was started by another task and still running.
    
    Finding the BTRFS_FS_RELOC_RUNNING flag already set is an unexpected
    scenario, but still our current behaviour is not correct.
    
    Fix this by never calling reloc_chunk_end() if reloc_chunk_start() has
    returned an error, which is what logically makes sense, since the general
    widespread pattern is to have end functions called only if the counterpart
    start functions succeeded. This requires changing reloc_chunk_start() to
    clear BTRFS_FS_RELOC_RUNNING if there's a pending cancel request.
    
    Fixes: 907d2710d727 ("btrfs: add cancellable chunk relocation support")
    CC: [email protected] # 5.15+
    Reviewed-by: Boris Burkov <[email protected]>
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
can: m_can: m_can_plat_remove(): add missing pm_runtime_disable() [+ + +]
Author: Marc Kleine-Budde <[email protected]>
Date:   Wed Aug 6 17:46:32 2025 +0200

    can: m_can: m_can_plat_remove(): add missing pm_runtime_disable()
    
    [ Upstream commit ba569fb07a7e9e9b71e9282e27e993ba859295c2 ]
    
    Commit 227619c3ff7c ("can: m_can: move runtime PM enable/disable to
    m_can_platform") moved the PM runtime enable from the m_can core
    driver into the m_can_platform.
    
    That patch forgot to move the pm_runtime_disable() to
    m_can_plat_remove(), so that unloading the m_can_platform driver
    causes an "Unbalanced pm_runtime_enable!" error message.
    
    Add the missing pm_runtime_disable() to m_can_plat_remove() to fix the
    problem.
    
    Cc: Patrik Flykt <[email protected]>
    Fixes: 227619c3ff7c ("can: m_can: move runtime PM enable/disable to m_can_platform")
    Reviewed-by: Markus Schneider-Pargmann <[email protected]>
    Link: https://patch.msgid.link/20250929-m_can-fix-state-handling-v4-1-682b49b49d9a@pengutronix.de
    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: parse_dfs_referrals: prevent oob on malformed input [+ + +]
Author: Eugene Korenevsky <[email protected]>
Date:   Mon Oct 13 21:39:30 2025 +0300

    cifs: parse_dfs_referrals: prevent oob on malformed input
    
    commit 6447b0e355562a1ff748c4a2ffb89aae7e84d2c9 upstream.
    
    Malicious SMB server can send invalid reply to FSCTL_DFS_GET_REFERRALS
    
    - reply smaller than sizeof(struct get_dfs_referral_rsp)
    - reply with number of referrals smaller than NumberOfReferrals in the
    header
    
    Processing of such replies will cause oob.
    
    Return -EINVAL error on such replies to prevent oob-s.
    
    Signed-off-by: Eugene Korenevsky <[email protected]>
    Cc: [email protected]
    Suggested-by: Nathan Chancellor <[email protected]>
    Acked-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
clocksource/drivers/arm_arch_timer: Do not use timer namespace for timer_shutdown() function [+ + +]
Author: Steven Rostedt (Google) <[email protected]>
Date:   Sat Oct 11 00:02:43 2025 +0900

    clocksource/drivers/arm_arch_timer: Do not use timer namespace for timer_shutdown() function
    
    [ Upstream commit 73737a5833ace25a8408b0d3b783637cb6bf29d1 ]
    
    A new "shutdown" timer state is being added to the generic timer code. One
    of the functions to change the timer into the state is called
    "timer_shutdown()". This means that there can not be other functions
    called "timer_shutdown()" as the timer code owns the "timer_*" name space.
    
    Rename timer_shutdown() to arch_timer_shutdown() to avoid this conflict.
    
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Guenter Roeck <[email protected]>
    Reviewed-by: Guenter Roeck <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Acked-by: Marc Zyngier <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/all/[email protected]/
    Link: https://lore.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
clocksource/drivers/sp804: Do not use timer namespace for timer_shutdown() function [+ + +]
Author: Steven Rostedt (Google) <[email protected]>
Date:   Sat Oct 11 00:02:44 2025 +0900

    clocksource/drivers/sp804: Do not use timer namespace for timer_shutdown() function
    
    [ Upstream commit 6e1fc2591f116dfb20b65cf27356475461d61bd8 ]
    
    A new "shutdown" timer state is being added to the generic timer code. One
    of the functions to change the timer into the state is called
    "timer_shutdown()". This means that there can not be other functions
    called "timer_shutdown()" as the timer code owns the "timer_*" name space.
    
    Rename timer_shutdown() to evt_timer_shutdown() to avoid this conflict.
    
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Guenter Roeck <[email protected]>
    Reviewed-by: Guenter Roeck <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/all/[email protected]/
    Link: https://lore.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[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]>

 
cpufreq: CPPC: Avoid using CPUFREQ_ETERNAL as transition delay [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Sat Oct 18 12:40:55 2025 -0400

    cpufreq: CPPC: Avoid using CPUFREQ_ETERNAL as transition delay
    
    [ Upstream commit f965d111e68f4a993cc44d487d416e3d954eea11 ]
    
    If cppc_get_transition_latency() returns CPUFREQ_ETERNAL to indicate a
    failure to retrieve the transition latency value from the platform
    firmware, the CPPC cpufreq driver will use that value (converted to
    microseconds) as the policy transition delay, but it is way too large
    for any practical use.
    
    Address this by making the driver use the cpufreq's default
    transition latency value (in microseconds) as the transition delay
    if CPUFREQ_ETERNAL is returned by cppc_get_transition_latency().
    
    Fixes: d4f3388afd48 ("cpufreq / CPPC: Set platform specific transition_delay_us")
    Cc: 5.19+ <[email protected]> # 5.19
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Reviewed-by: Mario Limonciello (AMD) <[email protected]>
    Reviewed-by: Jie Zhan <[email protected]>
    Acked-by: Viresh Kumar <[email protected]>
    Reviewed-by: Qais Yousef <[email protected]>
    [ added CPUFREQ_DEFAULT_TRANSITION_LATENCY_NS definition to include/linux/cpufreq.h ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
crypto: rockchip - Fix dma_unmap_sg() nents value [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Sat Oct 18 15:37:04 2025 -0400

    crypto: rockchip - Fix dma_unmap_sg() nents value
    
    [ Upstream commit 21140e5caf019e4a24e1ceabcaaa16bd693b393f ]
    
    The dma_unmap_sg() functions should be called with the same nents as the
    dma_map_sg(), not the value the map function returned.
    
    Fixes: 57d67c6e8219 ("crypto: rockchip - rework by using crypto_engine")
    Cc: <[email protected]>
    Signed-off-by: Thomas Fourier <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    [ removed unused rctx variable declaration since device pointer already came from tctx->dev->dev instead of rctx->dev ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dax: skip read lock assertion for read-only filesystems [+ + +]
Author: Yuezhang Mo <[email protected]>
Date:   Tue Sep 30 13:42:57 2025 +0800

    dax: skip read lock assertion for read-only filesystems
    
    [ Upstream commit 154d1e7ad9e5ce4b2aaefd3862b3dba545ad978d ]
    
    The commit 168316db3583("dax: assert that i_rwsem is held
    exclusive for writes") added lock assertions to ensure proper
    locking in DAX operations. However, these assertions trigger
    false-positive lockdep warnings since read lock is unnecessary
    on read-only filesystems(e.g., erofs).
    
    This patch skips the read lock assertion for read-only filesystems,
    eliminating the spurious warnings while maintaining the integrity
    checks for writable filesystems.
    
    Fixes: 168316db3583 ("dax: assert that i_rwsem is held exclusive for writes")
    Signed-off-by: Yuezhang Mo <[email protected]>
    Reviewed-by: Friendy Su <[email protected]>
    Reviewed-by: Daniel Palmer <[email protected]>
    Reviewed-by: Gao Xiang <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
devcoredump: Fix circular locking dependency with devcd->mutex. [+ + +]
Author: Maarten Lankhorst <[email protected]>
Date:   Sun Oct 26 21:07:25 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]>

 
doc: fix seg6_flowlabel path [+ + +]
Author: Nicolas Dichtel <[email protected]>
Date:   Fri Oct 10 16:18:59 2025 +0200

    doc: fix seg6_flowlabel path
    
    [ Upstream commit 0b4b77eff5f8cd9be062783a1c1e198d46d0a753 ]
    
    This sysctl is not per interface; it's global per netns.
    
    Fixes: 292ecd9f5a94 ("doc: move seg6_flowlabel to seg6-sysctl.rst")
    Reported-by: Philippe Guibert <[email protected]>
    Signed-off-by: Nicolas Dichtel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Documentation: Remove bogus claim about del_timer_sync() [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Sat Oct 11 00:02:41 2025 +0900

    Documentation: Remove bogus claim about del_timer_sync()
    
    [ Upstream commit b0b0aa5d858d4d2fe39a5e4486e0550e858108f6 ]
    
    del_timer_sync() does not return the number of times it tried to delete the
    timer which rearms itself. It's clearly documented:
    
     The function returns whether it has deactivated a pending timer or not.
    
    This part of the documentation is from 2003 where del_timer_sync() really
    returned the number of deletion attempts for unknown reasons. The code
    was rewritten in 2005, but the documentation was not updated.
    
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Documentation: Replace del_timer/del_timer_sync() [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Sat Oct 11 00:02:46 2025 +0900

    Documentation: Replace del_timer/del_timer_sync()
    
    [ Upstream commit 87bdd932e85881895d4720255b40ac28749c4e32 ]
    
    Adjust to the new preferred function names.
    
    Suggested-by: Steven Rostedt <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[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]>

 
drm/amd/powerplay: Fix CIK shutdown temperature [+ + +]
Author: Timur KristĂłf <[email protected]>
Date:   Mon Oct 13 08:06:42 2025 +0200

    drm/amd/powerplay: Fix CIK shutdown temperature
    
    [ Upstream commit 6917112af2ba36c5f19075eb9f2933ffd07e55bf ]
    
    Remove extra multiplication.
    
    CIK GPUs such as Hawaii appear to use PP_TABLE_V0 in which case
    the shutdown temperature is hardcoded in smu7_init_dpm_defaults
    and is already multiplied by 1000. The value was mistakenly
    multiplied another time by smu7_get_thermal_temperature_range.
    
    Fixes: 4ba082572a42 ("drm/amd/powerplay: export the thermal ranges of VI asics (V2)")
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1676
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur KristĂłf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd: Check whether secure display TA loaded successfully [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Thu Sep 25 14:10:57 2025 -0500

    drm/amd: Check whether secure display TA loaded successfully
    
    commit c760bcda83571e07b72c10d9da175db5051ed971 upstream.
    
    [Why]
    Not all renoir hardware supports secure display.  If the TA is present
    but the feature isn't supported it will fail to load or send commands.
    This shows ERR messages to the user that make it seems like there is
    a problem.
    
    [How]
    Check the resp_status of the context to see if there was an error
    before trying to send any secure display commands.
    
    Reviewed-by: Alex Deucher <[email protected]>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/1415
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Adrian Yip <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amdgpu: use atomic functions with memory barriers for vm fault info [+ + +]
Author: Gui-Dong Han <[email protected]>
Date:   Wed Oct 8 03:43:27 2025 +0000

    drm/amdgpu: use atomic functions with memory barriers for vm fault info
    
    commit 6df8e84aa6b5b1812cc2cacd6b3f5ccbb18cda2b upstream.
    
    The atomic variable vm_fault_info_updated is used to synchronize access to
    adev->gmc.vm_fault_info between the interrupt handler and
    get_vm_fault_info().
    
    The default atomic functions like atomic_set() and atomic_read() do not
    provide memory barriers. This allows for CPU instruction reordering,
    meaning the memory accesses to vm_fault_info and the vm_fault_info_updated
    flag are not guaranteed to occur in the intended order. This creates a
    race condition that can lead to inconsistent or stale data being used.
    
    The previous implementation, which used an explicit mb(), was incomplete
    and inefficient. It failed to account for all potential CPU reorderings,
    such as the access of vm_fault_info being reordered before the atomic_read
    of the flag. This approach is also more verbose and less performant than
    using the proper atomic functions with acquire/release semantics.
    
    Fix this by switching to atomic_set_release() and atomic_read_acquire().
    These functions provide the necessary acquire and release semantics,
    which act as memory barriers to ensure the correct order of operations.
    It is also more efficient and idiomatic than using explicit full memory
    barriers.
    
    Fixes: b97dfa27ef3a ("drm/amdgpu: save vm fault information for amdkfd")
    Cc: [email protected]
    Signed-off-by: Gui-Dong Han <[email protected]>
    Signed-off-by: Felix Kuehling <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/bridge: lt9211: Drop check for last nibble of version register [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Sat Oct 11 12:59:53 2025 +0200

    drm/bridge: lt9211: Drop check for last nibble of version register
    
    [ Upstream commit db74b04edce1bc86b9a5acc724c7ca06f427ab60 ]
    
    There is now a new LT9211 rev. U5, which reports chip ID 0x18 0x01 0xe4 .
    The previous LT9211 reported chip ID 0x18 0x01 0xe3 , which is what the
    driver checks for right now. Since there is a possibility there will be
    yet another revision of the LT9211 in the future, drop the last version
    nibble check to allow all future revisions of the chip to work with this
    driver.
    
    This fix makes LT9211 rev. U5 work with this driver.
    
    Fixes: 8ce4129e3de4 ("drm/bridge: lt9211: Add Lontium LT9211 bridge driver")
    Signed-off-by: Marek Vasut <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/exynos: exynos7_drm_decon: fix uninitialized crtc reference in functions [+ + +]
Author: Kaustabh Chakraborty <[email protected]>
Date:   Fri Oct 17 22:26:40 2025 -0400

    drm/exynos: exynos7_drm_decon: fix uninitialized crtc reference in functions
    
    [ Upstream commit d31bbacf783daf1e71fbe5c68df93550c446bf44 ]
    
    Modify the functions to accept a pointer to struct decon_context
    instead.
    
    Signed-off-by: Kaustabh Chakraborty <[email protected]>
    Signed-off-by: Inki Dae <[email protected]>
    Stable-dep-of: e1361a4f1be9 ("drm/exynos: exynos7_drm_decon: remove ctx->suspended")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/exynos: exynos7_drm_decon: properly clear channels during bind [+ + +]
Author: Kaustabh Chakraborty <[email protected]>
Date:   Fri Oct 17 22:26:41 2025 -0400

    drm/exynos: exynos7_drm_decon: properly clear channels during bind
    
    [ Upstream commit 5f1a453974204175f20b3788824a0fe23cc36f79 ]
    
    The DECON channels are not cleared properly as the windows aren't
    shadow protected. When accompanied with an IOMMU, it pagefaults, and
    the kernel panics.
    
    Implement shadow protect/unprotect, along with a standalone update,
    for channel clearing to properly take effect.
    
    Signed-off-by: Kaustabh Chakraborty <[email protected]>
    Signed-off-by: Inki Dae <[email protected]>
    Stable-dep-of: e1361a4f1be9 ("drm/exynos: exynos7_drm_decon: remove ctx->suspended")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/exynos: exynos7_drm_decon: remove ctx->suspended [+ + +]
Author: Kaustabh Chakraborty <[email protected]>
Date:   Fri Oct 17 22:26:42 2025 -0400

    drm/exynos: exynos7_drm_decon: remove ctx->suspended
    
    [ Upstream commit e1361a4f1be9cb69a662c6d7b5ce218007d6e82b ]
    
    Condition guards are found to be redundant, as the call flow is properly
    managed now, as also observed in the Exynos5433 DECON driver. Since
    state checking is no longer necessary, remove it.
    
    This also fixes an issue which prevented decon_commit() from
    decon_atomic_enable() due to an incorrect state change setting.
    
    Fixes: 96976c3d9aff ("drm/exynos: Add DECON driver")
    Cc: [email protected]
    Suggested-by: Inki Dae <[email protected]>
    Signed-off-by: Kaustabh Chakraborty <[email protected]>
    Signed-off-by: Inki Dae <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/rcar-du: dsi: Fix 1/2/3 lane support [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Fri Oct 17 23:18:25 2025 -0400

    drm/rcar-du: dsi: Fix 1/2/3 lane support
    
    [ Upstream commit d83f1d19c898ac1b54ae64d1c950f5beff801982 ]
    
    Remove fixed PPI lane count setup. The R-Car DSI host is capable
    of operating in 1..4 DSI lane mode. Remove the hard-coded 4-lane
    configuration from PPI register settings and instead configure
    the PPI lane count according to lane count information already
    obtained by this driver instance.
    
    Configure TXSETR register to match PPI lane count. The R-Car V4H
    Reference Manual R19UH0186EJ0121 Rev.1.21 section 67.2.2.3 Tx Set
    Register (TXSETR), field LANECNT description indicates that the
    TXSETR register LANECNT bitfield lane count must be configured
    such, that it matches lane count configuration in PPISETR register
    DLEN bitfield. Make sure the LANECNT and DLEN bitfields are
    configured to match.
    
    Fixes: 155358310f01 ("drm: rcar-du: Add R-Car DSI driver")
    Cc: [email protected]
    Signed-off-by: Marek Vasut <[email protected]>
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Tomi Valkeinen <[email protected]>
    [ adjusted file paths to remove renesas/ subdirectory ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/rockchip: vop2: use correct destination rectangle height check [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Sun Oct 12 07:20:01 2025 -0700

    drm/rockchip: vop2: use correct destination rectangle height check
    
    [ Upstream commit 7f38a1487555604bc4e210fa7cc9b1bce981c40e ]
    
    The vop2_plane_atomic_check() function incorrectly checks
    drm_rect_width(dest) twice instead of verifying both width and height.
    Fix the second condition to use drm_rect_height(dest) so that invalid
    destination rectangles with height < 4 are correctly rejected.
    
    Fixes: 604be85547ce ("drm/rockchip: Add VOP2 driver")
    Signed-off-by: Alok Tiwari <[email protected]>
    Reviewed-by: Andy Yan <[email protected]>
    Signed-off-by: Heiko Stuebner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/sched: Fix potential double free in drm_sched_job_add_resv_dependencies [+ + +]
Author: Tvrtko Ursulin <[email protected]>
Date:   Tue Oct 21 09:12:50 2025 -0400

    drm/sched: Fix potential double free in drm_sched_job_add_resv_dependencies
    
    [ Upstream commit 5801e65206b065b0b2af032f7f1eef222aa2fd83 ]
    
    When adding dependencies with drm_sched_job_add_dependency(), that
    function consumes the fence reference both on success and failure, so in
    the latter case the dma_fence_put() on the error path (xarray failed to
    expand) is a double free.
    
    Interestingly this bug appears to have been present ever since
    commit ebd5f74255b9 ("drm/sched: Add dependency tracking"), since the code
    back then looked like this:
    
    drm_sched_job_add_implicit_dependencies():
    ...
           for (i = 0; i < fence_count; i++) {
                   ret = drm_sched_job_add_dependency(job, fences[i]);
                   if (ret)
                           break;
           }
    
           for (; i < fence_count; i++)
                   dma_fence_put(fences[i]);
    
    Which means for the failing 'i' the dma_fence_put was already a double
    free. Possibly there were no users at that time, or the test cases were
    insufficient to hit it.
    
    The bug was then only noticed and fixed after
    commit 9c2ba265352a ("drm/scheduler: use new iterator in drm_sched_job_add_implicit_dependencies v2")
    landed, with its fixup of
    commit 4eaf02d6076c ("drm/scheduler: fix drm_sched_job_add_implicit_dependencies").
    
    At that point it was a slightly different flavour of a double free, which
    commit 963d0b356935 ("drm/scheduler: fix drm_sched_job_add_implicit_dependencies harder")
    noticed and attempted to fix.
    
    But it only moved the double free from happening inside the
    drm_sched_job_add_dependency(), when releasing the reference not yet
    obtained, to the caller, when releasing the reference already released by
    the former in the failure case.
    
    As such it is not easy to identify the right target for the fixes tag so
    lets keep it simple and just continue the chain.
    
    While fixing we also improve the comment and explain the reason for taking
    the reference and not dropping it.
    
    Signed-off-by: Tvrtko Ursulin <[email protected]>
    Fixes: 963d0b356935 ("drm/scheduler: fix drm_sched_job_add_implicit_dependencies harder")
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/dri-devel/[email protected]/
    Cc: Christian König <[email protected]>
    Cc: Rob Clark <[email protected]>
    Cc: Daniel Vetter <[email protected]>
    Cc: Matthew Brost <[email protected]>
    Cc: Danilo Krummrich <[email protected]>
    Cc: Philipp Stanner <[email protected]>
    Cc: Christian König <[email protected]>
    Cc: [email protected]
    Cc: [email protected] # v5.16+
    Signed-off-by: Philipp Stanner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [ applied to drm_sched_job_add_implicit_dependencies instead of drm_sched_job_add_resv_dependencies ]
    Signed-off-by: Sasha Levin <[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]>

 
ext4: avoid potential buffer over-read in parse_apply_sb_mount_options() [+ + +]
Author: Theodore Ts'o <[email protected]>
Date:   Tue Oct 21 13:04:01 2025 -0400

    ext4: avoid potential buffer over-read in parse_apply_sb_mount_options()
    
    [ Upstream commit 8ecb790ea8c3fc69e77bace57f14cf0d7c177bd8 ]
    
    Unlike other strings in the ext4 superblock, we rely on tune2fs to
    make sure s_mount_opts is NUL terminated.  Harden
    parse_apply_sb_mount_options() by treating s_mount_opts as a potential
    __nonstring.
    
    Cc: [email protected]
    Fixes: 8b67f04ab9de ("ext4: Add mount options in superblock")
    Reviewed-by: Jan Kara <[email protected]>
    Reviewed-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Theodore Ts'o <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Theodore Ts'o <[email protected]>
    [ added sizeof() third argument to strscpy_pad() ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ext4: detect invalid INLINE_DATA + EXTENTS flag combination [+ + +]
Author: Deepanshu Kartikey <[email protected]>
Date:   Tue Sep 30 16:58:10 2025 +0530

    ext4: detect invalid INLINE_DATA + EXTENTS flag combination
    
    commit 1d3ad183943b38eec2acf72a0ae98e635dc8456b upstream.
    
    syzbot reported a BUG_ON in ext4_es_cache_extent() when opening a verity
    file on a corrupted ext4 filesystem mounted without a journal.
    
    The issue is that the filesystem has an inode with both the INLINE_DATA
    and EXTENTS flags set:
    
        EXT4-fs error (device loop0): ext4_cache_extents:545: inode #15:
        comm syz.0.17: corrupted extent tree: lblk 0 < prev 66
    
    Investigation revealed that the inode has both flags set:
        DEBUG: inode 15 - flag=1, i_inline_off=164, has_inline=1, extents_flag=1
    
    This is an invalid combination since an inode should have either:
    - INLINE_DATA: data stored directly in the inode
    - EXTENTS: data stored in extent-mapped blocks
    
    Having both flags causes ext4_has_inline_data() to return true, skipping
    extent tree validation in __ext4_iget(). The unvalidated out-of-order
    extents then trigger a BUG_ON in ext4_es_cache_extent() due to integer
    underflow when calculating hole sizes.
    
    Fix this by detecting this invalid flag combination early in ext4_iget()
    and rejecting the corrupted inode.
    
    Cc: [email protected]
    Reported-and-tested-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=038b7bf43423e132b308
    Suggested-by: Zhang Yi <[email protected]>
    Signed-off-by: Deepanshu Kartikey <[email protected]>
    Reviewed-by: Zhang Yi <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ext4: wait for ongoing I/O to complete before freeing blocks [+ + +]
Author: Zhang Yi <[email protected]>
Date:   Tue Sep 16 17:33:37 2025 +0800

    ext4: wait for ongoing I/O to complete before freeing blocks
    
    commit 328a782cb138029182e521c08f50eb1587db955d upstream.
    
    When freeing metadata blocks in nojournal mode, ext4_forget() calls
    bforget() to clear the dirty flag on the buffer_head and remvoe
    associated mappings. This is acceptable if the metadata has not yet
    begun to be written back. However, if the write-back has already started
    but is not yet completed, ext4_forget() will have no effect.
    Subsequently, ext4_mb_clear_bb() will immediately return the block to
    the mb allocator. This block can then be reallocated immediately,
    potentially causing an data corruption issue.
    
    Fix this by clearing the buffer's dirty flag and waiting for the ongoing
    I/O to complete, ensuring that no further writes to stale data will
    occur.
    
    Fixes: 16e08b14a455 ("ext4: cleanup clean_bdev_aliases() calls")
    Cc: [email protected]
    Reported-by: Gao Xiang <[email protected]>
    Closes: https://lore.kernel.org/linux-ext4/[email protected]/
    Signed-off-by: Zhang Yi <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
f2fs: add a f2fs_get_block_locked helper [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Mon Oct 20 16:51:25 2025 -0400

    f2fs: add a f2fs_get_block_locked helper
    
    [ Upstream commit cf342d3beda000b4c60990755ca7800de5038785 ]
    
    This allows to keep the f2fs_do_map_lock based locking scheme
    private to data.c.
    
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Stable-dep-of: 9d5c4f5c7a2c ("f2fs: fix wrong block mapping for multi-devices")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

f2fs: factor a f2fs_map_blocks_cached helper [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Mon Oct 20 16:51:27 2025 -0400

    f2fs: factor a f2fs_map_blocks_cached helper
    
    [ Upstream commit 0094e98bd1477a6b7d97c25b47b19a7317c35279 ]
    
    Add a helper to deal with everything needed to return a f2fs_map_blocks
    structure based on a lookup in the extent cache.
    
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Stable-dep-of: 9d5c4f5c7a2c ("f2fs: fix wrong block mapping for multi-devices")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

f2fs: fix wrong block mapping for multi-devices [+ + +]
Author: Jaegeuk Kim <[email protected]>
Date:   Mon Oct 20 16:51:28 2025 -0400

    f2fs: fix wrong block mapping for multi-devices
    
    [ Upstream commit 9d5c4f5c7a2c7677e1b3942772122b032c265aae ]
    
    Assuming the disk layout as below,
    
    disk0: 0            --- 0x00035abfff
    disk1: 0x00035ac000 --- 0x00037abfff
    disk2: 0x00037ac000 --- 0x00037ebfff
    
    and we want to read data from offset=13568 having len=128 across the block
    devices, we can illustrate the block addresses like below.
    
    0 .. 0x00037ac000 ------------------- 0x00037ebfff, 0x00037ec000 -------
              |          ^            ^                                ^
              |   fofs   0            13568                            13568+128
              |       ------------------------------------------------------
              |   LBA    0x37e8aa9    0x37ebfa9                        0x37ec029
              --- map    0x3caa9      0x3ffa9
    
    In this example, we should give the relative map of the target block device
    ranging from 0x3caa9 to 0x3ffa9 where the length should be calculated by
    0x37ebfff + 1 - 0x37ebfa9.
    
    In the below equation, however, map->m_pblk was supposed to be the original
    address instead of the one from the target block address.
    
     - map->m_len = min(map->m_len, dev->end_blk + 1 - map->m_pblk);
    
    Cc: [email protected]
    Fixes: 71f2c8206202 ("f2fs: multidevice: support direct IO")
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

f2fs: remove the create argument to f2fs_map_blocks [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Mon Oct 20 16:51:26 2025 -0400

    f2fs: remove the create argument to f2fs_map_blocks
    
    [ Upstream commit cd8fc5226bef3a1fda13a0e61794a039ca46744a ]
    
    The create argument is always identicaly to map->m_may_create, so use
    that consistently.
    
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Stable-dep-of: 9d5c4f5c7a2c ("f2fs: fix wrong block mapping for multi-devices")
    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:   Mon Oct 20 12:02:31 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:   Mon Oct 20 12:02:32 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]>

 
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: fix slab-out-of-bounds read in hfsplus_strcasecmp() [+ + +]
Author: Viacheslav Dubeyko <[email protected]>
Date:   Fri Sep 19 12:12:44 2025 -0700

    hfsplus: fix slab-out-of-bounds read in hfsplus_strcasecmp()
    
    commit 42520df65bf67189541a425f7d36b0b3e7bd7844 upstream.
    
    The hfsplus_strcasecmp() logic can trigger the issue:
    
    [  117.317703][ T9855] ==================================================================
    [  117.318353][ T9855] BUG: KASAN: slab-out-of-bounds in hfsplus_strcasecmp+0x1bc/0x490
    [  117.318991][ T9855] Read of size 2 at addr ffff88802160f40c by task repro/9855
    [  117.319577][ T9855]
    [  117.319773][ T9855] CPU: 0 UID: 0 PID: 9855 Comm: repro Not tainted 6.17.0-rc6 #33 PREEMPT(full)
    [  117.319780][ T9855] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [  117.319783][ T9855] Call Trace:
    [  117.319785][ T9855]  <TASK>
    [  117.319788][ T9855]  dump_stack_lvl+0x1c1/0x2a0
    [  117.319795][ T9855]  ? __virt_addr_valid+0x1c8/0x5c0
    [  117.319803][ T9855]  ? __pfx_dump_stack_lvl+0x10/0x10
    [  117.319808][ T9855]  ? rcu_is_watching+0x15/0xb0
    [  117.319816][ T9855]  ? lock_release+0x4b/0x3e0
    [  117.319821][ T9855]  ? __kasan_check_byte+0x12/0x40
    [  117.319828][ T9855]  ? __virt_addr_valid+0x1c8/0x5c0
    [  117.319835][ T9855]  ? __virt_addr_valid+0x4a5/0x5c0
    [  117.319842][ T9855]  print_report+0x17e/0x7e0
    [  117.319848][ T9855]  ? __virt_addr_valid+0x1c8/0x5c0
    [  117.319855][ T9855]  ? __virt_addr_valid+0x4a5/0x5c0
    [  117.319862][ T9855]  ? __phys_addr+0xd3/0x180
    [  117.319869][ T9855]  ? hfsplus_strcasecmp+0x1bc/0x490
    [  117.319876][ T9855]  kasan_report+0x147/0x180
    [  117.319882][ T9855]  ? hfsplus_strcasecmp+0x1bc/0x490
    [  117.319891][ T9855]  hfsplus_strcasecmp+0x1bc/0x490
    [  117.319900][ T9855]  ? __pfx_hfsplus_cat_case_cmp_key+0x10/0x10
    [  117.319906][ T9855]  hfs_find_rec_by_key+0xa9/0x1e0
    [  117.319913][ T9855]  __hfsplus_brec_find+0x18e/0x470
    [  117.319920][ T9855]  ? __pfx_hfsplus_bnode_find+0x10/0x10
    [  117.319926][ T9855]  ? __pfx_hfs_find_rec_by_key+0x10/0x10
    [  117.319933][ T9855]  ? __pfx___hfsplus_brec_find+0x10/0x10
    [  117.319942][ T9855]  hfsplus_brec_find+0x28f/0x510
    [  117.319949][ T9855]  ? __pfx_hfs_find_rec_by_key+0x10/0x10
    [  117.319956][ T9855]  ? __pfx_hfsplus_brec_find+0x10/0x10
    [  117.319963][ T9855]  ? __kmalloc_noprof+0x2a9/0x510
    [  117.319969][ T9855]  ? hfsplus_find_init+0x8c/0x1d0
    [  117.319976][ T9855]  hfsplus_brec_read+0x2b/0x120
    [  117.319983][ T9855]  hfsplus_lookup+0x2aa/0x890
    [  117.319990][ T9855]  ? __pfx_hfsplus_lookup+0x10/0x10
    [  117.320003][ T9855]  ? d_alloc_parallel+0x2f0/0x15e0
    [  117.320008][ T9855]  ? __lock_acquire+0xaec/0xd80
    [  117.320013][ T9855]  ? __pfx_d_alloc_parallel+0x10/0x10
    [  117.320019][ T9855]  ? __raw_spin_lock_init+0x45/0x100
    [  117.320026][ T9855]  ? __init_waitqueue_head+0xa9/0x150
    [  117.320034][ T9855]  __lookup_slow+0x297/0x3d0
    [  117.320039][ T9855]  ? __pfx___lookup_slow+0x10/0x10
    [  117.320045][ T9855]  ? down_read+0x1ad/0x2e0
    [  117.320055][ T9855]  lookup_slow+0x53/0x70
    [  117.320065][ T9855]  walk_component+0x2f0/0x430
    [  117.320073][ T9855]  path_lookupat+0x169/0x440
    [  117.320081][ T9855]  filename_lookup+0x212/0x590
    [  117.320089][ T9855]  ? __pfx_filename_lookup+0x10/0x10
    [  117.320098][ T9855]  ? strncpy_from_user+0x150/0x290
    [  117.320105][ T9855]  ? getname_flags+0x1e5/0x540
    [  117.320112][ T9855]  user_path_at+0x3a/0x60
    [  117.320117][ T9855]  __x64_sys_umount+0xee/0x160
    [  117.320123][ T9855]  ? __pfx___x64_sys_umount+0x10/0x10
    [  117.320129][ T9855]  ? do_syscall_64+0xb7/0x3a0
    [  117.320135][ T9855]  ? entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [  117.320141][ T9855]  ? entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [  117.320145][ T9855]  do_syscall_64+0xf3/0x3a0
    [  117.320150][ T9855]  ? exc_page_fault+0x9f/0xf0
    [  117.320154][ T9855]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [  117.320158][ T9855] RIP: 0033:0x7f7dd7908b07
    [  117.320163][ T9855] Code: 23 0d 00 f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 31 f6 e9 09 00 00 00 66 0f 1f 84 00 00 08
    [  117.320167][ T9855] RSP: 002b:00007ffd5ebd9698 EFLAGS: 00000202 ORIG_RAX: 00000000000000a6
    [  117.320172][ T9855] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f7dd7908b07
    [  117.320176][ T9855] RDX: 0000000000000009 RSI: 0000000000000009 RDI: 00007ffd5ebd9740
    [  117.320179][ T9855] RBP: 00007ffd5ebda780 R08: 0000000000000005 R09: 00007ffd5ebd9530
    [  117.320181][ T9855] R10: 00007f7dd799bfc0 R11: 0000000000000202 R12: 000055e2008b32d0
    [  117.320184][ T9855] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    [  117.320189][ T9855]  </TASK>
    [  117.320190][ T9855]
    [  117.351311][ T9855] Allocated by task 9855:
    [  117.351683][ T9855]  kasan_save_track+0x3e/0x80
    [  117.352093][ T9855]  __kasan_kmalloc+0x8d/0xa0
    [  117.352490][ T9855]  __kmalloc_noprof+0x288/0x510
    [  117.352914][ T9855]  hfsplus_find_init+0x8c/0x1d0
    [  117.353342][ T9855]  hfsplus_lookup+0x19c/0x890
    [  117.353747][ T9855]  __lookup_slow+0x297/0x3d0
    [  117.354148][ T9855]  lookup_slow+0x53/0x70
    [  117.354514][ T9855]  walk_component+0x2f0/0x430
    [  117.354921][ T9855]  path_lookupat+0x169/0x440
    [  117.355325][ T9855]  filename_lookup+0x212/0x590
    [  117.355740][ T9855]  user_path_at+0x3a/0x60
    [  117.356115][ T9855]  __x64_sys_umount+0xee/0x160
    [  117.356529][ T9855]  do_syscall_64+0xf3/0x3a0
    [  117.356920][ T9855]  entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [  117.357429][ T9855]
    [  117.357636][ T9855] The buggy address belongs to the object at ffff88802160f000
    [  117.357636][ T9855]  which belongs to the cache kmalloc-2k of size 2048
    [  117.358827][ T9855] The buggy address is located 0 bytes to the right of
    [  117.358827][ T9855]  allocated 1036-byte region [ffff88802160f000, ffff88802160f40c)
    [  117.360061][ T9855]
    [  117.360266][ T9855] The buggy address belongs to the physical page:
    [  117.360813][ T9855] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x21608
    [  117.361562][ T9855] head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
    [  117.362285][ T9855] flags: 0xfff00000000040(head|node=0|zone=1|lastcpupid=0x7ff)
    [  117.362929][ T9855] page_type: f5(slab)
    [  117.363282][ T9855] raw: 00fff00000000040 ffff88801a842f00 ffffea0000932000 dead000000000002
    [  117.364015][ T9855] raw: 0000000000000000 0000000080080008 00000000f5000000 0000000000000000
    [  117.364750][ T9855] head: 00fff00000000040 ffff88801a842f00 ffffea0000932000 dead000000000002
    [  117.365491][ T9855] head: 0000000000000000 0000000080080008 00000000f5000000 0000000000000000
    [  117.366232][ T9855] head: 00fff00000000003 ffffea0000858201 00000000ffffffff 00000000ffffffff
    [  117.366968][ T9855] head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008
    [  117.367711][ T9855] page dumped because: kasan: bad access detected
    [  117.368259][ T9855] page_owner tracks the page as allocated
    [  117.368745][ T9855] page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN1
    [  117.370541][ T9855]  post_alloc_hook+0x240/0x2a0
    [  117.370954][ T9855]  get_page_from_freelist+0x2101/0x21e0
    [  117.371435][ T9855]  __alloc_frozen_pages_noprof+0x274/0x380
    [  117.371935][ T9855]  alloc_pages_mpol+0x241/0x4b0
    [  117.372360][ T9855]  allocate_slab+0x8d/0x380
    [  117.372752][ T9855]  ___slab_alloc+0xbe3/0x1400
    [  117.373159][ T9855]  __kmalloc_cache_noprof+0x296/0x3d0
    [  117.373621][ T9855]  nexthop_net_init+0x75/0x100
    [  117.374038][ T9855]  ops_init+0x35c/0x5c0
    [  117.374400][ T9855]  setup_net+0x10c/0x320
    [  117.374768][ T9855]  copy_net_ns+0x31b/0x4d0
    [  117.375156][ T9855]  create_new_namespaces+0x3f3/0x720
    [  117.375613][ T9855]  unshare_nsproxy_namespaces+0x11c/0x170
    [  117.376094][ T9855]  ksys_unshare+0x4ca/0x8d0
    [  117.376477][ T9855]  __x64_sys_unshare+0x38/0x50
    [  117.376879][ T9855]  do_syscall_64+0xf3/0x3a0
    [  117.377265][ T9855] page last free pid 9110 tgid 9110 stack trace:
    [  117.377795][ T9855]  __free_frozen_pages+0xbeb/0xd50
    [  117.378229][ T9855]  __put_partials+0x152/0x1a0
    [  117.378625][ T9855]  put_cpu_partial+0x17c/0x250
    [  117.379026][ T9855]  __slab_free+0x2d4/0x3c0
    [  117.379404][ T9855]  qlist_free_all+0x97/0x140
    [  117.379790][ T9855]  kasan_quarantine_reduce+0x148/0x160
    [  117.380250][ T9855]  __kasan_slab_alloc+0x22/0x80
    [  117.380662][ T9855]  __kmalloc_noprof+0x232/0x510
    [  117.381074][ T9855]  tomoyo_supervisor+0xc0a/0x1360
    [  117.381498][ T9855]  tomoyo_env_perm+0x149/0x1e0
    [  117.381903][ T9855]  tomoyo_find_next_domain+0x15ad/0x1b90
    [  117.382378][ T9855]  tomoyo_bprm_check_security+0x11c/0x180
    [  117.382859][ T9855]  security_bprm_check+0x89/0x280
    [  117.383289][ T9855]  bprm_execve+0x8f1/0x14a0
    [  117.383673][ T9855]  do_execveat_common+0x528/0x6b0
    [  117.384103][ T9855]  __x64_sys_execve+0x94/0xb0
    [  117.384500][ T9855]
    [  117.384706][ T9855] Memory state around the buggy address:
    [  117.385179][ T9855]  ffff88802160f300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [  117.385854][ T9855]  ffff88802160f380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [  117.386534][ T9855] >ffff88802160f400: 00 04 fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  117.387204][ T9855]                       ^
    [  117.387566][ T9855]  ffff88802160f480: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  117.388243][ T9855]  ffff88802160f500: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
    [  117.388918][ T9855] ==================================================================
    
    The issue takes place if the length field of struct hfsplus_unistr
    is bigger than HFSPLUS_MAX_STRLEN. The patch simply checks
    the length of comparing strings. And if the strings' length
    is bigger than HFSPLUS_MAX_STRLEN, then it is corrected
    to this value.
    
    v2
    The string length correction has been added for hfsplus_strcmp().
    
    Reported-by: Jiaming Zhang <[email protected]>
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    cc: John Paul Adrian Glaubitz <[email protected]>
    cc: Yangtao Li <[email protected]>
    cc: [email protected]
    cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Viacheslav Dubeyko <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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]>

 
HID: hid-input: only ignore 0 battery events for digitizers [+ + +]
Author: Dmitry Torokhov <[email protected]>
Date:   Tue Oct 14 21:28:44 2025 -0700

    HID: hid-input: only ignore 0 battery events for digitizers
    
    [ Upstream commit 0187c08058da3e7f11b356ac27e0c427d36f33f2 ]
    
    Commit 581c4484769e ("HID: input: map digitizer battery usage") added
    handling of battery events for digitizers (typically for batteries
    presented in stylii). Digitizers typically report correct battery levels
    only when stylus is actively touching the surface, and in other cases
    they may report battery level of 0. To avoid confusing consumers of the
    battery information the code was added to filer out reports with 0
    battery levels.
    
    However there exist other kinds of devices that may legitimately report
    0 battery levels. Fix this by filtering out 0-level reports only for
    digitizer usages, and continue reporting them for other kinds of devices
    (Smart Batteries, etc).
    
    Reported-by: ćąć›œćź <[email protected]>
    Fixes: 581c4484769e ("HID: input: map digitizer battery usage")
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: multitouch: fix name of Stylus input devices [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Wed Oct 8 09:40:33 2025 -0300

    HID: multitouch: fix name of Stylus input devices
    
    [ Upstream commit aa4daea418ee4215dca5c8636090660c545cb233 ]
    
    HID_DG_PEN devices should have a suffix of "Stylus", as pointed out by
    commit c0ee1d571626 ("HID: hid-input: Add suffix also for HID_DG_PEN").
    However, on multitouch devices, these suffixes may be overridden. Before
    that commit, HID_DG_PEN devices would get the "Stylus" suffix, but after
    that, multitouch would override them to have an "UNKNOWN" suffix. Just add
    HID_DG_PEN to the list of non-overriden suffixes in multitouch.
    
    Before this fix:
    
    [    0.470981] input: ELAN9008:00 04F3:2E14 UNKNOWN as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-16/i2c-ELAN9008:00/0018:04F3:2E14.0001/input/input8
    ELAN9008:00 04F3:2E14 UNKNOWN
    
    After this fix:
    
    [    0.474332] input: ELAN9008:00 04F3:2E14 Stylus as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-16/i2c-ELAN9008:00/0018:04F3:2E14.0001/input/input8
    
    ELAN9008:00 04F3:2E14 Stylus
    
    Fixes: c0ee1d571626 ("HID: hid-input: Add suffix also for HID_DG_PEN")
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Reviewed-by: Mika Westerberg <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: multitouch: fix sticky fingers [+ + +]
Author: Benjamin Tissoires <[email protected]>
Date:   Wed Oct 8 16:06:58 2025 +0200

    HID: multitouch: fix sticky fingers
    
    commit 46f781e0d151844589dc2125c8cce3300546f92a upstream.
    
    The sticky fingers quirk (MT_QUIRK_STICKY_FINGERS) was only considering
    the case when slots were not released during the last report.
    This can be problematic if the firmware forgets to release a finger
    while others are still present.
    
    This was observed on the Synaptics DLL0945 touchpad found on the Dell
    XPS 9310 and the Dell Inspiron 5406.
    
    Fixes: 4f4001bc76fd ("HID: multitouch: fix rare Win 8 cases when the touch up event gets missing")
    Cc: [email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
iio: imu: inv_icm42600: Avoid configuring if already pm_runtime suspended [+ + +]
Author: Sean Nyekjaer <[email protected]>
Date:   Mon Oct 20 09:09:40 2025 -0400

    iio: imu: inv_icm42600: Avoid configuring if already pm_runtime suspended
    
    [ Upstream commit 466f7a2fef2a4e426f809f79845a1ec1aeb558f4 ]
    
    Do as in suspend, skip resume configuration steps if the device is already
    pm_runtime suspended. This avoids reconfiguring a device that is already
    in the correct low-power state and ensures that pm_runtime handles the
    power state transitions properly.
    
    Fixes: 31c24c1e93c3 ("iio: imu: inv_icm42600: add core of new inv_icm42600 driver")
    Signed-off-by: Sean Nyekjaer <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    [ adjusted context for suspend/resume functions lacking APEX/wakeup support ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: imu: inv_icm42600: Simplify pm_runtime setup [+ + +]
Author: Sean Nyekjaer <[email protected]>
Date:   Mon Oct 20 09:03:48 2025 -0400

    iio: imu: inv_icm42600: Simplify pm_runtime setup
    
    [ Upstream commit 0792c1984a45ccd7a296d6b8cb78088bc99a212e ]
    
    Rework the power management in inv_icm42600_core_probe() to use
    devm_pm_runtime_set_active_enabled(), which simplifies the runtime PM
    setup by handling activation and enabling in one step.
    Remove the separate inv_icm42600_disable_pm callback, as it's no longer
    needed with the devm-managed approach.
    Using devm_pm_runtime_enable() also fixes the missing disable of
    autosuspend.
    Update inv_icm42600_disable_vddio_reg() to only disable the regulator if
    the device is not suspended i.e. powered-down, preventing unbalanced
    disables.
    Also remove redundant error msg on regulator_disable(), the regulator
    framework already emits an error message when regulator_disable() fails.
    
    This simplifies the PM setup and avoids manipulating the usage counter
    unnecessarily.
    
    Fixes: 31c24c1e93c3 ("iio: imu: inv_icm42600: add core of new inv_icm42600 driver")
    Signed-off-by: Sean Nyekjaer <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: imu: inv_icm42600: use = { } instead of memset() [+ + +]
Author: David Lechner <[email protected]>
Date:   Mon Oct 20 09:09:39 2025 -0400

    iio: imu: inv_icm42600: use = { } instead of memset()
    
    [ Upstream commit 352112e2d9aab6a156c2803ae14eb89a9fd93b7d ]
    
    Use { } instead of memset() to zero-initialize stack memory to simplify
    the code.
    
    Signed-off-by: David Lechner <[email protected]>
    Reviewed-by: Nuno SĂĄ <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://patch.msgid.link/20250611-iio-zero-init-stack-with-instead-of-memset-v1-16-ebb2d0a24302@baylibre.com
    Signed-off-by: Jonathan Cameron <[email protected]>
    Stable-dep-of: 466f7a2fef2a ("iio: imu: inv_icm42600: Avoid configuring if already pm_runtime suspended")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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]>

 
ixgbevf: Add support for Intel(R) E610 device [+ + +]
Author: Piotr Kwapulinski <[email protected]>
Date:   Mon Oct 20 15:53:46 2025 -0400

    ixgbevf: Add support for Intel(R) E610 device
    
    [ Upstream commit 4c44b450c69b676955c2790dcf467c1f969d80f1 ]
    
    Add support for Intel(R) E610 Series of network devices. The E610
    is based on X550 but adds firmware managed link, enhanced security
    capabilities and support for updated server manageability
    
    Reviewed-by: Przemek Kitszel <[email protected]>
    Signed-off-by: Piotr Kwapulinski <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Stable-dep-of: a7075f501bd3 ("ixgbevf: fix mailbox API compatibility by negotiating supported features")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ixgbevf: fix getting link speed data for E610 devices [+ + +]
Author: Jedrzej Jagielski <[email protected]>
Date:   Mon Oct 20 15:53:47 2025 -0400

    ixgbevf: fix getting link speed data for E610 devices
    
    [ Upstream commit 53f0eb62b4d23d40686f2dd51776b8220f2887bb ]
    
    E610 adapters no longer use the VFLINKS register to read PF's link
    speed and linkup state. As a result VF driver cannot get actual link
    state and it incorrectly reports 10G which is the default option.
    It leads to a situation where even 1G adapters print 10G as actual
    link speed. The same happens when PF driver set speed different than 10G.
    
    Add new mailbox operation to let the VF driver request a PF driver
    to provide actual link data. Update the mailbox api to v1.6.
    
    Incorporate both ways of getting link status within the legacy
    ixgbe_check_mac_link_vf() function.
    
    Fixes: 4c44b450c69b ("ixgbevf: Add support for Intel(R) E610 device")
    Co-developed-by: Andrzej Wilczynski <[email protected]>
    Signed-off-by: Andrzej Wilczynski <[email protected]>
    Reviewed-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Cc: [email protected]
    Signed-off-by: Jedrzej Jagielski <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Jacob Keller <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: a7075f501bd3 ("ixgbevf: fix mailbox API compatibility by negotiating supported features")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ixgbevf: fix mailbox API compatibility by negotiating supported features [+ + +]
Author: Jedrzej Jagielski <[email protected]>
Date:   Mon Oct 20 15:53:48 2025 -0400

    ixgbevf: fix mailbox API compatibility by negotiating supported features
    
    [ Upstream commit a7075f501bd33c93570af759b6f4302ef0175168 ]
    
    There was backward compatibility in the terms of mailbox API. Various
    drivers from various OSes supporting 10G adapters from Intel portfolio
    could easily negotiate mailbox API.
    
    This convention has been broken since introducing API 1.4.
    Commit 0062e7cc955e ("ixgbevf: add VF IPsec offload code") added support
    for IPSec which is specific only for the kernel ixgbe driver. None of the
    rest of the Intel 10G PF/VF drivers supports it. And actually lack of
    support was not included in the IPSec implementation - there were no such
    code paths. No possibility to negotiate support for the feature was
    introduced along with introduction of the feature itself.
    
    Commit 339f28964147 ("ixgbevf: Add support for new mailbox communication
    between PF and VF") increasing API version to 1.5 did the same - it
    introduced code supported specifically by the PF ESX driver. It altered API
    version for the VF driver in the same time not touching the version
    defined for the PF ixgbe driver. It led to additional discrepancies,
    as the code provided within API 1.6 cannot be supported for Linux ixgbe
    driver as it causes crashes.
    
    The issue was noticed some time ago and mitigated by Jake within the commit
    d0725312adf5 ("ixgbevf: stop attempting IPSEC offload on Mailbox API 1.5").
    As a result we have regression for IPsec support and after increasing API
    to version 1.6 ixgbevf driver stopped to support ESX MBX.
    
    To fix this mess add new mailbox op asking PF driver about supported
    features. Basing on a response determine whether to set support for IPSec
    and ESX-specific enhanced mailbox.
    
    New mailbox op, for compatibility purposes, must be added within new API
    revision, as API version of OOT PF & VF drivers is already increased to
    1.6 and doesn't incorporate features negotiate op.
    
    Features negotiation mechanism gives possibility to be extended with new
    features when needed in the future.
    
    Reported-by: Jacob Keller <[email protected]>
    Closes: https://lore.kernel.org/intel-wired-lan/20241101-jk-ixgbevf-mailbox-v1-5-fixes-v1-0-f556dc9a66ed@intel.com/
    Fixes: 0062e7cc955e ("ixgbevf: add VF IPsec offload code")
    Fixes: 339f28964147 ("ixgbevf: Add support for new mailbox communication between PF and VF")
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Cc: [email protected]
    Signed-off-by: Jedrzej Jagielski <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Jacob Keller <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
jbd2: ensure that all ongoing I/O complete before freeing blocks [+ + +]
Author: Zhang Yi <[email protected]>
Date:   Tue Sep 16 17:33:36 2025 +0800

    jbd2: ensure that all ongoing I/O complete before freeing blocks
    
    commit 3c652c3a71de1d30d72dc82c3bead8deb48eb749 upstream.
    
    When releasing file system metadata blocks in jbd2_journal_forget(), if
    this buffer has not yet been checkpointed, it may have already been
    written back, currently be in the process of being written back, or has
    not yet written back.  jbd2_journal_forget() calls
    jbd2_journal_try_remove_checkpoint() to check the buffer's status and
    add it to the current transaction if it has not been written back. This
    buffer can only be reallocated after the transaction is committed.
    
    jbd2_journal_try_remove_checkpoint() attempts to lock the buffer and
    check its dirty status while holding the buffer lock. If the buffer has
    already been written back, everything proceeds normally. However, there
    are two issues. First, the function returns immediately if the buffer is
    locked by the write-back process. It does not wait for the write-back to
    complete. Consequently, until the current transaction is committed and
    the block is reallocated, there is no guarantee that the I/O will
    complete. This means that ongoing I/O could write stale metadata to the
    newly allocated block, potentially corrupting data. Second, the function
    unlocks the buffer as soon as it detects that the buffer is still dirty.
    If a concurrent write-back occurs immediately after this unlocking and
    before clear_buffer_dirty() is called in jbd2_journal_forget(), data
    corruption can theoretically still occur.
    
    Although these two issues are unlikely to occur in practice since the
    undergoing metadata writeback I/O does not take this long to complete,
    it's better to explicitly ensure that all ongoing I/O operations are
    completed.
    
    Fixes: 597599268e3b ("jbd2: discard dirty data when forgetting an un-journalled buffer")
    Cc: [email protected]
    Suggested-by: Jan Kara <[email protected]>
    Signed-off-by: Zhang Yi <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ksmbd: browse interfaces list on FSCTL_QUERY_INTERFACE_INFO IOCTL [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Tue Oct 21 16:40:04 2025 +0900

    ksmbd: browse interfaces list on FSCTL_QUERY_INTERFACE_INFO IOCTL
    
    [ Upstream commit b2d99376c5d61eb60ffdb6c503e4b6c8f9712ddd ]
    
    ksmbd.mount will give each interfaces list and bind_interfaces_only flags
    to ksmbd server. Previously, the interfaces list was sent only
    when bind_interfaces_only was enabled.
    ksmbd server browse only interfaces list given from ksmbd.conf on
    FSCTL_QUERY_INTERFACE_INFO IOCTL.
    
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[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.1.158 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Oct 29 14:04:43 2025 +0100

    Linux 6.1.158
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Salvatore Bonaccorso <[email protected]>
    Tested-by: Slade Watkins <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Brett A C Sheffield <[email protected]>
    Tested-by: Shuah Khan <[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]>

 
mm/ksm: fix flag-dropping behavior in ksm_madvise [+ + +]
Author: Jakub Acs <[email protected]>
Date:   Wed Oct 1 09:03:52 2025 +0000

    mm/ksm: fix flag-dropping behavior in ksm_madvise
    
    commit f04aad36a07cc17b7a5d5b9a2d386ce6fae63e93 upstream.
    
    syzkaller discovered the following crash: (kernel BUG)
    
    [   44.607039] ------------[ cut here ]------------
    [   44.607422] kernel BUG at mm/userfaultfd.c:2067!
    [   44.608148] Oops: invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN NOPTI
    [   44.608814] CPU: 1 UID: 0 PID: 2475 Comm: reproducer Not tainted 6.16.0-rc6 #1 PREEMPT(none)
    [   44.609635] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
    [   44.610695] RIP: 0010:userfaultfd_release_all+0x3a8/0x460
    
    <snip other registers, drop unreliable trace>
    
    [   44.617726] Call Trace:
    [   44.617926]  <TASK>
    [   44.619284]  userfaultfd_release+0xef/0x1b0
    [   44.620976]  __fput+0x3f9/0xb60
    [   44.621240]  fput_close_sync+0x110/0x210
    [   44.622222]  __x64_sys_close+0x8f/0x120
    [   44.622530]  do_syscall_64+0x5b/0x2f0
    [   44.622840]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    [   44.623244] RIP: 0033:0x7f365bb3f227
    
    Kernel panics because it detects UFFD inconsistency during
    userfaultfd_release_all().  Specifically, a VMA which has a valid pointer
    to vma->vm_userfaultfd_ctx, but no UFFD flags in vma->vm_flags.
    
    The inconsistency is caused in ksm_madvise(): when user calls madvise()
    with MADV_UNMEARGEABLE on a VMA that is registered for UFFD in MINOR mode,
    it accidentally clears all flags stored in the upper 32 bits of
    vma->vm_flags.
    
    Assuming x86_64 kernel build, unsigned long is 64-bit and unsigned int and
    int are 32-bit wide.  This setup causes the following mishap during the &=
    ~VM_MERGEABLE assignment.
    
    VM_MERGEABLE is a 32-bit constant of type unsigned int, 0x8000'0000.
    After ~ is applied, it becomes 0x7fff'ffff unsigned int, which is then
    promoted to unsigned long before the & operation.  This promotion fills
    upper 32 bits with leading 0s, as we're doing unsigned conversion (and
    even for a signed conversion, this wouldn't help as the leading bit is 0).
    & operation thus ends up AND-ing vm_flags with 0x0000'0000'7fff'ffff
    instead of intended 0xffff'ffff'7fff'ffff and hence accidentally clears
    the upper 32-bits of its value.
    
    Fix it by changing `VM_MERGEABLE` constant to unsigned long, using the
    BIT() macro.
    
    Note: other VM_* flags are not affected: This only happens to the
    VM_MERGEABLE flag, as the other VM_* flags are all constants of type int
    and after ~ operation, they end up with leading 1 and are thus converted
    to unsigned long with leading 1s.
    
    Note 2:
    After commit 31defc3b01d9 ("userfaultfd: remove (VM_)BUG_ON()s"), this is
    no longer a kernel BUG, but a WARNING at the same place:
    
    [   45.595973] WARNING: CPU: 1 PID: 2474 at mm/userfaultfd.c:2067
    
    but the root-cause (flag-drop) remains the same.
    
    [[email protected]: rust bindgen wasn't able to handle BIT(), from Miguel]
      Link: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 7677f7fd8be7 ("userfaultfd: add minor fault registration mode")
    Signed-off-by: Jakub Acs <[email protected]>
    Signed-off-by: Miguel Ojeda <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Acked-by: SeongJae Park <[email protected]>
    Tested-by: Alice Ryhl <[email protected]>
    Tested-by: Miguel Ojeda <[email protected]>
    Cc: Xu Xin <[email protected]>
    Cc: Chengming Zhou <[email protected]>
    Cc: Peter Xu <[email protected]>
    Cc: Axel Rasmussen <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    [[email protected]: adapt rust bindgen to older versions]
    Signed-off-by: Jakub Acs <[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/ip6_tunnel: Prevent perpetual tunnel growth [+ + +]
Author: Dmitry Safonov <[email protected]>
Date:   Thu Oct 9 16:02:19 2025 +0100

    net/ip6_tunnel: Prevent perpetual tunnel growth
    
    [ Upstream commit 21f4d45eba0b2dcae5dbc9e5e0ad08735c993f16 ]
    
    Similarly to ipv4 tunnel, ipv6 version updates dev->needed_headroom, too.
    While ipv4 tunnel headroom adjustment growth was limited in
    commit 5ae1e9922bbd ("net: ip_tunnel: prevent perpetual headroom growth"),
    ipv6 tunnel yet increases the headroom without any ceiling.
    
    Reflect ipv4 tunnel headroom adjustment limit on ipv6 version.
    
    Credits to Francesco Ruggeri, who was originally debugging this issue
    and wrote local Arista-specific patch and a reproducer.
    
    Fixes: 8eb30be0352d ("ipv6: Create ip6_tnl_xmit")
    Cc: Florian Westphal <[email protected]>
    Cc: Francesco Ruggeri <[email protected]>
    Signed-off-by: Dmitry Safonov <[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: 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: 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: dlink: handle dma_map_single() failure properly [+ + +]
Author: Yeounsu Moon <[email protected]>
Date:   Fri Oct 10 00:57:16 2025 +0900

    net: dlink: handle dma_map_single() failure properly
    
    [ Upstream commit 65946eac6d888d50ae527c4e5c237dbe5cc3a2f2 ]
    
    There is no error handling for `dma_map_single()` failures.
    
    Add error handling by checking `dma_mapping_error()` and freeing
    the `skb` using `dev_kfree_skb()` (process context) when it fails.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Yeounsu Moon <[email protected]>
    Tested-on: D-Link DGE-550T Rev-A3
    Suggested-by: Simon Horman <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[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: 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: tls: wait for async completion on last message [+ + +]
Author: Sascha Hauer <[email protected]>
Date:   Wed Sep 4 14:17:41 2024 +0200

    net: tls: wait for async completion on last message
    
    [ Upstream commit 54001d0f2fdbc7852136a00f3e6fc395a9547ae5 ]
    
    When asynchronous encryption is used KTLS sends out the final data at
    proto->close time. This becomes problematic when the task calling
    close() receives a signal. In this case it can happen that
    tcp_sendmsg_locked() called at close time returns -ERESTARTSYS and the
    final data is not sent.
    
    The described situation happens when KTLS is used in conjunction with
    io_uring, as io_uring uses task_work_add() to add work to the current
    userspace task. A discussion of the problem along with a reproducer can
    be found in [1] and [2]
    
    Fix this by waiting for the asynchronous encryption to be completed on
    the final message. With this there is no data left to be sent at close
    time.
    
    [1] https://lore.kernel.org/all/[email protected]/
    [2] https://lore.kernel.org/all/[email protected]/
    
    Signed-off-by: Sascha Hauer <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: b014a4e066c5 ("tls: wait for async encrypt in case of error during latter iterations of sendmsg")
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: lan78xx: Add error handling to lan78xx_init_mac_address [+ + +]
Author: Oleksij Rempel <[email protected]>
Date:   Mon Dec 9 14:07:42 2024 +0100

    net: usb: lan78xx: Add error handling to lan78xx_init_mac_address
    
    [ Upstream commit 6f31135894ec96481e2bda93a1da70712f5e57c1 ]
    
    Convert `lan78xx_init_mac_address` to return error codes and handle
    failures in register read and write operations. Update `lan78xx_reset`
    to check for errors during MAC address initialization and propagate them
    appropriately.
    
    Signed-off-by: Oleksij Rempel <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 8d93ff40d49d ("net: usb: lan78xx: fix use of improperly initialized dev->chipid in lan78xx_reset")
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: lan78xx: fix use of improperly initialized dev->chipid in lan78xx_reset [+ + +]
Author: I Viswanath <[email protected]>
Date:   Mon Oct 13 23:46:48 2025 +0530

    net: usb: lan78xx: fix use of improperly initialized dev->chipid in lan78xx_reset
    
    [ Upstream commit 8d93ff40d49d70e05c82a74beae31f883fe0eaf8 ]
    
    dev->chipid is used in lan78xx_init_mac_address before it's initialized:
    
    lan78xx_reset() {
        lan78xx_init_mac_address()
            lan78xx_read_eeprom()
                lan78xx_read_raw_eeprom() <- dev->chipid is used here
    
        dev->chipid = ... <- dev->chipid is initialized correctly here
    }
    
    Reorder initialization so that dev->chipid is set before calling
    lan78xx_init_mac_address().
    
    Fixes: a0db7d10b76e ("lan78xx: Add to handle mux control per chip id")
    Signed-off-by: I Viswanath <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Reviewed-by: Khalid Aziz <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    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]>

 
NFSD: Define a proc_layoutcommit for the FlexFiles layout type [+ + +]
Author: Chuck Lever <[email protected]>
Date:   Mon Oct 20 20:24:54 2025 -0400

    NFSD: Define a proc_layoutcommit for the FlexFiles layout type
    
    [ Upstream commit 4b47a8601b71ad98833b447d465592d847b4dc77 ]
    
    Avoid a crash if a pNFS client should happen to send a LAYOUTCOMMIT
    operation on a FlexFiles layout.
    
    Reported-by: Robert Morris <[email protected]>
    Closes: https://lore.kernel.org/linux-nfs/[email protected]/T/#t
    Cc: Thomas Haynes <[email protected]>
    Cc: [email protected]
    Fixes: 9b9960a0ca47 ("nfsd: Add a super simple flex file server")
    Signed-off-by: Chuck Lever <[email protected]>
    [ removed struct svc_rqst parameter from nfsd4_ff_proc_layoutcommit ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

NFSD: Fix last write offset handling in layoutcommit [+ + +]
Author: Sergey Bashirov <[email protected]>
Date:   Mon Oct 20 08:55:03 2025 -0400

    NFSD: Fix last write offset handling in layoutcommit
    
    [ Upstream commit d68886bae76a4b9b3484d23e5b7df086f940fa38 ]
    
    The data type of loca_last_write_offset is newoffset4 and is switched
    on a boolean value, no_newoffset, that indicates if a previous write
    occurred or not. If no_newoffset is FALSE, an offset is not given.
    This means that client does not try to update the file size. Thus,
    server should not try to calculate new file size and check if it fits
    into the segment range. See RFC 8881, section 12.5.4.2.
    
    Sometimes the current incorrect logic may cause clients to hang when
    trying to sync an inode. If layoutcommit fails, the client marks the
    inode as dirty again.
    
    Fixes: 9cf514ccfacb ("nfsd: implement pNFS operations")
    Cc: [email protected]
    Co-developed-by: Konstantin Evtushenko <[email protected]>
    Signed-off-by: Konstantin Evtushenko <[email protected]>
    Signed-off-by: Sergey Bashirov <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    [ removed rqstp parameter from proc_layoutcommit ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

NFSD: Minor cleanup in layoutcommit processing [+ + +]
Author: Sergey Bashirov <[email protected]>
Date:   Mon Oct 20 08:55:02 2025 -0400

    NFSD: Minor cleanup in layoutcommit processing
    
    [ Upstream commit 274365a51d88658fb51cca637ba579034e90a799 ]
    
    Remove dprintk in nfsd4_layoutcommit. These are not needed
    in day to day usage, and the information is also available
    in Wireshark when capturing NFS traffic.
    
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sergey Bashirov <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Stable-dep-of: d68886bae76a ("NFSD: Fix last write offset handling in layoutcommit")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

NFSD: Rework encoding and decoding of nfsd4_deviceid [+ + +]
Author: Sergey Bashirov <[email protected]>
Date:   Mon Oct 20 08:55:01 2025 -0400

    NFSD: Rework encoding and decoding of nfsd4_deviceid
    
    [ Upstream commit 832738e4b325b742940761e10487403f9aad13e8 ]
    
    Compilers may optimize the layout of C structures, so we should not rely
    on sizeof struct and memcpy to encode and decode XDR structures. The byte
    order of the fields should also be taken into account.
    
    This patch adds the correct functions to handle the deviceid4 structure
    and removes the pad field, which is currently not used by NFSD, from the
    runtime state. The server's byte order is preserved because the deviceid4
    blob on the wire is only used as a cookie by the client.
    
    Signed-off-by: Sergey Bashirov <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Stable-dep-of: d68886bae76a ("NFSD: Fix last write offset handling in layoutcommit")
    Signed-off-by: Sasha Levin <[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]>

 
padata: Reset next CPU when reorder sequence wraps around [+ + +]
Author: Xiao Liang <[email protected]>
Date:   Mon Oct 20 11:39:11 2025 -0400

    padata: Reset next CPU when reorder sequence wraps around
    
    [ Upstream commit 501302d5cee0d8e8ec2c4a5919c37e0df9abc99b ]
    
    When seq_nr wraps around, the next reorder job with seq 0 is hashed to
    the first CPU in padata_do_serial(). Correspondingly, need reset pd->cpu
    to the first one when pd->processed wraps around. Otherwise, if the
    number of used CPUs is not a power of 2, padata_find_next() will be
    checking a wrong list, hence deadlock.
    
    Fixes: 6fc4dbcf0276 ("padata: Replace delayed timer with immediate workqueue in padata_reorder")
    Cc: <[email protected]>
    Signed-off-by: Xiao Liang <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    [ applied fix in padata_find_next() instead of padata_reorder() ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PCI/sysfs: Ensure devices are powered for config reads (part 2) [+ + +]
Author: Brian Norris <[email protected]>
Date:   Mon Oct 20 13:41:36 2025 -0700

    PCI/sysfs: Ensure devices are powered for config reads (part 2)
    
    Commit 48991e493507 ("PCI/sysfs: Ensure devices are powered for config
    reads") was applied to various linux-stable trees. However, prior to
    6.12.y, we do not have commit d2bd39c0456b ("PCI: Store all PCIe
    Supported Link Speeds"). Therefore, we also need to apply the change to
    max_link_speed_show().
    
    This was pointed out here:
    
      Re: Patch "PCI/sysfs: Ensure devices are powered for config reads" has been added to the 6.6-stable tree
      https://lore.kernel.org/all/[email protected]/
    
    Original change description follows:
    
        The "max_link_width", "current_link_speed", "current_link_width",
        "secondary_bus_number", and "subordinate_bus_number" sysfs files all access
        config registers, but they don't check the runtime PM state. If the device
        is in D3cold or a parent bridge is suspended, we may see -EINVAL, bogus
        values, or worse, depending on implementation details.
    
        Wrap these access in pci_config_pm_runtime_{get,put}() like most of the
        rest of the similar sysfs attributes.
    
        Notably, "max_link_speed" does not access config registers; it returns a
        cached value since d2bd39c0456b ("PCI: Store all PCIe Supported Link
        Speeds").
    
    Fixes: 56c1af4606f0 ("PCI: Add sysfs max_link_speed/width, current_link_speed/width, etc")
    Link: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Brian Norris <[email protected]>
    Signed-off-by: Brian Norris <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PCI: Add PCI_VDEVICE_SUB helper macro [+ + +]
Author: Piotr Kwapulinski <[email protected]>
Date:   Mon Oct 20 15:53:45 2025 -0400

    PCI: Add PCI_VDEVICE_SUB helper macro
    
    [ Upstream commit 208fff3f567e2a3c3e7e4788845e90245c3891b4 ]
    
    PCI_VDEVICE_SUB generates the pci_device_id struct layout for
    the specific PCI device/subdevice. Private data may follow the
    output.
    
    Reviewed-by: Przemek Kitszel <[email protected]>
    Signed-off-by: Piotr Kwapulinski <[email protected]>
    Acked-by: Bjorn Helgaas <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Stable-dep-of: a7075f501bd3 ("ixgbevf: fix mailbox API compatibility by negotiating supported features")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

PCI: j721e: Enable ACSPCIE Refclk if "ti,syscon-acspcie-proxy-ctrl" exists [+ + +]
Author: Siddharth Vadapalli <[email protected]>
Date:   Mon Oct 20 12:13:33 2025 -0400

    PCI: j721e: Enable ACSPCIE Refclk if "ti,syscon-acspcie-proxy-ctrl" exists
    
    [ Upstream commit 82c4be4168e26a5593aaa1002b5678128a638824 ]
    
    The ACSPCIE module is capable of driving the reference clock required by
    the PCIe Endpoint device. It is an alternative to on-board and external
    reference clock generators. Enabling the output from the ACSPCIE module's
    PAD IO Buffers requires clearing the "PAD IO disable" bits of the
    ACSPCIE_PROXY_CTRL register in the CTRL_MMR register space.
    
    Add support to enable the ACSPCIE reference clock output using the optional
    device-tree property "ti,syscon-acspcie-proxy-ctrl".
    
    Link: https://lore.kernel.org/linux-pci/[email protected]
    Signed-off-by: Siddharth Vadapalli <[email protected]>
    Signed-off-by: Krzysztof WilczyƄski <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Stable-dep-of: f842d3313ba1 ("PCI: j721e: Fix programming sequence of "strap" settings")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

PCI: j721e: Fix programming sequence of "strap" settings [+ + +]
Author: Siddharth Vadapalli <[email protected]>
Date:   Mon Oct 20 12:13:34 2025 -0400

    PCI: j721e: Fix programming sequence of "strap" settings
    
    [ Upstream commit f842d3313ba179d4005096357289c7ad09cec575 ]
    
    The Cadence PCIe Controller integrated in the TI K3 SoCs supports both
    Root-Complex and Endpoint modes of operation. The Glue Layer allows
    "strapping" the Mode of operation of the Controller, the Link Speed
    and the Link Width. This is enabled by programming the "PCIEn_CTRL"
    register (n corresponds to the PCIe instance) within the CTRL_MMR
    memory-mapped register space. The "reset-values" of the registers are
    also different depending on the mode of operation.
    
    Since the PCIe Controller latches onto the "reset-values" immediately
    after being powered on, if the Glue Layer configuration is not done while
    the PCIe Controller is off, it will result in the PCIe Controller latching
    onto the wrong "reset-values". In practice, this will show up as a wrong
    representation of the PCIe Controller's capability structures in the PCIe
    Configuration Space. Some such capabilities which are supported by the PCIe
    Controller in the Root-Complex mode but are incorrectly latched onto as
    being unsupported are:
    - Link Bandwidth Notification
    - Alternate Routing ID (ARI) Forwarding Support
    - Next capability offset within Advanced Error Reporting (AER) capability
    
    Fix this by powering off the PCIe Controller before programming the "strap"
    settings and powering it on after that. The runtime PM APIs namely
    pm_runtime_put_sync() and pm_runtime_get_sync() will decrement and
    increment the usage counter respectively, causing GENPD to power off and
    power on the PCIe Controller.
    
    Fixes: f3e25911a430 ("PCI: j721e: Add TI J721E PCIe driver")
    Signed-off-by: Siddharth Vadapalli <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

PCI: tegra194: Reset BARs when running in PCIe endpoint mode [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Tue Oct 21 14:40:59 2025 -0400

    PCI: tegra194: Reset BARs when running in PCIe endpoint mode
    
    [ Upstream commit 42f9c66a6d0cc45758dab77233c5460e1cf003df ]
    
    Tegra already defines all BARs except BAR0 as BAR_RESERVED.  This is
    sufficient for pci-epf-test to not allocate backing memory and to not call
    set_bar() for those BARs. However, marking a BAR as BAR_RESERVED does not
    mean that the BAR gets disabled.
    
    The host side driver, pci_endpoint_test, simply does an ioremap for all
    enabled BARs and will run tests against all enabled BARs, so it will run
    tests against the BARs marked as BAR_RESERVED.
    
    After running the BAR tests (which will write to all enabled BARs), the
    inbound address translation is broken. This is because the tegra controller
    exposes the ATU Port Logic Structure in BAR4, so when BAR4 is written, the
    inbound address translation settings get overwritten.
    
    To avoid this, implement the dw_pcie_ep_ops .init() callback and start off
    by disabling all BARs (pci-epf-test will later enable/configure BARs that
    are not defined as BAR_RESERVED).
    
    This matches the behavior of other PCIe endpoint drivers: dra7xx, imx6,
    layerscape-ep, artpec6, dw-rockchip, qcom-ep, rcar-gen4, and uniphier-ep.
    
    With this, the PCI endpoint kselftest test case CONSECUTIVE_BAR_TEST (which
    was specifically made to detect address translation issues) passes.
    
    Fixes: c57247f940e8 ("PCI: tegra: Add support for PCIe endpoint mode in Tegra194")
    Signed-off-by: Niklas Cassel <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    [ changed .init field to .ep_init in pcie_ep_ops struct ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
phy: cadence: cdns-dphy: Fix PLL lock and O_CMN_READY polling [+ + +]
Author: Devarsh Thakkar <[email protected]>
Date:   Mon Oct 20 08:59:59 2025 -0400

    phy: cadence: cdns-dphy: Fix PLL lock and O_CMN_READY polling
    
    [ Upstream commit 284fb19a3ffb1083c3ad9c00d29749d09dddb99c ]
    
    PLL lockup and O_CMN_READY assertion can only happen after common state
    machine gets enabled by programming DPHY_CMN_SSM register, but driver was
    polling them before the common state machine was enabled which is
    incorrect.  This is as per the DPHY initialization sequence as mentioned in
    J721E TRM [1] at section "12.7.2.4.1.2.1 Start-up Sequence Timing Diagram".
    It shows O_CMN_READY polling at the end after common configuration pin
    setup where the common configuration pin setup step enables state machine
    as referenced in "Table 12-1533. Common Configuration-Related Setup
    mentions state machine"
    
    To fix this :
    - Add new function callbacks for polling on PLL lock and O_CMN_READY
      assertion.
    - As state machine and clocks get enabled in power_on callback only, move
      the clock related programming part from configure callback to power_on
    callback and poll for the PLL lockup and O_CMN_READY assertion after state
    machine gets enabled.
    - The configure callback only saves the PLL configuration received from the
      client driver which will be applied later on in power_on callback.
    - Add checks to ensure configure is called before power_on and state
      machine is in disabled state before power_on callback is called.
    - Disable state machine in power_off so that client driver can re-configure
      the PLL by following up a power_off, configure, power_on sequence.
    
    [1]: https://www.ti.com/lit/zip/spruil1
    
    Cc: [email protected]
    Fixes: 7a343c8bf4b5 ("phy: Add Cadence D-PHY support")
    Signed-off-by: Devarsh Thakkar <[email protected]>
    Tested-by: Harikrishna Shenoy <[email protected]>
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: cadence: cdns-dphy: Update calibration wait time for startup state machine [+ + +]
Author: Devarsh Thakkar <[email protected]>
Date:   Tue Oct 21 13:04:14 2025 -0400

    phy: cadence: cdns-dphy: Update calibration wait time for startup state machine
    
    [ Upstream commit 2c27aaee934a1b5229152fe33a14f1fdf50da143 ]
    
    Do read-modify-write so that we re-use the characterized reset value as
    specified in TRM [1] to program calibration wait time which defines number
    of cycles to wait for after startup state machine is in bandgap enable
    state.
    
    This fixes PLL lock timeout error faced while using RPi DSI Panel on TI's
    AM62L and J721E SoC since earlier calibration wait time was getting
    overwritten to zero value thus failing the PLL to lockup and causing
    timeout.
    
    [1] AM62P TRM (Section 14.8.6.3.2.1.1 DPHY_TX_DPHYTX_CMN0_CMN_DIG_TBIT2):
    Link: https://www.ti.com/lit/pdf/spruj83
    
    Cc: [email protected]
    Fixes: 7a343c8bf4b5 ("phy: Add Cadence D-PHY support")
    Signed-off-by: Devarsh Thakkar <[email protected]>
    Tested-by: Harikrishna Shenoy <[email protected]>
    Reviewed-by: Tomi Valkeinen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: cdns-dphy: Store hs_clk_rate and return it [+ + +]
Author: Tomi Valkeinen <[email protected]>
Date:   Mon Oct 20 08:59:58 2025 -0400

    phy: cdns-dphy: Store hs_clk_rate and return it
    
    [ Upstream commit 689a54acb56858c85de8c7285db82b8ae6dbf683 ]
    
    The DPHY driver does not return the actual hs_clk_rate, so the DSI
    driver has no idea what clock was actually achieved. Set the realized
    hs_clk_rate to the opts struct, so that the DSI driver gets it back.
    
    Reviewed-by: Aradhya Bhatia <[email protected]>
    Tested-by: Parth Pancholi <[email protected]>
    Tested-by: Jayesh Choudhary <[email protected]>
    Acked-by: Vinod Koul <[email protected]>
    Reviewed-by: Devarsh Thakkar <[email protected]>
    Signed-off-by: Tomi Valkeinen <[email protected]>
    Link: https://lore.kernel.org/r/20250723-cdns-dphy-hs-clk-rate-fix-v1-1-d4539d44cbe7@ideasonboard.com
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 284fb19a3ffb ("phy: cadence: cdns-dphy: Fix PLL lock and O_CMN_READY polling")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PM: runtime: Add new devm functions [+ + +]
Author: Bence CsĂłkĂĄs <[email protected]>
Date:   Mon Oct 20 09:03:47 2025 -0400

    PM: runtime: Add new devm functions
    
    [ Upstream commit 73db799bf5efc5a04654bb3ff6c9bf63a0dfa473 ]
    
    Add `devm_pm_runtime_set_active_enabled()` and
    `devm_pm_runtime_get_noresume()` for simplifying
    common cases in drivers.
    
    Signed-off-by: Bence CsĂłkĂĄs <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Stable-dep-of: 0792c1984a45 ("iio: imu: inv_icm42600: Simplify pm_runtime setup")
    Signed-off-by: Sasha Levin <[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]>

 
r8152: add error handling in rtl8152_driver_init [+ + +]
Author: Yi Cong <[email protected]>
Date:   Sat Oct 11 16:24:15 2025 +0800

    r8152: add error handling in rtl8152_driver_init
    
    commit 75527d61d60d493d1eb064f335071a20ca581f54 upstream.
    
    rtl8152_driver_init() is missing the error handling.
    When rtl8152_driver registration fails, rtl8152_cfgselector_driver
    should be deregistered.
    
    Fixes: ec51fbd1b8a2 ("r8152: add USB device driver for config selection")
    Cc: [email protected]
    Signed-off-by: Yi Cong <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [[email protected]: clarified the commit message]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
r8169: fix packet truncation after S4 resume on RTL8168H/RTL8111H [+ + +]
Author: Linmao Li <[email protected]>
Date:   Thu Oct 9 20:25:49 2025 +0800

    r8169: fix packet truncation after S4 resume on RTL8168H/RTL8111H
    
    [ Upstream commit 70f92ab97042f243e1c8da1c457ff56b9b3e49f1 ]
    
    After resume from S4 (hibernate), RTL8168H/RTL8111H truncates incoming
    packets. Packet captures show messages like "IP truncated-ip - 146 bytes
    missing!".
    
    The issue is caused by RxConfig not being properly re-initialized after
    resume. Re-initializing the RxConfig register before the chip
    re-initialization sequence avoids the truncation and restores correct
    packet reception.
    
    This follows the same pattern as commit ef9da46ddef0 ("r8169: fix data
    corruption issue on RTL8402").
    
    Fixes: 6e1d0b898818 ("r8169:add support for RTL8168H and RTL8107E")
    Signed-off-by: Linmao Li <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Heiner Kallweit <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    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]>

 
Revert "selftests: mm: fix map_hugetlb failure on 64K page size systems" [+ + +]
Author: Leon Hwang <[email protected]>
Date:   Thu Oct 23 09:47:32 2025 +0800

    Revert "selftests: mm: fix map_hugetlb failure on 64K page size systems"
    
    This reverts commit a584c7734a4dd050451fcdd65c66317e15660e81 which is
    commit 91b80cc5b39f00399e8e2d17527cad2c7fa535e2 upstream.
    
    This fixes the following build error:
    
    map_hugetlb.c: In function 'main':
    map_hugetlb.c:79:25: warning: implicit declaration of function 'default_huge_page_size' [-Wimplicit-function-declaration]
    79 |         hugepage_size = default_huge_page_size();
    
    Signed-off-by: Leon Hwang <[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]>

 
riscv: kprobes: Fix probe address validation [+ + +]
Author: Fabian Vogt <[email protected]>
Date:   Wed Sep 10 17:25:13 2025 +0200

    riscv: kprobes: Fix probe address validation
    
    [ Upstream commit 9e68bd803fac49274fde914466fd3b07c4d602c8 ]
    
    When adding a kprobe such as "p:probe/tcp_sendmsg _text+15392192",
    arch_check_kprobe would start iterating all instructions starting from
    _text until the probed address. Not only is this very inefficient, but
    literal values in there (e.g. left by function patching) are
    misinterpreted in a way that causes a desync.
    
    Fix this by doing it like x86: start the iteration at the closest
    preceding symbol instead of the given starting point.
    
    Fixes: 87f48c7ccc73 ("riscv: kprobe: Fixup kernel panic when probing an illegal position")
    Signed-off-by: Fabian Vogt <[email protected]>
    Signed-off-by: Marvin Friedrich <[email protected]>
    Acked-by: Guo Ren <[email protected]>
    Link: https://lore.kernel.org/r/6191817.lOV4Wx5bFT@fvogt-thinkpad
    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:   Wed Oct 1 15:38:17 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/balancing: Rename newidle_balance() => sched_balance_newidle() [+ + +]
Author: Ingo Molnar <[email protected]>
Date:   Fri Mar 8 12:18:16 2024 +0100

    sched/balancing: Rename newidle_balance() => sched_balance_newidle()
    
    [ Upstream commit 7d058285cd77cc1411c91efd1b1673530bb1bee8 ]
    
    Standardize scheduler load-balancing function names on the
    sched_balance_() prefix.
    
    Signed-off-by: Ingo Molnar <[email protected]>
    Reviewed-by: Shrikanth Hegde <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 17e3e88ed0b6 ("sched/fair: Fix pelt lost idle time detection")
    Signed-off-by: Sasha Levin <[email protected]>

 
sched/fair: Fix pelt lost idle time detection [+ + +]
Author: Vincent Guittot <[email protected]>
Date:   Wed Oct 8 15:12:14 2025 +0200

    sched/fair: Fix pelt lost idle time detection
    
    [ Upstream commit 17e3e88ed0b6318fde0d1c14df1a804711cab1b5 ]
    
    The check for some lost idle pelt time should be always done when
    pick_next_task_fair() fails to pick a task and not only when we call it
    from the fair fast-path.
    
    The case happens when the last running task on rq is a RT or DL task. When
    the latter goes to sleep and the /Sum of util_sum of the rq is at the max
    value, we don't account the lost of idle time whereas we should.
    
    Fixes: 67692435c411 ("sched: Rework pick_next_task() slow-path")
    Signed-off-by: Vincent Guittot <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[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: 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]>

 
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]>

 
smb: client: Fix refcount leak for cifs_sb_tlink [+ + +]
Author: Shuhao Fu <[email protected]>
Date:   Thu Oct 16 02:52:55 2025 +0000

    smb: client: Fix refcount leak for cifs_sb_tlink
    
    commit c2b77f42205ef485a647f62082c442c1cd69d3fc upstream.
    
    Fix three refcount inconsistency issues related to `cifs_sb_tlink`.
    
    Comments for `cifs_sb_tlink` state that `cifs_put_tlink()` needs to be
    called after successful calls to `cifs_sb_tlink()`. Three calls fail to
    update refcount accordingly, leading to possible resource leaks.
    
    Fixes: 8ceb98437946 ("CIFS: Move rename to ops struct")
    Fixes: 2f1afe25997f ("cifs: Use smb 2 - 3 and cifsacl mount options getacl functions")
    Fixes: 366ed846df60 ("cifs: Use smb 2 - 3 and cifsacl mount options setacl function")
    Cc: [email protected]
    Signed-off-by: Shuhao Fu <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    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]>

 
tcp: fix tcp_tso_should_defer() vs large RTT [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sat Oct 11 11:57:42 2025 +0000

    tcp: fix tcp_tso_should_defer() vs large RTT
    
    [ Upstream commit 295ce1eb36ae47dc862d6c8a1012618a25516208 ]
    
    Neal reported that using neper tcp_stream with TCP_TX_DELAY
    set to 50ms would often lead to flows stuck in a small cwnd mode,
    regardless of the congestion control.
    
    While tcp_stream sets TCP_TX_DELAY too late after the connect(),
    it highlighted two kernel bugs.
    
    The following heuristic in tcp_tso_should_defer() seems wrong
    for large RTT:
    
    delta = tp->tcp_clock_cache - head->tstamp;
    /* If next ACK is likely to come too late (half srtt), do not defer */
    if ((s64)(delta - (u64)NSEC_PER_USEC * (tp->srtt_us >> 4)) < 0)
          goto send_now;
    
    If next ACK is expected to come in more than 1 ms, we should
    not defer because we prefer a smooth ACK clocking.
    
    While blamed commit was a step in the good direction, it was not
    generic enough.
    
    Another patch fixing TCP_TX_DELAY for established flows
    will be proposed when net-next reopens.
    
    Fixes: 50c8339e9299 ("tcp: tso: restore IW10 after TSO autosizing")
    Reported-by: Neal Cardwell <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Neal Cardwell <[email protected]>
    Tested-by: Neal Cardwell <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [[email protected]: fixed whitespace issue]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tg3: prevent use of uninitialized remote_adv and local_adv variables [+ + +]
Author: Alexey Simakov <[email protected]>
Date:   Tue Oct 14 19:47:38 2025 +0300

    tg3: prevent use of uninitialized remote_adv and local_adv variables
    
    [ Upstream commit 0c3f2e62815a43628e748b1e4ad97a1c46cce703 ]
    
    Some execution paths that jump to the fiber_setup_done label
    could leave the remote_adv and local_adv variables uninitialized
    and then use it.
    
    Initialize this variables at the point of definition to avoid this.
    
    Fixes: 85730a631f0c ("tg3: Add SGMII phy support for 5719/5718 serdes")
    Co-developed-by: Alexandr Sapozhnikov <[email protected]>
    Signed-off-by: Alexandr Sapozhnikov <[email protected]>
    Signed-off-by: Alexey Simakov <[email protected]>
    Reviewed-by: Pavan Chebbi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
timers: Add shutdown mechanism to the internal functions [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Sat Oct 11 00:02:49 2025 +0900

    timers: Add shutdown mechanism to the internal functions
    
    [ Upstream commit 0cc04e80458a822300b93f82ed861a513edde194 ]
    
    Tearing down timers which have circular dependencies to other
    functionality, e.g. workqueues, where the timer can schedule work and work
    can arm timers, is not trivial.
    
    In those cases it is desired to shutdown the timer in a way which prevents
    rearming of the timer. The mechanism to do so is to set timer->function to
    NULL and use this as an indicator for the timer arming functions to ignore
    the (re)arm request.
    
    Add a shutdown argument to the relevant internal functions which makes the
    actual deactivation code set timer->function to NULL which in turn prevents
    rearming of the timer.
    
    Co-developed-by: Steven Rostedt <[email protected]>
    Signed-off-by: Steven Rostedt <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Guenter Roeck <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

timers: Provide timer_shutdown[_sync]() [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Sat Oct 11 00:02:50 2025 +0900

    timers: Provide timer_shutdown[_sync]()
    
    [ Upstream commit f571faf6e443b6011ccb585d57866177af1f643c ]
    
    Tearing down timers which have circular dependencies to other
    functionality, e.g. workqueues, where the timer can schedule work and work
    can arm timers, is not trivial.
    
    In those cases it is desired to shutdown the timer in a way which prevents
    rearming of the timer. The mechanism to do so is to set timer->function to
    NULL and use this as an indicator for the timer arming functions to ignore
    the (re)arm request.
    
    Expose new interfaces for this: timer_shutdown_sync() and timer_shutdown().
    
    timer_shutdown_sync() has the same functionality as timer_delete_sync()
    plus the NULL-ification of the timer function.
    
    timer_shutdown() has the same functionality as timer_delete() plus the
    NULL-ification of the timer function.
    
    In both cases the rearming of the timer is prevented by silently discarding
    rearm attempts due to timer->function being NULL.
    
    Co-developed-by: Steven Rostedt <[email protected]>
    Signed-off-by: Steven Rostedt <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Guenter Roeck <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

timers: Replace BUG_ON()s [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Sat Oct 11 00:02:45 2025 +0900

    timers: Replace BUG_ON()s
    
    [ Upstream commit 82ed6f7ef58f9634fe4462dd721902c580f01569 ]
    
    The timer code still has a few BUG_ON()s left which are crashing the kernel
    in situations where it still can recover or simply refuse to take an
    action.
    
    Remove the one in the hotplug callback which checks for the CPU being
    offline. If that happens then the whole hotplug machinery will explode in
    colourful ways.
    
    Replace the rest with WARN_ON_ONCE() and conditional returns where
    appropriate.
    
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Guenter Roeck <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

timers: Silently ignore timers with a NULL function [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Sat Oct 11 00:02:47 2025 +0900

    timers: Silently ignore timers with a NULL function
    
    [ Upstream commit d02e382cef06cc73561dd32dfdc171c00dcc416d ]
    
    Tearing down timers which have circular dependencies to other
    functionality, e.g. workqueues, where the timer can schedule work and work
    can arm timers, is not trivial.
    
    In those cases it is desired to shutdown the timer in a way which prevents
    rearming of the timer. The mechanism to do so is to set timer->function to
    NULL and use this as an indicator for the timer arming functions to ignore
    the (re)arm request.
    
    In preparation for that replace the warnings in the relevant code paths
    with checks for timer->function == NULL. If the pointer is NULL, then
    discard the rearm request silently.
    
    Add debug_assert_init() instead of the WARN_ON_ONCE(!timer->function)
    checks so that debug objects can warn about non-initialized timers.
    
    The warning of debug objects does not warn if timer->function == NULL.  It
    warns when timer was not initialized using timer_setup[_on_stack]() or via
    DEFINE_TIMER(). If developers fail to enable debug objects and then waste
    lots of time to figure out why their non-initialized timer is not firing,
    they deserve it. Same for initializing a timer with a NULL function.
    
    Co-developed-by: Steven Rostedt <[email protected]>
    Signed-off-by: Steven Rostedt <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Guenter Roeck <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/r/87wn7kdann.ffs@tglx
    Signed-off-by: Jeongjun Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

timers: Split [try_to_]del_timer[_sync]() to prepare for shutdown mode [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Sat Oct 11 00:02:48 2025 +0900

    timers: Split [try_to_]del_timer[_sync]() to prepare for shutdown mode
    
    [ Upstream commit 8553b5f2774a66b1f293b7d783934210afb8f23c ]
    
    Tearing down timers which have circular dependencies to other
    functionality, e.g. workqueues, where the timer can schedule work and work
    can arm timers, is not trivial.
    
    In those cases it is desired to shutdown the timer in a way which prevents
    rearming of the timer. The mechanism to do so is to set timer->function to
    NULL and use this as an indicator for the timer arming functions to ignore
    the (re)arm request.
    
    Split the inner workings of try_do_del_timer_sync(), del_timer_sync() and
    del_timer() into helper functions to prepare for implementing the shutdown
    functionality.
    
    No functional change.
    
    Co-developed-by: Steven Rostedt <[email protected]>
    Signed-off-by: Steven Rostedt <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Guenter Roeck <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/all/[email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

timers: Update the documentation to reflect on the new timer_shutdown() API [+ + +]
Author: Steven Rostedt (Google) <[email protected]>
Date:   Sat Oct 11 00:02:51 2025 +0900

    timers: Update the documentation to reflect on the new timer_shutdown() API
    
    [ Upstream commit a31323bef2b66455920d054b160c17d4240f8fd4 ]
    
    In order to make sure that a timer is not re-armed after it is stopped
    before freeing, a new shutdown state is added to the timer code. The API
    timer_shutdown_sync() and timer_shutdown() must be called before the
    object that holds the timer can be freed.
    
    Update the documentation to reflect this new workflow.
    
    [ tglx: Updated to the new semantics and updated the zh_CN version ]
    
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Tested-by: Guenter Roeck <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Anna-Maria Behnsen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jeongjun Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tls: always set record_type in tls_process_cmsg [+ + +]
Author: Sabrina Dubroca <[email protected]>
Date:   Tue Oct 14 11:16:58 2025 +0200

    tls: always set record_type in tls_process_cmsg
    
    [ Upstream commit b6fe4c29bb51cf239ecf48eacf72b924565cb619 ]
    
    When userspace wants to send a non-DATA record (via the
    TLS_SET_RECORD_TYPE cmsg), we need to send any pending data from a
    previous MSG_MORE send() as a separate DATA record. If that DATA record
    is encrypted asynchronously, tls_handle_open_record will return
    -EINPROGRESS. This is currently treated as an error by
    tls_process_cmsg, and it will skip setting record_type to the correct
    value, but the caller (tls_sw_sendmsg_locked) handles that return
    value correctly and proceeds with sending the new message with an
    incorrect record_type (DATA instead of whatever was requested in the
    cmsg).
    
    Always set record_type before handling the open record. If
    tls_handle_open_record returns an error, record_type will be
    ignored. If it succeeds, whether with synchronous crypto (returning 0)
    or asynchronous (returning -EINPROGRESS), the caller will proceed
    correctly.
    
    Fixes: a42055e8d2c3 ("net/tls: Add support for async encryption of records for performance")
    Reported-by: Jann Horn <[email protected]>
    Signed-off-by: Sabrina Dubroca <[email protected]>
    Link: https://patch.msgid.link/0457252e578a10a94e40c72ba6288b3a64f31662.1760432043.git.sd@queasysnail.net
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tls: don't rely on tx_work during send() [+ + +]
Author: Sabrina Dubroca <[email protected]>
Date:   Tue Oct 14 11:17:00 2025 +0200

    tls: don't rely on tx_work during send()
    
    [ Upstream commit 7f846c65ca11e63d2409868ff039081f80e42ae4 ]
    
    With async crypto, we rely on tx_work to actually transmit records
    once encryption completes. But while send() is running, both the
    tx_lock and socket lock are held, so tx_work_handler cannot process
    the queue of encrypted records, and simply reschedules itself. During
    a large send(), this could last a long time, and use a lot of memory.
    
    Transmit any pending encrypted records before restarting the main
    loop of tls_sw_sendmsg_locked.
    
    Fixes: a42055e8d2c3 ("net/tls: Add support for async encryption of records for performance")
    Reported-by: Jann Horn <[email protected]>
    Signed-off-by: Sabrina Dubroca <[email protected]>
    Link: https://patch.msgid.link/8396631478f70454b44afb98352237d33f48d34d.1760432043.git.sd@queasysnail.net
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tls: wait for async encrypt in case of error during latter iterations of sendmsg [+ + +]
Author: Sabrina Dubroca <[email protected]>
Date:   Tue Oct 14 11:16:57 2025 +0200

    tls: wait for async encrypt in case of error during latter iterations of sendmsg
    
    [ Upstream commit b014a4e066c555185b7c367efacdc33f16695495 ]
    
    If we hit an error during the main loop of tls_sw_sendmsg_locked (eg
    failed allocation), we jump to send_end and immediately
    return. Previous iterations may have queued async encryption requests
    that are still pending. We should wait for those before returning, as
    we could otherwise be reading from memory that userspace believes
    we're not using anymore, which would be a sort of use-after-free.
    
    This is similar to what tls_sw_recvmsg already does: failures during
    the main loop jump to the "wait for async" code, not straight to the
    unlock/return.
    
    Fixes: a42055e8d2c3 ("net/tls: Add support for async encryption of records for performance")
    Reported-by: Jann Horn <[email protected]>
    Signed-off-by: Sabrina Dubroca <[email protected]>
    Link: https://patch.msgid.link/c793efe9673b87f808d84fdefc0f732217030c52.1760432043.git.sd@queasysnail.net
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tls: wait for pending async decryptions if tls_strp_msg_hold fails [+ + +]
Author: Sabrina Dubroca <[email protected]>
Date:   Tue Oct 14 11:16:59 2025 +0200

    tls: wait for pending async decryptions if tls_strp_msg_hold fails
    
    [ Upstream commit b8a6ff84abbcbbc445463de58704686011edc8e1 ]
    
    Async decryption calls tls_strp_msg_hold to create a clone of the
    input skb to hold references to the memory it uses. If we fail to
    allocate that clone, proceeding with async decryption can lead to
    various issues (UAF on the skb, writing into userspace memory after
    the recv() call has returned).
    
    In this case, wait for all pending decryption requests.
    
    Fixes: 84c61fe1a75b ("tls: rx: do not use the standard strparser")
    Reported-by: Jann Horn <[email protected]>
    Signed-off-by: Sabrina Dubroca <[email protected]>
    Link: https://patch.msgid.link/b9fe61dcc07dab15da9b35cf4c7d86382a98caf2.1760432043.git.sd@queasysnail.net
    Signed-off-by: Jakub Kicinski <[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: gadget: f_acm: Refactor bind path to use __free() [+ + +]
Author: Kuen-Han Tsai <[email protected]>
Date:   Fri Oct 17 21:23:28 2025 -0400

    usb: gadget: f_acm: Refactor bind path to use __free()
    
    [ Upstream commit 47b2116e54b4a854600341487e8b55249e926324 ]
    
    After an bind/unbind cycle, the acm->notify_req is left stale. If a
    subsequent bind fails, the unified error label attempts to free this
    stale request, leading to a NULL pointer dereference when accessing
    ep->ops->free_request.
    
    Refactor the error handling in the bind path to use the __free()
    automatic cleanup mechanism.
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020
    Call trace:
     usb_ep_free_request+0x2c/0xec
     gs_free_req+0x30/0x44
     acm_bind+0x1b8/0x1f4
     usb_add_function+0xcc/0x1f0
     configfs_composite_bind+0x468/0x588
     gadget_bind_driver+0x104/0x270
     really_probe+0x190/0x374
     __driver_probe_device+0xa0/0x12c
     driver_probe_device+0x3c/0x218
     __device_attach_driver+0x14c/0x188
     bus_for_each_drv+0x10c/0x168
     __device_attach+0xfc/0x198
     device_initial_probe+0x14/0x24
     bus_probe_device+0x94/0x11c
     device_add+0x268/0x48c
     usb_add_gadget+0x198/0x28c
     dwc3_gadget_init+0x700/0x858
     __dwc3_set_mode+0x3cc/0x664
     process_scheduled_works+0x1d8/0x488
     worker_thread+0x244/0x334
     kthread+0x114/0x1bc
     ret_from_fork+0x10/0x20
    
    Fixes: 1f1ba11b6494 ("usb gadget: issue notifications from ACM function")
    Cc: [email protected]
    Signed-off-by: Kuen-Han Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: f_ecm: Refactor bind path to use __free() [+ + +]
Author: Kuen-Han Tsai <[email protected]>
Date:   Fri Oct 17 21:49:37 2025 -0400

    usb: gadget: f_ecm: Refactor bind path to use __free()
    
    [ Upstream commit 42988380ac67c76bb9dff8f77d7ef3eefd50b7b5 ]
    
    After an bind/unbind cycle, the ecm->notify_req is left stale. If a
    subsequent bind fails, the unified error label attempts to free this
    stale request, leading to a NULL pointer dereference when accessing
    ep->ops->free_request.
    
    Refactor the error handling in the bind path to use the __free()
    automatic cleanup mechanism.
    
    Fixes: da741b8c56d6 ("usb ethernet gadget: split CDC Ethernet function")
    Cc: [email protected]
    Signed-off-by: Kuen-Han Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: f_ncm: Refactor bind path to use __free() [+ + +]
Author: Kuen-Han Tsai <[email protected]>
Date:   Fri Oct 17 21:22:17 2025 -0400

    usb: gadget: f_ncm: Refactor bind path to use __free()
    
    [ Upstream commit 75a5b8d4ddd4eb6b16cb0b475d14ff4ae64295ef ]
    
    After an bind/unbind cycle, the ncm->notify_req is left stale. If a
    subsequent bind fails, the unified error label attempts to free this
    stale request, leading to a NULL pointer dereference when accessing
    ep->ops->free_request.
    
    Refactor the error handling in the bind path to use the __free()
    automatic cleanup mechanism.
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020
    Call trace:
     usb_ep_free_request+0x2c/0xec
     ncm_bind+0x39c/0x3dc
     usb_add_function+0xcc/0x1f0
     configfs_composite_bind+0x468/0x588
     gadget_bind_driver+0x104/0x270
     really_probe+0x190/0x374
     __driver_probe_device+0xa0/0x12c
     driver_probe_device+0x3c/0x218
     __device_attach_driver+0x14c/0x188
     bus_for_each_drv+0x10c/0x168
     __device_attach+0xfc/0x198
     device_initial_probe+0x14/0x24
     bus_probe_device+0x94/0x11c
     device_add+0x268/0x48c
     usb_add_gadget+0x198/0x28c
     dwc3_gadget_init+0x700/0x858
     __dwc3_set_mode+0x3cc/0x664
     process_scheduled_works+0x1d8/0x488
     worker_thread+0x244/0x334
     kthread+0x114/0x1bc
     ret_from_fork+0x10/0x20
    
    Fixes: 9f6ce4240a2b ("usb: gadget: f_ncm.c added")
    Cc: [email protected]
    Signed-off-by: Kuen-Han Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: f_rndis: Refactor bind path to use __free() [+ + +]
Author: Kuen-Han Tsai <[email protected]>
Date:   Fri Oct 17 22:44:44 2025 -0400

    usb: gadget: f_rndis: Refactor bind path to use __free()
    
    [ Upstream commit 08228941436047bdcd35a612c1aec0912a29d8cd ]
    
    After an bind/unbind cycle, the rndis->notify_req is left stale. If a
    subsequent bind fails, the unified error label attempts to free this
    stale request, leading to a NULL pointer dereference when accessing
    ep->ops->free_request.
    
    Refactor the error handling in the bind path to use the __free()
    automatic cleanup mechanism.
    
    Fixes: 45fe3b8e5342 ("usb ethernet gadget: split RNDIS function")
    Cc: [email protected]
    Signed-off-by: Kuen-Han Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: Introduce free_usb_request helper [+ + +]
Author: Kuen-Han Tsai <[email protected]>
Date:   Fri Oct 17 21:22:16 2025 -0400

    usb: gadget: Introduce free_usb_request helper
    
    [ Upstream commit 201c53c687f2b55a7cc6d9f4000af4797860174b ]
    
    Introduce the free_usb_request() function that frees both the request's
    buffer and the request itself.
    
    This function serves as the cleanup callback for DEFINE_FREE() to enable
    automatic, scope-based cleanup for usb_request pointers.
    
    Signed-off-by: Kuen-Han Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 75a5b8d4ddd4 ("usb: gadget: f_ncm: Refactor bind path to use __free()")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: gadget: Store endpoint pointer in usb_request [+ + +]
Author: Kuen-Han Tsai <[email protected]>
Date:   Fri Oct 17 21:22:15 2025 -0400

    usb: gadget: Store endpoint pointer in usb_request
    
    [ Upstream commit bfb1d99d969fe3b892db30848aeebfa19d21f57f ]
    
    Gadget function drivers often have goto-based error handling in their
    bind paths, which can be bug-prone. Refactoring these paths to use
    __free() scope-based cleanup is desirable, but currently blocked.
    
    The blocker is that usb_ep_free_request(ep, req) requires two
    parameters, while the __free() mechanism can only pass a pointer to the
    request itself.
    
    Store an endpoint pointer in the struct usb_request. The pointer is
    populated centrally in usb_ep_alloc_request() on every successful
    allocation, making the request object self-contained.
    
    Signed-off-by: Kuen-Han Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: 75a5b8d4ddd4 ("usb: gadget: f_ncm: Refactor bind path to use __free()")
    Signed-off-by: Sasha Levin <[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]>

 
vfs: Don't leak disconnected dentries on umount [+ + +]
Author: Jan Kara <[email protected]>
Date:   Mon Oct 20 20:24:58 2025 -0400

    vfs: Don't leak disconnected dentries on umount
    
    [ Upstream commit 56094ad3eaa21e6621396cc33811d8f72847a834 ]
    
    When user calls open_by_handle_at() on some inode that is not cached, we
    will create disconnected dentry for it. If such dentry is a directory,
    exportfs_decode_fh_raw() will then try to connect this dentry to the
    dentry tree through reconnect_path(). It may happen for various reasons
    (such as corrupted fs or race with rename) that the call to
    lookup_one_unlocked() in reconnect_one() will fail to find the dentry we
    are trying to reconnect and instead create a new dentry under the
    parent. Now this dentry will not be marked as disconnected although the
    parent still may well be disconnected (at least in case this
    inconsistency happened because the fs is corrupted and .. doesn't point
    to the real parent directory). This creates inconsistency in
    disconnected flags but AFAICS it was mostly harmless. At least until
    commit f1ee616214cb ("VFS: don't keep disconnected dentries on d_anon")
    which removed adding of most disconnected dentries to sb->s_anon list.
    Thus after this commit cleanup of disconnected dentries implicitely
    relies on the fact that dput() will immediately reclaim such dentries.
    However when some leaf dentry isn't marked as disconnected, as in the
    scenario described above, the reclaim doesn't happen and the dentries
    are "leaked". Memory reclaim can eventually reclaim them but otherwise
    they stay in memory and if umount comes first, we hit infamous "Busy
    inodes after unmount" bug. Make sure all dentries created under a
    disconnected parent are marked as disconnected as well.
    
    Reported-by: [email protected]
    Fixes: f1ee616214cb ("VFS: don't keep disconnected dentries on d_anon")
    CC: [email protected]
    Signed-off-by: Jan Kara <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    [ relocated DCACHE_DISCONNECTED propagation from d_alloc_parallel() to d_alloc() ]
    Signed-off-by: Sasha Levin <[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/resctrl: Fix miscount of bandwidth event when reactivating previously unavailable RMID [+ + +]
Author: Babu Moger <[email protected]>
Date:   Fri Oct 24 13:13:11 2025 -0500

    x86/resctrl: Fix miscount of bandwidth event when reactivating previously unavailable RMID
    
    [ Upstream commit 15292f1b4c55a3a7c940dbcb6cb8793871ed3d92 ]
    
    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]
    (cherry picked from commit 15292f1b4c55a3a7c940dbcb6cb8793871ed3d92)
    [[email protected]: Fix conflict for v6.1 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 19:01:43 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]>

xfs: fix log CRC mismatches between i386 and other architectures [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Mon Oct 20 08:49:20 2025 -0400

    xfs: fix log CRC mismatches between i386 and other architectures
    
    [ Upstream commit e747883c7d7306acb4d683038d881528fbfbe749 ]
    
    When mounting file systems with a log that was dirtied on i386 on
    other architectures or vice versa, log recovery is unhappy:
    
    [   11.068052] XFS (vdb): Torn write (CRC failure) detected at log block 0x2. Truncating head block from 0xc.
    
    This is because the CRCs generated by i386 and other architectures
    always diff.  The reason for that is that sizeof(struct xlog_rec_header)
    returns different values for i386 vs the rest (324 vs 328), because the
    struct is not sizeof(uint64_t) aligned, and i386 has odd struct size
    alignment rules.
    
    This issue goes back to commit 13cdc853c519 ("Add log versioning, and new
    super block field for the log stripe") in the xfs-import tree, which
    adds log v2 support and the h_size field that causes the unaligned size.
    At that time it only mattered for the crude debug only log header
    checksum, but with commit 0e446be44806 ("xfs: add CRC checks to the log")
    it became a real issue for v5 file system, because now there is a proper
    CRC, and regular builds actually expect it match.
    
    Fix this by allowing checksums with and without the padding.
    
    Fixes: 0e446be44806 ("xfs: add CRC checks to the log")
    Cc: <[email protected]> # v3.8
    Signed-off-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Carlos Maiolino <[email protected]>
    [ Adjust context and file names ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

xfs: rename the old_crc variable in xlog_recover_process [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Mon Oct 20 08:49:19 2025 -0400

    xfs: rename the old_crc variable in xlog_recover_process
    
    [ Upstream commit 0b737f4ac1d3ec093347241df74bbf5f54a7e16c ]
    
    old_crc is a very misleading name.  Rename it to expected_crc as that
    described the usage much better.
    
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Carlos Maiolino <[email protected]>
    Stable-dep-of: e747883c7d73 ("xfs: fix log CRC mismatches between i386 and other architectures")
    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]>