Changelog in Linux kernel 6.17.6

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

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

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

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

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

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

 
arm64: dts: broadcom: bcm2712: Add default GIC address cells [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Fri Aug 22 15:34:08 2025 +0200

    arm64: dts: broadcom: bcm2712: Add default GIC address cells
    
    [ Upstream commit 278b6cabf18bd804f956b98a2f1068717acdbfe3 ]
    
    Add missing address-cells 0 to GIC interrupt node to silence W=1
    warning:
    
      bcm2712.dtsi:494.4-497.31: Warning (interrupt_map): /axi/pcie@1000110000:interrupt-map:
        Missing property '#address-cells' in node /soc@107c000000/interrupt-controller@7fff9000, using 0 as fallback
    
    Value '0' is correct because:
    1. GIC interrupt controller does not have children,
    2. interrupt-map property (in PCI node) consists of five components and
       the fourth component "parent unit address", which size is defined by
       '#address-cells' of the node pointed to by the interrupt-parent
       component, is not used (=0)
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Florian Fainelli <[email protected]>
    Stable-dep-of: aa960b597600 ("arm64: dts: broadcom: bcm2712: Define VGIC interrupt")
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: broadcom: bcm2712: Define VGIC interrupt [+ + +]
Author: Peter Robinson <[email protected]>
Date:   Wed Sep 24 09:56:05 2025 +0100

    arm64: dts: broadcom: bcm2712: Define VGIC interrupt
    
    [ Upstream commit aa960b597600bed80fe171729057dd6aa188b5b5 ]
    
    Define the interrupt in the GICv2 for vGIC so KVM
    can be used, it was missed from the original upstream
    DTB for some reason.
    
    Signed-off-by: Peter Robinson <[email protected]>
    Cc: Andrea della Porta <[email protected]>
    Cc: Phil Elwell <[email protected]>
    Fixes: faa3381267d0 ("arm64: dts: broadcom: Add minimal support for Raspberry Pi 5")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Florian Fainelli <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: mte: Do not warn if the page is already tagged in copy_highpage() [+ + +]
Author: Catalin Marinas <[email protected]>
Date:   Wed Oct 22 11:09:14 2025 +0100

    arm64: mte: Do not warn if the page is already tagged in copy_highpage()
    
    commit b98c94eed4a975e0c80b7e90a649a46967376f58 upstream.
    
    The arm64 copy_highpage() assumes that the destination page is newly
    allocated and not MTE-tagged (PG_mte_tagged unset) and warns
    accordingly. However, following commit 060913999d7a ("mm: migrate:
    support poisoned recover from migrate folio"), folio_mc_copy() is called
    before __folio_migrate_mapping(). If the latter fails (-EAGAIN), the
    copy will be done again to the same destination page. Since
    copy_highpage() already set the PG_mte_tagged flag, this second copy
    will warn.
    
    Replace the WARN_ON_ONCE(page already tagged) in the arm64
    copy_highpage() with a comment.
    
    Reported-by: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: David Hildenbrand <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: Kefeng Wang <[email protected]>
    Cc: [email protected] # 6.12.x
    Reviewed-by: Yang Shi <[email protected]>
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: sysreg: Correct sign definitions for EIESB and DoubleLock [+ + +]
Author: Fuad Tabba <[email protected]>
Date:   Fri Aug 29 10:51:42 2025 +0100

    arm64: sysreg: Correct sign definitions for EIESB and DoubleLock
    
    [ Upstream commit f4d4ebc84995178273740f3e601e97fdefc561d2 ]
    
    The `ID_AA64MMFR4_EL1.EIESB` field, is an unsigned enumeration, but was
    incorrectly defined as a `SignedEnum` when introduced in commit
    cfc680bb04c5 ("arm64: sysreg: Add layout for ID_AA64MMFR4_EL1"). This is
    corrected to `UnsignedEnum`.
    
    Conversely, the `ID_AA64DFR0_EL1.DoubleLock` field, is a signed
    enumeration, but was incorrectly defined as an `UnsignedEnum`. This is
    corrected to `SignedEnum`, which wasn't correctly set when annotated as
    such in commit ad16d4cf0b4f ("arm64/sysreg: Initial unsigned annotations
    for ID registers").
    
    Signed-off-by: Fuad Tabba <[email protected]>
    Acked-by: Mark Rutland <[email protected]>
    Signed-off-by: Will Deacon <[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]>

 
block: require LBA dma_alignment when using PI [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Wed Oct 22 10:33:31 2025 +0200

    block: require LBA dma_alignment when using PI
    
    [ Upstream commit 4c8cf6bd28d6fea23819f082ddc8063fd6fa963a ]
    
    The block layer PI generation / verification code expects the bio_vecs
    to have at least LBA size (or more correctly integrity internal)
    granularity.  With the direct I/O alignment relaxation in 2022, user
    space can now feed bios with less alignment than that, leading to
    scribbling outside the PI buffers.  Apparently this wasn't noticed so far
    because none of the tests generate such buffers, but since 851c4c96db00
    ("xfs: implement XFS_IOC_DIOINFO in terms of vfs_getattr"), xfstests
    generic/013 by default generates such I/O now that the relaxed alignment
    is advertised by the XFS_IOC_DIOINFO ioctl.
    
    Fix this by increasing the required alignment when using PI, although
    handling arbitrary alignment in the long run would be even nicer.
    
    Fixes: bf8d08532bc1 ("iomap: add support for dma aligned direct-io")
    Fixes: b1a000d3b8ec ("block: relax direct io memory alignment")
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Martin K. Petersen <[email protected]>
    Reviewed-by: Keith Busch <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: directly free partially initialized fs_info in btrfs_check_leaked_roots() [+ + +]
Author: Dewei Meng <[email protected]>
Date:   Thu Oct 16 14:10:11 2025 +0800

    btrfs: directly free partially initialized fs_info in btrfs_check_leaked_roots()
    
    commit 17679ac6df6c4830ba711835aa8cf961be36cfa1 upstream.
    
    If fs_info->super_copy or fs_info->super_for_commit allocated failed in
    btrfs_get_tree_subvol(), then no need to call btrfs_free_fs_info().
    Otherwise btrfs_check_leaked_roots() would access NULL pointer because
    fs_info->allocated_roots had not been initialised.
    
    syzkaller reported the following information:
      ------------[ cut here ]------------
      BUG: unable to handle page fault for address: fffffffffffffbb0
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 64c9067 P4D 64c9067 PUD 64cb067 PMD 0
      Oops: Oops: 0000 [#1] SMP KASAN PTI
      CPU: 0 UID: 0 PID: 1402 Comm: syz.1.35 Not tainted 6.15.8 #4 PREEMPT(lazy)
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), (...)
      RIP: 0010:arch_atomic_read arch/x86/include/asm/atomic.h:23 [inline]
      RIP: 0010:raw_atomic_read include/linux/atomic/atomic-arch-fallback.h:457 [inline]
      RIP: 0010:atomic_read include/linux/atomic/atomic-instrumented.h:33 [inline]
      RIP: 0010:refcount_read include/linux/refcount.h:170 [inline]
      RIP: 0010:btrfs_check_leaked_roots+0x18f/0x2c0 fs/btrfs/disk-io.c:1230
      [...]
      Call Trace:
       <TASK>
       btrfs_free_fs_info+0x310/0x410 fs/btrfs/disk-io.c:1280
       btrfs_get_tree_subvol+0x592/0x6b0 fs/btrfs/super.c:2029
       btrfs_get_tree+0x63/0x80 fs/btrfs/super.c:2097
       vfs_get_tree+0x98/0x320 fs/super.c:1759
       do_new_mount+0x357/0x660 fs/namespace.c:3899
       path_mount+0x716/0x19c0 fs/namespace.c:4226
       do_mount fs/namespace.c:4239 [inline]
       __do_sys_mount fs/namespace.c:4450 [inline]
       __se_sys_mount fs/namespace.c:4427 [inline]
       __x64_sys_mount+0x28c/0x310 fs/namespace.c:4427
       do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
       do_syscall_64+0x92/0x180 arch/x86/entry/syscall_64.c:94
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
      RIP: 0033:0x7f032eaffa8d
      [...]
    
    Fixes: 3bb17a25bcb0 ("btrfs: add get_tree callback for new mount API")
    CC: [email protected] # 6.12+
    Reviewed-by: Daniel Vacek <[email protected]>
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Dewei Meng <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: ref-verify: fix IS_ERR() vs NULL check in btrfs_build_ref_tree() [+ + +]
Author: Amit Dhingra <[email protected]>
Date:   Tue Oct 21 07:07:20 2025 -0500

    btrfs: ref-verify: fix IS_ERR() vs NULL check in btrfs_build_ref_tree()
    
    commit ada7d45b568abe4f1fd9c53d66e05fbea300674b upstream.
    
    btrfs_extent_root()/btrfs_global_root() does not return error pointers,
    it returns NULL on error.
    
    Reported-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]/
    Fixes : ed4e6b5d644c ("btrfs: ref-verify: handle damaged extent root tree")
    CC: [email protected] # 6.17+
    Signed-off-by: Amit Dhingra <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: send: fix duplicated rmdir operations when using extrefs [+ + +]
Author: Ting-Chang Hou <[email protected]>
Date:   Thu Oct 16 15:53:51 2025 +0800

    btrfs: send: fix duplicated rmdir operations when using extrefs
    
    commit 1fabe43b4e1a97597ec5d5ffcd2b7cf96e654b8f upstream.
    
    Commit 29d6d30f5c8a ("Btrfs: send, don't send rmdir for same target
    multiple times") has fixed an issue that a send stream contained a rmdir
    operation for the same directory multiple times. After that fix we keep
    track of the last directory for which we sent a rmdir operation and
    compare with it before sending a rmdir for the parent inode of a deleted
    hardlink we are processing. But there is still a corner case that in
    between rmdir dir operations for the same inode we find deleted hardlinks
    for other parent inodes, so tracking just the last inode for which we sent
    a rmdir operation is not enough.
    
    Hardlinks of a file in the same directory are stored in the same INODE_REF
    item, but if the number of hardlinks is too large and can not fit in a
    leaf, we use INODE_EXTREF items to store them. The key of an INODE_EXTREF
    item is (inode_id, INODE_EXTREF, hash[name, parent ino]), so between two
    hardlinks for the same parent directory, we can find others for other
    parent directories. For example for the reproducer below we get the
    following (from a btrfs inspect-internal dump-tree output):
    
        item 0 key (259 INODE_EXTREF 2309449) itemoff 16257 itemsize 26
                index 6925 parent 257 namelen 8 name: foo.6923
        item 1 key (259 INODE_EXTREF 2311350) itemoff 16231 itemsize 26
                index 6588 parent 258 namelen 8 name: foo.6587
        item 2 key (259 INODE_EXTREF 2457395) itemoff 16205 itemsize 26
                index 6611 parent 257 namelen 8 name: foo.6609
        (...)
    
    So tracking the last directory's inode number does not work in this case
    since we process a link for parent inode 257, then for 258 and then back
    again for 257, and that second time we process a deleted link for 257 we
    think we have not yet sent a rmdir operation.
    
    Fix this by using a rbtree to keep track of all the directories for which
    we have already sent rmdir operations, and add those directories to the
    'check_dirs' ref list in process_recorded_refs() only if the directory is
    not yet in the rbtree, otherwise skip it since it means we have already
    sent a rmdir operation for that directory.
    
    The following test script reproduces the problem:
    
      $ cat test.sh
      #!/bin/bash
    
      DEV=/dev/sdi
      MNT=/mnt/sdi
    
      mkfs.btrfs -f $DEV
      mount $DEV $MNT
    
      mkdir $MNT/a $MNT/b
    
      echo 123 > $MNT/a/foo
      for ((i = 1; i <= 1000; i++)); do
         ln $MNT/a/foo $MNT/a/foo.$i
         ln $MNT/a/foo $MNT/b/foo.$i
      done
    
      btrfs subvolume snapshot -r $MNT $MNT/snap1
      btrfs send $MNT/snap1 -f /tmp/base.send
    
      rm -r $MNT/a $MNT/b
    
      btrfs subvolume snapshot -r $MNT $MNT/snap2
      btrfs send -p $MNT/snap1 $MNT/snap2 -f /tmp/incremental.send
    
      umount $MNT
      mkfs.btrfs -f $DEV
      mount $DEV $MNT
    
      btrfs receive $MNT -f /tmp/base.send
      btrfs receive $MNT -f /tmp/incremental.send
    
      rm -f /tmp/base.send /tmp/incremental.send
    
      umount $MNT
    
    When running it, it fails like this:
    
      $ ./test.sh
      (...)
      At subvol snap1
      At snapshot snap2
      ERROR: rmdir o257-9-0 failed: No such file or directory
    
    CC: <[email protected]>
    Reviewed-by: Filipe Manana <[email protected]>
    Signed-off-by: Ting-Chang Hou <[email protected]>
    [ Updated changelog ]
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

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

    can: esd: acc_start_xmit(): use can_dev_dropped_skb() instead of can_dropped_invalid_skb()
    
    [ Upstream commit 0bee15a5caf36fe513fdeee07fd4f0331e61c064 ]
    
    In addition to can_dropped_invalid_skb(), the helper function
    can_dev_dropped_skb() checks whether the device is in listen-only mode and
    discards the skb accordingly.
    
    Replace can_dropped_invalid_skb() by can_dev_dropped_skb() to also drop
    skbs in for listen-only mode.
    
    Reported-by: Marc Kleine-Budde <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Fixes: 9721866f07e1 ("can: esd: add support for esd GmbH PCIe/402 CAN interface family")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

 
cgroup/misc: fix misc_res_type kernel-doc warning [+ + +]
Author: Randy Dunlap <[email protected]>
Date:   Fri Oct 17 00:07:42 2025 -0700

    cgroup/misc: fix misc_res_type kernel-doc warning
    
    [ Upstream commit 0fbbcab7f9082cdc233da5e5e353f69830f11956 ]
    
    Format the kernel-doc for SCALE_HW_CALIB_INVALID correctly to
    avoid a kernel-doc warning:
    
    Warning: include/linux/misc_cgroup.h:26 Enum value
     'MISC_CG_RES_TDX' not described in enum 'misc_res_type'
    
    Fixes: 7c035bea9407 ("KVM: TDX: Register TDX host key IDs to cgroup misc controller")
    Signed-off-by: Randy Dunlap <[email protected]>
    Signed-off-by: Tejun Heo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

 
cpufreq/amd-pstate: Fix a regression leading to EPP 0 after hibernate [+ + +]
Author: Mario Limonciello (AMD) <[email protected]>
Date:   Tue Sep 23 10:29:29 2025 -0500

    cpufreq/amd-pstate: Fix a regression leading to EPP 0 after hibernate
    
    [ Upstream commit 85d7dda5a9f665ea579741ec873a8841f37e8943 ]
    
    After resuming from S4, all CPUs except the boot CPU have the wrong EPP
    hint programmed.  This is because when the CPUs were offlined the EPP value
    was reset to 0.
    
    This is a similar problem as fixed by
    commit ba3319e590571 ("cpufreq/amd-pstate: Fix a regression leading to EPP
    0 after resume") and the solution is also similar.  When offlining rather
    than reset the values to zero, reset them to match those chosen by the
    policy. When the CPUs are onlined again these values will be restored.
    
    Closes: https://community.frame.work/t/increased-power-usage-after-resuming-from-suspend-on-ryzen-7040-kernel-6-15-regression/74531/20?u=mario_limonciello
    Fixes: 608a76b65288 ("cpufreq/amd-pstate: Add support for the "Requested CPU Min frequency" BIOS option")
    Reviewed-by: Gautham R. Shenoy <[email protected]>
    Signed-off-by: Mario Limonciello (AMD) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
devcoredump: Fix circular locking dependency with devcd->mutex. [+ + +]
Author: Maarten Lankhorst <[email protected]>
Date:   Wed Jul 23 16:24:16 2025 +0200

    devcoredump: Fix circular locking dependency with devcd->mutex.
    
    commit a91c8096590bd7801a26454789f2992094fe36da upstream.
    
    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]>
    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]>

dlm: move to rinfo for all middle conversion cases [+ + +]
Author: Alexander Aring <[email protected]>
Date:   Thu Aug 14 11:22:12 2025 -0400

    dlm: move to rinfo for all middle conversion cases
    
    [ Upstream commit a8abcff174f7f9ce4587c6451b1a2450d01f52c9 ]
    
    Since commit f74dacb4c8116 ("dlm: fix recovery of middle conversions")
    we introduced additional debugging information if we hit the middle
    conversion by using log_limit(). The DLM log_limit() functionality
    requires a DLM debug option being enabled. As this case is so rarely and
    excempt any potential introduced new issue with recovery we switching it
    to log_rinfo() ad this is ratelimited under normal DLM loglevel.
    
    Signed-off-by: Alexander Aring <[email protected]>
    Signed-off-by: David Teigland <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

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

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

 
drm/amd/display: increase max link count and fix link->enc NULL pointer access [+ + +]
Author: Charlene Liu <[email protected]>
Date:   Mon Sep 29 20:29:30 2025 -0400

    drm/amd/display: increase max link count and fix link->enc NULL pointer access
    
    commit bec947cbe9a65783adb475a5fb47980d7b4f4796 upstream.
    
    [why]
    1.) dc->links[MAX_LINKS] array size smaller than actual requested.
    max_connector + max_dpia + 4 virtual = 14.
    increase from 12 to 14.
    
    2.) hw_init() access null LINK_ENC for dpia non display_endpoint.
    
    Cc: Mario Limonciello <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Reviewed-by: Meenakshikumar Somasundaram <[email protected]>
    Reviewed-by: Chris Park <[email protected]>
    Signed-off-by: Charlene Liu <[email protected]>
    Signed-off-by: Aurabindo Pillai <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit d7f5a61e1b04ed87b008c8d327649d184dc5bb45)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/panic: Fix 24bit pixel crossing page boundaries [+ + +]
Author: Jocelyn Falempe <[email protected]>
Date:   Thu Oct 9 14:24:53 2025 +0200

    drm/panic: Fix 24bit pixel crossing page boundaries
    
    [ Upstream commit 23437509a69476d4f896891032d62ac868731668 ]
    
    When using page list framebuffer, and using RGB888 format, some
    pixels can cross the page boundaries, and this case was not handled,
    leading to writing 1 or 2 bytes on the next virtual address.
    
    Add a check and a specific function to handle this case.
    
    Fixes: c9ff2808790f0 ("drm/panic: Add support to scanout buffer as array of pages")
    Reviewed-by: Javier Martinez Canillas <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jocelyn Falempe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/panic: Fix drawing the logo on a small narrow screen [+ + +]
Author: Jocelyn Falempe <[email protected]>
Date:   Thu Oct 9 14:24:48 2025 +0200

    drm/panic: Fix drawing the logo on a small narrow screen
    
    [ Upstream commit 179753aa5b7890b311968c033d08f558f0a7be21 ]
    
    If the logo width is bigger than the framebuffer width, and the
    height is big enough to hold the logo and the message, it will draw
    at x coordinate that are higher than the width, and ends up in a
    corrupted image.
    
    Fixes: 4b570ac2eb54 ("drm/rect: Add drm_rect_overlap()")
    Reviewed-by: Javier Martinez Canillas <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jocelyn Falempe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/panic: Fix qr_code, ensure vmargin is positive [+ + +]
Author: Jocelyn Falempe <[email protected]>
Date:   Thu Oct 9 14:24:50 2025 +0200

    drm/panic: Fix qr_code, ensure vmargin is positive
    
    [ Upstream commit 4fcffb5e5c8c0c8e2ad9c99a22305a0afbecc294 ]
    
    Depending on qr_code size and screen size, the vertical margin can
    be negative, that means there is not enough room to draw the qr_code.
    
    So abort early, to avoid a segfault by trying to draw at negative
    coordinates.
    
    Fixes: cb5164ac43d0f ("drm/panic: Add a QR code panic screen")
    Reviewed-by: Javier Martinez Canillas <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jocelyn Falempe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/panthor: Fix kernel panic on partial unmap of a GPU VA region [+ + +]
Author: Akash Goel <[email protected]>
Date:   Fri Oct 17 11:29:22 2025 +0100

    drm/panthor: Fix kernel panic on partial unmap of a GPU VA region
    
    [ Upstream commit 4eabd0d8791eaf9a7b114ccbf56eb488aefe7b1f ]
    
    This commit address a kernel panic issue that can happen if Userspace
    tries to partially unmap a GPU virtual region (aka drm_gpuva).
    The VM_BIND interface allows partial unmapping of a BO.
    
    Panthor driver pre-allocates memory for the new drm_gpuva structures
    that would be needed for the map/unmap operation, done using drm_gpuvm
    layer. It expected that only one new drm_gpuva would be needed on umap
    but a partial unmap can require 2 new drm_gpuva and that's why it
    ended up doing a NULL pointer dereference causing a kernel panic.
    
    Following dump was seen when partial unmap was exercised.
     Unable to handle kernel NULL pointer dereference at virtual address 0000000000000078
     Mem abort info:
       ESR = 0x0000000096000046
       EC = 0x25: DABT (current EL), IL = 32 bits
       SET = 0, FnV = 0
       EA = 0, S1PTW = 0
       FSC = 0x06: level 2 translation fault
     Data abort info:
       ISV = 0, ISS = 0x00000046, ISS2 = 0x00000000
       CM = 0, WnR = 1, TnD = 0, TagAccess = 0
       GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
     user pgtable: 4k pages, 48-bit VAs, pgdp=000000088a863000
     [000000000000078] pgd=080000088a842003, p4d=080000088a842003, pud=0800000884bf5003, pmd=0000000000000000
     Internal error: Oops: 0000000096000046 [#1] PREEMPT SMP
     <snip>
     pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
     pc : panthor_gpuva_sm_step_remap+0xe4/0x330 [panthor]
     lr : panthor_gpuva_sm_step_remap+0x6c/0x330 [panthor]
     sp : ffff800085d43970
     x29: ffff800085d43970 x28: ffff00080363e440 x27: ffff0008090c6000
     x26: 0000000000000030 x25: ffff800085d439f8 x24: ffff00080d402000
     x23: ffff800085d43b60 x22: ffff800085d439e0 x21: ffff00080abdb180
     x20: 0000000000000000 x19: 0000000000000000 x18: 0000000000000010
     x17: 6e656c202c303030 x16: 3666666666646466 x15: 393d61766f69202c
     x14: 312d3d7361203a70 x13: 303030323d6e656c x12: ffff80008324bf58
     x11: 0000000000000003 x10: 0000000000000002 x9 : ffff8000801a6a9c
     x8 : ffff00080360b300 x7 : 0000000000000000 x6 : 000000088aa35fc7
     x5 : fff1000080000000 x4 : ffff8000842ddd30 x3 : 0000000000000001
     x2 : 0000000100000000 x1 : 0000000000000001 x0 : 0000000000000078
     Call trace:
      panthor_gpuva_sm_step_remap+0xe4/0x330 [panthor]
      op_remap_cb.isra.22+0x50/0x80
      __drm_gpuvm_sm_unmap+0x10c/0x1c8
      drm_gpuvm_sm_unmap+0x40/0x60
      panthor_vm_exec_op+0xb4/0x3d0 [panthor]
      panthor_vm_bind_exec_sync_op+0x154/0x278 [panthor]
      panthor_ioctl_vm_bind+0x160/0x4a0 [panthor]
      drm_ioctl_kernel+0xbc/0x138
      drm_ioctl+0x240/0x500
      __arm64_sys_ioctl+0xb0/0xf8
      invoke_syscall+0x4c/0x110
      el0_svc_common.constprop.1+0x98/0xf8
      do_el0_svc+0x24/0x38
      el0_svc+0x40/0xf8
      el0t_64_sync_handler+0xa0/0xc8
      el0t_64_sync+0x174/0x178
    
    Signed-off-by: Akash Goel <[email protected]>
    Reviewed-by: Boris Brezillon <[email protected]>
    Reviewed-by: Liviu Dudau <[email protected]>
    Fixes: 647810ec2476 ("drm/panthor: Add the MMU/VM logical block")
    Reviewed-by: Steven Price <[email protected]>
    Signed-off-by: Steven Price <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe: Check return value of GGTT workqueue allocation [+ + +]
Author: Matthew Brost <[email protected]>
Date:   Tue Oct 21 17:55:36 2025 -0700

    drm/xe: Check return value of GGTT workqueue allocation
    
    commit ce29214ada6d08dbde1eeb5a69c3b09ddf3da146 upstream.
    
    Workqueue allocation can fail, so check the return value of the GGTT
    workqueue allocation and fail driver initialization if the allocation
    fails.
    
    Fixes: dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
    Cc: [email protected]
    Signed-off-by: Matthew Brost <[email protected]>
    Reviewed-by: Matthew Auld <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    (cherry picked from commit 1f1314e8e71385bae319e43082b798c11f6648bc)
    Signed-off-by: Lucas De Marchi <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dt-bindings: serial: sh-sci: Fix r8a78000 interrupts [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Wed Oct 8 12:50:36 2025 +0200

    dt-bindings: serial: sh-sci: Fix r8a78000 interrupts
    
    commit ea9f6d316782bf36141df764634a53d085061091 upstream.
    
    The SCIF instances on R-Car Gen5 have a single interrupt, just like on
    other R-Car SoCs.
    
    Fixes: 6ac1d60473727931 ("dt-bindings: serial: sh-sci: Document r8a78000 bindings")
    Cc: stable <[email protected]>
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Acked-by: Kuninori Morimoto <[email protected]>
    Acked-by: Conor Dooley <[email protected]>
    Link: https://patch.msgid.link/09bc9881b31bdb948ce8b69a2b5acf633f5505a4.1759920441.git.geert+renesas@glider.be
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

dt-bindings: usb: qcom,snps-dwc3: Fix bindings for X1E80100 [+ + +]
Author: Krishna Kurapati <[email protected]>
Date:   Mon Oct 13 09:29:20 2025 +0530

    dt-bindings: usb: qcom,snps-dwc3: Fix bindings for X1E80100
    
    commit 51cb04abd39097209b871e95ffa7e8584ce7dcba upstream.
    
    Add the missing multiport controller binding to target list.
    
    Fix minItems for interrupt-names to avoid the following error on High
    Speed controller:
    
    usb@a200000: interrupt-names: ['dwc_usb3', 'pwr_event', 'dp_hs_phy_irq', 'dm_hs_phy_irq'] is too short
    
    Fixes: 6e762f7b8edc ("dt-bindings: usb: Introduce qcom,snps-dwc3")
    Cc: [email protected]
    Signed-off-by: Krishna Kurapati <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
erofs: avoid infinite loops due to corrupted subpage compact indexes [+ + +]
Author: Gao Xiang <[email protected]>
Date:   Fri Oct 17 15:05:38 2025 +0800

    erofs: avoid infinite loops due to corrupted subpage compact indexes
    
    [ Upstream commit e13d315ae077bb7c3c6027cc292401bc0f4ec683 ]
    
    Robert reported an infinite loop observed by two crafted images.
    
    The root cause is that `clusterofs` can be larger than `lclustersize`
    for !NONHEAD `lclusters` in corrupted subpage compact indexes, e.g.:
    
      blocksize = lclustersize = 512   lcn = 6   clusterofs = 515
    
    Move the corresponding check for full compress indexes to
    `z_erofs_load_lcluster_from_disk()` to also cover subpage compact
    compress indexes.
    
    It also fixes the position of `m->type >= Z_EROFS_LCLUSTER_TYPE_MAX`
    check, since it should be placed right after
    `z_erofs_load_{compact,full}_lcluster()`.
    
    Fixes: 8d2517aaeea3 ("erofs: fix up compacted indexes for block size < 4096")
    Fixes: 1a5223c182fd ("erofs: do sanity check on m->type in z_erofs_load_compact_lcluster()")
    Reported-by: Robert Morris <[email protected]>
    Closes: https://lore.kernel.org/r/35167.1760645886@localhost
    Reviewed-by: Hongbo Li <[email protected]>
    Signed-off-by: Gao Xiang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

erofs: fix crafted invalid cases for encoded extents [+ + +]
Author: Gao Xiang <[email protected]>
Date:   Sun Oct 12 21:59:25 2025 +0800

    erofs: fix crafted invalid cases for encoded extents
    
    [ Upstream commit a429b76114aaca3ef1aff4cd469dcf025431bd11 ]
    
    Robert recently reported two corrupted images that can cause system
    crashes, which are related to the new encoded extents introduced
    in Linux 6.15:
    
      - The first one [1] has plen != 0 (e.g. plen == 0x2000000) but
        (plen & Z_EROFS_EXTENT_PLEN_MASK) == 0. It is used to represent
        special extents such as sparse extents (!EROFS_MAP_MAPPED), but
        previously only plen == 0 was handled;
    
      - The second one [2] has pa 0xffffffffffdcffed and plen 0xb4000,
        then "cur [0xfffffffffffff000] += bvec.bv_len [0x1000]" in
        "} while ((cur += bvec.bv_len) < end);" wraps around, causing an
        out-of-bound access of pcl->compressed_bvecs[] in
        z_erofs_submit_queue().  EROFS only supports 48-bit physical block
        addresses (up to 1EiB for 4k blocks), so add a sanity check to
        enforce this.
    
    Fixes: 1d191b4ca51d ("erofs: implement encoded extent metadata")
    Reported-by: Robert Morris <[email protected]>
    Closes: https://lore.kernel.org/r/75022.1759355830@localhost  [1]
    Closes: https://lore.kernel.org/r/80524.1760131149@localhost  [2]
    Reviewed-by: Hongbo Li <[email protected]>
    Signed-off-by: Gao Xiang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
espintcp: use datagram_poll_queue for socket readiness [+ + +]
Author: Ralf Lici <[email protected]>
Date:   Tue Oct 21 12:09:41 2025 +0200

    espintcp: use datagram_poll_queue for socket readiness
    
    [ Upstream commit 0fc3e32c2c069f541f2724d91f5e98480b640326 ]
    
    espintcp uses a custom queue (ike_queue) to deliver packets to
    userspace. The polling logic relies on datagram_poll, which checks
    sk_receive_queue, which can lead to false readiness signals when that
    queue contains non-userspace packets.
    
    Switch espintcp_poll to use datagram_poll_queue with ike_queue, ensuring
    poll only signals readiness when userspace data is actually available.
    
    Fixes: e27cca96cd68 ("xfrm: add espintcp (RFC 8229)")
    Signed-off-by: Ralf Lici <[email protected]>
    Reviewed-by: Sabrina Dubroca <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[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]>

 
expfs: Fix exportfs_can_encode_fh() for EXPORT_FH_FID [+ + +]
Author: Jan Kara <[email protected]>
Date:   Wed Oct 1 15:19:07 2025 +0200

    expfs: Fix exportfs_can_encode_fh() for EXPORT_FH_FID
    
    [ Upstream commit 48b77733d0dbaf8cd0a122712072f92b2d95d894 ]
    
    After commit 5402c4d4d200 ("exportfs: require ->fh_to_parent() to encode
    connectable file handles") we will fail to create non-decodable file
    handles for filesystems without export operations. Fix it.
    
    Fixes: 5402c4d4d200 ("exportfs: require ->fh_to_parent() to encode connectable file handles")
    Reviewed-by: Christian Brauner <[email protected]>
    Reviewed-by: Amir Goldstein <[email protected]>
    Signed-off-by: Jan Kara <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
firmware: arm_ffa: Add support for IMPDEF value in the memory access descriptor [+ + +]
Author: Sudeep Holla <[email protected]>
Date:   Tue Sep 23 16:09:27 2025 +0100

    firmware: arm_ffa: Add support for IMPDEF value in the memory access descriptor
    
    [ Upstream commit 11fb1a82aefa6f7fea6ac82334edb5639b9927df ]
    
    FF-A v1.2 introduced 16 byte IMPLEMENTATION DEFINED value in the endpoint
    memory access descriptor to allow any sender could to specify an its any
    custom value for each receiver. Also this value must be specified by the
    receiver when retrieving the memory region. The sender must ensure it
    informs the receiver of this value via an IMPLEMENTATION DEFINED mechanism
    such as a partition message.
    
    So the FF-A driver can use the message interfaces to communicate the value
    and set the same in the ffa_mem_region_attributes structures when using
    the memory interfaces.
    
    The driver ensure that the size of the endpoint memory access descriptors
    is set correctly based on the FF-A version.
    
    Fixes: 9fac08d9d985 ("firmware: arm_ffa: Upgrade FF-A version to v1.2 in the driver")
    Reported-by: Lixiang Mao <[email protected]>
    Tested-by: Lixiang Mao <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

firmware: arm_scmi: Account for failed debug initialization [+ + +]
Author: Cristian Marussi <[email protected]>
Date:   Tue Oct 14 12:53:44 2025 +0100

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

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

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

 
fs/notify: call exportfs_encode_fid with s_umount [+ + +]
Author: Jakub Acs <[email protected]>
Date:   Wed Oct 1 10:09:55 2025 +0000

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

 
gfs2: Fix unlikely race in gdlm_put_lock [+ + +]
Author: Andreas Gruenbacher <[email protected]>
Date:   Wed Aug 6 23:34:03 2025 +0200

    gfs2: Fix unlikely race in gdlm_put_lock
    
    [ Upstream commit 28c4d9bc0708956c1a736a9e49fee71b65deee81 ]
    
    In gdlm_put_lock(), there is a small window of time in which the
    DFL_UNMOUNT flag has been set but the lockspace hasn't been released,
    yet.  In that window, dlm may still call gdlm_ast() and gdlm_bast().
    To prevent it from dereferencing freed glock objects, only free the
    glock if the lockspace has actually been released.
    
    Signed-off-by: Andreas Gruenbacher <[email protected]>
    Reviewed-by: Andrew Price <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

gpio: idio-16: Define fixed direction of the GPIO lines [+ + +]
Author: William Breathitt Gray <[email protected]>
Date:   Sun Oct 26 12:25:28 2025 -0400

    gpio: idio-16: Define fixed direction of the GPIO lines
    
    [ Upstream commit 2ba5772e530f73eb847fb96ce6c4017894869552 ]
    
    The direction of the IDIO-16 GPIO lines is fixed with the first 16 lines
    as output and the remaining 16 lines as input. Set the gpio_config
    fixed_direction_output member to represent the fixed direction of the
    GPIO lines.
    
    Fixes: db02247827ef ("gpio: idio-16: Migrate to the regmap API")
    Reported-by: Mark Cave-Ayland <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]
    Suggested-by: Michael Walle <[email protected]>
    Cc: [email protected] # ae495810cffe: gpio: regmap: add the .fixed_direction_output configuration parameter
    Cc: [email protected]
    Reviewed-by: Andy Shevchenko <[email protected]>
    Signed-off-by: William Breathitt Gray <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

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

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

gpio: regmap: add the .fixed_direction_output configuration parameter [+ + +]
Author: Ioana Ciornei <[email protected]>
Date:   Sun Oct 26 12:25:27 2025 -0400

    gpio: regmap: add the .fixed_direction_output configuration parameter
    
    [ Upstream commit 00aaae60faf554c27c95e93d47f200a93ff266ef ]
    
    There are GPIO controllers such as the one present in the LX2160ARDB
    QIXIS FPGA which have fixed-direction input and output GPIO lines mixed
    together in a single register. This cannot be modeled using the
    gpio-regmap as-is since there is no way to present the true direction of
    a GPIO line.
    
    In order to make this use case possible, add a new configuration
    parameter - fixed_direction_output - into the gpio_regmap_config
    structure. This will enable user drivers to provide a bitmap that
    represents the fixed direction of the GPIO lines.
    
    Signed-off-by: Ioana Ciornei <[email protected]>
    Acked-by: Bartosz Golaszewski <[email protected]>
    Reviewed-by: Michael Walle <[email protected]>
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Stable-dep-of: 2ba5772e530f ("gpio: idio-16: Define fixed direction of the GPIO lines")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gpio: regmap: Allow to allocate regmap-irq device [+ + +]
Author: Mathieu Dubois-Briand <[email protected]>
Date:   Sun Oct 26 12:25:26 2025 -0400

    gpio: regmap: Allow to allocate regmap-irq device
    
    [ Upstream commit 553b75d4bfe9264f631d459fe9996744e0672b0e ]
    
    GPIO controller often have support for IRQ: allow to easily allocate
    both gpio-regmap and regmap-irq in one operation.
    
    Reviewed-by: Andy Shevchenko <[email protected]>
    Acked-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Mathieu Dubois-Briand <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Stable-dep-of: 2ba5772e530f ("gpio: idio-16: Define fixed direction of the GPIO lines")
    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: 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]>

 
hung_task: fix warnings caused by unaligned lock pointers [+ + +]
Author: Lance Yang <[email protected]>
Date:   Tue Sep 9 22:52:43 2025 +0800

    hung_task: fix warnings caused by unaligned lock pointers
    
    commit c97513cddcfc235f2522617980838e500af21d01 upstream.
    
    The blocker tracking mechanism assumes that lock pointers are at least
    4-byte aligned to use their lower bits for type encoding.
    
    However, as reported by Eero Tamminen, some architectures like m68k
    only guarantee 2-byte alignment of 32-bit values. This breaks the
    assumption and causes two related WARN_ON_ONCE checks to trigger.
    
    To fix this, the runtime checks are adjusted to silently ignore any lock
    that is not 4-byte aligned, effectively disabling the feature in such
    cases and avoiding the related warnings.
    
    Thanks to Geert Uytterhoeven for bisecting!
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: e711faaafbe5 ("hung_task: replace blocker_mutex with encoded blocker")
    Signed-off-by: Lance Yang <[email protected]>
    Reported-by: Eero Tamminen <[email protected]>
    Closes: https://lore.kernel.org/lkml/CAMuHMdW7Ab13DdGs2acMQcix5ObJK0O2dG_Fxzr8_g58Rc1_0g@mail.gmail.com
    Reviewed-by: Masami Hiramatsu (Google) <[email protected]>
    Cc: John Paul Adrian Glaubitz <[email protected]>
    Cc: Anna Schumaker <[email protected]>
    Cc: Boqun Feng <[email protected]>
    Cc: Finn Thain <[email protected]>
    Cc: Geert Uytterhoeven <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Joel Granados <[email protected]>
    Cc: John Stultz <[email protected]>
    Cc: Kent Overstreet <[email protected]>
    Cc: Lance Yang <[email protected]>
    Cc: Mingzhe Yang <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Sergey Senozhatsky <[email protected]>
    Cc: Steven Rostedt <[email protected]>
    Cc: Tomasz Figa <[email protected]>
    Cc: Waiman Long <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: Yongliang Gao <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
hwmon: (cgbc-hwmon) Add missing NULL check after devm_kzalloc() [+ + +]
Author: Li Qiang <[email protected]>
Date:   Fri Oct 17 14:34:14 2025 +0800

    hwmon: (cgbc-hwmon) Add missing NULL check after devm_kzalloc()
    
    [ Upstream commit a09a5aa8bf258ddc99a22c30f17fe304b96b5350 ]
    
    The driver allocates memory for sensor data using devm_kzalloc(), but
    did not check if the allocation succeeded. In case of memory allocation
    failure, dereferencing the NULL pointer would lead to a kernel crash.
    
    Add a NULL pointer check and return -ENOMEM to handle allocation failure
    properly.
    
    Signed-off-by: Li Qiang <[email protected]>
    Fixes: 08ebc9def79fc ("hwmon: Add Congatec Board Controller monitoring driver")
    Reviewed-by: Thomas Richard <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hwmon: (pmbus/isl68137) Fix child node reference leak on early return [+ + +]
Author: Erick Karanja <[email protected]>
Date:   Sun Oct 12 21:12:49 2025 +0300

    hwmon: (pmbus/isl68137) Fix child node reference leak on early return
    
    [ Upstream commit 57f6f47920ef2f598c46d0a04bd9c8984c98e6df ]
    
    In the case of an early return, the reference to the child node needs
    to be released.
    
    Use for_each_child_of_node_scoped to fix the issue.
    
    Fixes: 3996187f80a0e ("hwmon: (pmbus/isl68137) add support for voltage divider on Vout")
    Signed-off-by: Erick Karanja <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [groeck: Updated subject/description]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hwmon: (pmbus/max34440) Update adpm12160 coeff due to latest FW [+ + +]
Author: Alexis Czezar Torreno <[email protected]>
Date:   Wed Oct 1 08:37:07 2025 +0800

    hwmon: (pmbus/max34440) Update adpm12160 coeff due to latest FW
    
    commit 41de7440e6a00b8e70a068c50e3fba2f56302e8a upstream.
    
    adpm12160 is a dc-dc power module. The firmware was updated and the
    coeeficients in the pmbus_driver_info needs to be updated. Since the
    part has not yet released with older FW, this permanent change to
    reflect the latest should be ok.
    
    Signed-off-by: Alexis Czezar Torreno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: 629cf8f6c23a ("hwmon: (pmbus/max34440) Add support for ADPM12160")
    Cc: [email protected] # v6.16+
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
include: trace: Fix inflight count helper on failed initialization [+ + +]
Author: Cristian Marussi <[email protected]>
Date:   Tue Oct 14 12:53:45 2025 +0100

    include: trace: Fix inflight count helper on failed initialization
    
    [ Upstream commit 289ce7e9a5e1a52ac7e522a3e389dc16be08d7a4 ]
    
    Add a check to the scmi_inflight_count() helper to handle the case
    when the SCMI debug subsystem fails to initialize.
    
    Fixes: f8e656382b4a ("include: trace:  Add tracepoint support for inflight xfer count")
    Signed-off-by: Cristian Marussi <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Sudeep Holla <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring/sqpoll: be smarter on when to update the stime usage [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Tue Oct 21 11:44:39 2025 -0600

    io_uring/sqpoll: be smarter on when to update the stime usage
    
    commit a94e0657269c5b8e1a90b17aa2c048b3d276e16d upstream.
    
    The current approach is a bit naive, and hence calls the time querying
    way too often. Only start the "doing work" timer when there's actual
    work to do, and then use that information to terminate (and account) the
    work time once done. This greatly reduces the frequency of these calls,
    when they cannot have changed anyway.
    
    Running a basic random reader that is setup to use SQPOLL, a profile
    before this change shows these as the top cycle consumers:
    
    +   32.60%  iou-sqp-1074  [kernel.kallsyms]  [k] thread_group_cputime_adjusted
    +   19.97%  iou-sqp-1074  [kernel.kallsyms]  [k] thread_group_cputime
    +   12.20%  io_uring      io_uring           [.] submitter_uring_fn
    +    4.13%  iou-sqp-1074  [kernel.kallsyms]  [k] getrusage
    +    2.45%  iou-sqp-1074  [kernel.kallsyms]  [k] io_submit_sqes
    +    2.18%  iou-sqp-1074  [kernel.kallsyms]  [k] __pi_memset_generic
    +    2.09%  iou-sqp-1074  [kernel.kallsyms]  [k] cputime_adjust
    
    and after this change, top of profile looks as follows:
    
    +   36.23%  io_uring     io_uring           [.] submitter_uring_fn
    +   23.26%  iou-sqp-819  [kernel.kallsyms]  [k] io_sq_thread
    +   10.14%  iou-sqp-819  [kernel.kallsyms]  [k] io_sq_tw
    +    6.52%  iou-sqp-819  [kernel.kallsyms]  [k] tctx_task_work_run
    +    4.82%  iou-sqp-819  [kernel.kallsyms]  [k] nvme_submit_cmds.part.0
    +    2.91%  iou-sqp-819  [kernel.kallsyms]  [k] io_submit_sqes
    [...]
         0.02%  iou-sqp-819  [kernel.kallsyms]  [k] cputime_adjust
    
    where it's spending the cycles on things that actually matter.
    
    Reported-by: Fengnan Chang <[email protected]>
    Cc: [email protected]
    Fixes: 3fcb9d17206e ("io_uring/sqpoll: statistics of the true utilization of sq threads")
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

io_uring/sqpoll: switch away from getrusage() for CPU accounting [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Tue Oct 21 07:16:08 2025 -0600

    io_uring/sqpoll: switch away from getrusage() for CPU accounting
    
    commit 8ac9b0d33e5c0a995338ee5f25fe1b6ff7d97f65 upstream.
    
    getrusage() does a lot more than what the SQPOLL accounting needs, the
    latter only cares about (and uses) the stime. Rather than do a full
    RUSAGE_SELF summation, just query the used stime instead.
    
    Cc: [email protected]
    Fixes: 3fcb9d17206e ("io_uring/sqpoll: statistics of the true utilization of sq threads")
    Reviewed-by: Gabriel Krisman Bertazi <[email protected]>
    Signed-off-by: Jens Axboe <[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]>

io_uring: fix incorrect unlikely() usage in io_waitid_prep() [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Sat Oct 18 12:32:54 2025 -0700

    io_uring: fix incorrect unlikely() usage in io_waitid_prep()
    
    [ Upstream commit 4ec703ec0c384a2199808c4eb2e9037236285a8d ]
    
    The negation operator is incorrectly placed outside the unlikely()
    macro:
    
        if (!unlikely(iwa))
    
    This inverts the compiler branch prediction hint, marking the NULL case
    as likely instead of unlikely. The intent is to indicate that allocation
    failures are rare, consistent with common kernel patterns.
    
     Moving the negation inside unlikely():
    
        if (unlikely(!iwa))
    
    Fixes: 2b4fc4cd43f2 ("io_uring/waitid: setup async data in the prep handler")
    Signed-off-by: Alok Tiwari <[email protected]>
    Reviewed-by: Gabriel Krisman Bertazi <[email protected]>
    Reviewed-by: Caleb Sander Mateos <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
Linux: Linux 6.17.6 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Oct 29 14:10:32 2025 +0100

    Linux 6.17.6
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Salvatore Bonaccorso <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Ronald Warsow <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Takeshi Ogasawara <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Brett A C Sheffield <[email protected]>
    Tested-by: Dileep Malepu <[email protected]>
    Tested-by: Justin M. Forbes <[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/damon/core: fix list_add_tail() call on damon_call() [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Tue Oct 14 13:59:36 2025 -0700

    mm/damon/core: fix list_add_tail() call on damon_call()
    
    commit c3fa5b1bfd8380d935fa961f2ac166bdf000f418 upstream.
    
    Each damon_ctx maintains callback requests using a linked list
    (damon_ctx->call_controls).  When a new callback request is received via
    damon_call(), the new request should be added to the list.  However, the
    function is making a mistake at list_add_tail() invocation: putting the
    new item to add and the list head to add it before, in the opposite order.
    Because of the linked list manipulation implementation, the new request
    can still be reached from the context's list head.  But the list items
    that were added before the new request are dropped from the list.
    
    As a result, the callbacks are unexpectedly not invocated.  Worse yet, if
    the dropped callback requests were dynamically allocated, the memory is
    leaked.  Actually DAMON sysfs interface is using a dynamically allocated
    repeat-mode callback request for automatic essential stats update.  And
    because the online DAMON parameters commit is using a non-repeat-mode
    callback request, the issue can easily be reproduced, like below.
    
        # damo start --damos_action stat --refresh_stat 1s
        # damo tune --damos_action stat --refresh_stat 1s
    
    The first command dynamically allocates the repeat-mode callback request
    for automatic essential stat update.  Users can see the essential stats
    are automatically updated for every second, using the sysfs interface.
    
    The second command calls damon_commit() with a new callback request that
    was made for the commit.  As a result, the previously added repeat-mode
    callback request is dropped from the list.  The automatic stats refresh
    stops working, and the memory for the repeat-mode callback request is
    leaked.  It can be confirmed using kmemleak.
    
    Fix the mistake on the list_add_tail() call.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 004ded6bee11 ("mm/damon: accept parallel damon_call() requests")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>    [6.17+]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm/damon/core: fix potential memory leak by cleaning ops_filter in damon_destroy_scheme [+ + +]
Author: Enze Li <[email protected]>
Date:   Tue Oct 14 16:42:25 2025 +0800

    mm/damon/core: fix potential memory leak by cleaning ops_filter in damon_destroy_scheme
    
    commit 7071537159be845a5c4ed5fb7d3db25aa4bd04a3 upstream.
    
    Currently, damon_destroy_scheme() only cleans up the filter list but
    leaves ops_filter untouched, which could lead to memory leaks when a
    scheme is destroyed.
    
    This patch ensures both filter and ops_filter are properly freed in
    damon_destroy_scheme(), preventing potential memory leaks.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: ab82e57981d0 ("mm/damon/core: introduce damos->ops_filters")
    Signed-off-by: Enze Li <[email protected]>
    Reviewed-by: SeongJae Park <[email protected]>
    Tested-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm/damon/core: use damos_commit_quota_goal() for new goal commit [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Mon Oct 13 17:18:44 2025 -0700

    mm/damon/core: use damos_commit_quota_goal() for new goal commit
    
    commit 7eca961dd7188f20fdf8ce9ed5018280f79b2438 upstream.
    
    When damos_commit_quota_goals() is called for adding new DAMOS quota goals
    of DAMOS_QUOTA_USER_INPUT metric, current_value fields of the new goals
    should be also set as requested.
    
    However, damos_commit_quota_goals() is not updating the field for the
    case, since it is setting only metrics and target values using
    damos_new_quota_goal(), and metric-optional union fields using
    damos_commit_quota_goal_union().  As a result, users could see the first
    current_value parameter that committed online with a new quota goal is
    ignored.  Users are assumed to commit the current_value for
    DAMOS_QUOTA_USER_INPUT quota goals, since it is being used as a feedback.
    Hence the real impact would be subtle.  That said, this is obviously not
    intended behavior.
    
    Fix the issue by using damos_commit_quota_goal() which sets all quota goal
    parameters, instead of damos_commit_quota_goal_union(), which sets only
    the union fields.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 1aef9df0ee90 ("mm/damon/core: commit damos_quota_goal->nid")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>    [6.16+]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/damon/sysfs: catch commit test ctx alloc failure [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Fri Oct 3 13:14:54 2025 -0700

    mm/damon/sysfs: catch commit test ctx alloc failure
    
    commit f0c5118ebb0eb7e4fd6f0d2ace3315ca141b317f upstream.
    
    Patch series "mm/damon/sysfs: fix commit test damon_ctx [de]allocation".
    
    DAMON sysfs interface dynamically allocates and uses a damon_ctx object
    for testing if given inputs for online DAMON parameters update is valid.
    The object is being used without an allocation failure check, and leaked
    when the test succeeds.  Fix the two bugs.
    
    
    This patch (of 2):
    
    The damon_ctx for testing online DAMON parameters commit inputs is used
    without its allocation failure check.  This could result in an invalid
    memory access.  Fix it by directly returning an error when the allocation
    failed.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 4c9ea539ad59 ("mm/damon/sysfs: validate user inputs from damon_sysfs_commit_input()")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>    [6.15+]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm/damon/sysfs: dealloc commit test ctx always [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Fri Oct 3 13:14:55 2025 -0700

    mm/damon/sysfs: dealloc commit test ctx always
    
    commit 139e7a572af0b45f558b5e502121a768dc328ba8 upstream.
    
    The damon_ctx for testing online DAMON parameters commit inputs is
    deallocated only when the test fails.  This means memory is leaked for
    every successful online DAMON parameters commit.  Fix the leak by always
    deallocating it.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 4c9ea539ad59 ("mm/damon/sysfs: validate user inputs from damon_sysfs_commit_input()")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: <[email protected]>    [6.15+]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/migrate: remove MIGRATEPAGE_UNMAP [+ + +]
Author: David Hildenbrand <[email protected]>
Date:   Sun Oct 26 19:50:26 2025 -0400

    mm/migrate: remove MIGRATEPAGE_UNMAP
    
    [ Upstream commit 95c2908f1a4fd608b1cdbb5acef3572e5d769e1c ]
    
    migrate_folio_unmap() is the only user of MIGRATEPAGE_UNMAP.  We want to
    remove MIGRATEPAGE_* completely.
    
    It's rather weird to have a generic MIGRATEPAGE_UNMAP, documented to be
    returned from address-space callbacks, when it's only used for an internal
    helper.
    
    Let's start by having only a single "success" return value for
    migrate_folio_unmap() -- 0 -- by moving the "folio was already freed"
    check into the single caller.
    
    There is a remaining comment for PG_isolated, which we renamed to
    PG_movable_ops_isolated recently and forgot to update.
    
    While we might still run into that case with zsmalloc, it's something we
    want to get rid of soon.  So let's just focus that optimization on real
    folios only for now by excluding movable_ops pages.  Note that concurrent
    freeing can happen at any time and this "already freed" check is not
    relevant for correctness.
    
    [[email protected]: no need to pass "reason" to migrate_folio_unmap(), per Lance]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Hildenbrand <[email protected]>
    Reviewed-by: Zi Yan <[email protected]>
    Reviewed-by: Lance Yang <[email protected]>
    Cc: Alistair Popple <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Benjamin LaHaise <[email protected]>
    Cc: Byungchul Park <[email protected]>
    Cc: Chris Mason <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Christophe Leroy <[email protected]>
    Cc: Dave Kleikamp <[email protected]>
    Cc: David Sterba <[email protected]>
    Cc: Eugenio Pé rez <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Gregory Price <[email protected]>
    Cc: "Huang, Ying" <[email protected]>
    Cc: Jan Kara <[email protected]>
    Cc: Jason Wang <[email protected]>
    Cc: Jerrin Shaji George <[email protected]>
    Cc: Josef Bacik <[email protected]>
    Cc: Joshua Hahn <[email protected]>
    Cc: Madhavan Srinivasan <[email protected]>
    Cc: Mathew Brost <[email protected]>
    Cc: Michael Ellerman <[email protected]>
    Cc: "Michael S. Tsirkin" <[email protected]>
    Cc: Minchan Kim <[email protected]>
    Cc: Muchun Song <[email protected]>
    Cc: Nicholas Piggin <[email protected]>
    Cc: Oscar Salvador <[email protected]>
    Cc: Rakie Kim <[email protected]>
    Cc: Sergey Senozhatsky <[email protected]>
    Cc: Xuan Zhuo <[email protected]>
    Cc: Dave Kleikamp <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 4ba5a8a7faa6 ("vmw_balloon: indicate success when effectively deflating during migration")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/mremap: correctly account old mapping after MREMAP_DONTUNMAP remap [+ + +]
Author: Lorenzo Stoakes <[email protected]>
Date:   Mon Oct 13 17:58:36 2025 +0100

    mm/mremap: correctly account old mapping after MREMAP_DONTUNMAP remap
    
    commit 0e59f47c15cec4cd88c51c5cda749607b719c82b upstream.
    
    Commit b714ccb02a76 ("mm/mremap: complete refactor of move_vma()")
    mistakenly introduced a new behaviour - clearing the VM_ACCOUNT flag of
    the old mapping when a mapping is mremap()'d with the MREMAP_DONTUNMAP
    flag set.
    
    While we always clear the VM_LOCKED and VM_LOCKONFAULT flags for the old
    mapping (the page tables have been moved, so there is no data that could
    possibly be locked in memory), there is no reason to touch any other VMA
    flags.
    
    This is because after the move the old mapping is in a state as if it were
    freshly mapped.  This implies that the attributes of the mapping ought to
    remain the same, including whether or not the mapping is accounted.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Lorenzo Stoakes <[email protected]>
    Fixes: b714ccb02a76 ("mm/mremap: complete refactor of move_vma()")
    Reviewed-by: Pedro Falcato <[email protected]>
    Cc: Jann Horn <[email protected]>
    Cc: Liam Howlett <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm: don't spin in add_stack_record when gfp flags don't allow [+ + +]
Author: Alexei Starovoitov <[email protected]>
Date:   Thu Oct 9 17:15:13 2025 -0700

    mm: don't spin in add_stack_record when gfp flags don't allow
    
    commit c83aab85e18103a6dc066b4939e2c92a02bb1b05 upstream.
    
    syzbot was able to find the following path:
      add_stack_record_to_list mm/page_owner.c:182 [inline]
      inc_stack_record_count mm/page_owner.c:214 [inline]
      __set_page_owner+0x2c3/0x4a0 mm/page_owner.c:333
      set_page_owner include/linux/page_owner.h:32 [inline]
      post_alloc_hook+0x240/0x2a0 mm/page_alloc.c:1851
      prep_new_page mm/page_alloc.c:1859 [inline]
      get_page_from_freelist+0x21e4/0x22c0 mm/page_alloc.c:3858
      alloc_pages_nolock_noprof+0x94/0x120 mm/page_alloc.c:7554
    
    Don't spin in add_stack_record_to_list() when it is called
    from *_nolock() context.
    
    Link: https://lkml.kernel.org/r/CAADnVQK_8bNYEA7TJYgwTYR57=TTFagsvRxp62pFzS_z129eTg@mail.gmail.com
    Fixes: 97769a53f117 ("mm, bpf: Introduce try_alloc_pages() for opportunistic page allocation")
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Reported-by: [email protected]
    Reported-by: [email protected]
    Acked-by: Vlastimil Babka <[email protected]>
    Reviewed-by: Oscar Salvador <[email protected]>
    Cc: Brendan Jackman <[email protected]>
    Cc: Johannes Weiner <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Cc: Suren Baghdasaryan <[email protected]>
    Cc: Zi Yan <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm: prevent poison consumption when splitting THP [+ + +]
Author: Qiuxu Zhuo <[email protected]>
Date:   Sat Oct 11 15:55:19 2025 +0800

    mm: prevent poison consumption when splitting THP
    
    commit 841a8bfcbad94bb1ba60f59ce34f75259074ae0d upstream.
    
    When performing memory error injection on a THP (Transparent Huge Page)
    mapped to userspace on an x86 server, the kernel panics with the following
    trace.  The expected behavior is to terminate the affected process instead
    of panicking the kernel, as the x86 Machine Check code can recover from an
    in-userspace #MC.
    
      mce: [Hardware Error]: CPU 0: Machine Check Exception: f Bank 3: bd80000000070134
      mce: [Hardware Error]: RIP 10:<ffffffff8372f8bc> {memchr_inv+0x4c/0xf0}
      mce: [Hardware Error]: TSC afff7bbff88a ADDR 1d301b000 MISC 80 PPIN 1e741e77539027db
      mce: [Hardware Error]: PROCESSOR 0:d06d0 TIME 1758093249 SOCKET 0 APIC 0 microcode 80000320
      mce: [Hardware Error]: Run the above through 'mcelog --ascii'
      mce: [Hardware Error]: Machine check: Data load in unrecoverable area of kernel
      Kernel panic - not syncing: Fatal local machine check
    
    The root cause of this panic is that handling a memory failure triggered
    by an in-userspace #MC necessitates splitting the THP.  The splitting
    process employs a mechanism, implemented in
    try_to_map_unused_to_zeropage(), which reads the pages in the THP to
    identify zero-filled pages.  However, reading the pages in the THP results
    in a second in-kernel #MC, occurring before the initial memory_failure()
    completes, ultimately leading to a kernel panic.  See the kernel panic
    call trace on the two #MCs.
    
      First Machine Check occurs // [1]
        memory_failure()         // [2]
          try_to_split_thp_page()
            split_huge_page()
              split_huge_page_to_list_to_order()
                __folio_split()  // [3]
                  remap_page()
                    remove_migration_ptes()
                      remove_migration_pte()
                        try_to_map_unused_to_zeropage()  // [4]
                          memchr_inv()                   // [5]
                            Second Machine Check occurs  // [6]
                              Kernel panic
    
    [1] Triggered by accessing a hardware-poisoned THP in userspace, which is
        typically recoverable by terminating the affected process.
    
    [2] Call folio_set_has_hwpoisoned() before try_to_split_thp_page().
    
    [3] Pass the RMP_USE_SHARED_ZEROPAGE remap flag to remap_page().
    
    [4] Try to map the unused THP to zeropage.
    
    [5] Re-access pages in the hw-poisoned THP in the kernel.
    
    [6] Triggered in-kernel, leading to a panic kernel.
    
    In Step[2], memory_failure() sets the poisoned flag on the page in the THP
    by TestSetPageHWPoison() before calling try_to_split_thp_page().
    
    As suggested by David Hildenbrand, fix this panic by not accessing to the
    poisoned page in the THP during zeropage identification, while continuing
    to scan unaffected pages in the THP for possible zeropage mapping.  This
    prevents a second in-kernel #MC that would cause kernel panic in Step[4].
    
    Thanks to Andrew Zaborowski for his initial work on fixing this issue.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: b1f202060afe ("mm: remap unused subpages to shared zeropage when splitting isolated thp")
    Signed-off-by: Qiuxu Zhuo <[email protected]>
    Reported-by: Farrah Chen <[email protected]>
    Suggested-by: David Hildenbrand <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Tested-by: Farrah Chen <[email protected]>
    Tested-by: Qiuxu Zhuo <[email protected]>
    Acked-by: Lance Yang <[email protected]>
    Reviewed-by: Wei Yang <[email protected]>
    Acked-by: Zi Yan <[email protected]>
    Reviewed-by: Miaohe Lin <[email protected]>
    Cc: Barry Song <[email protected]>
    Cc: Dev Jain <[email protected]>
    Cc: Jiaqi Yan <[email protected]>
    Cc: Liam Howlett <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: "Luck, Tony" <[email protected]>
    Cc: Mariano Pache <[email protected]>
    Cc: Miaohe Lin <[email protected]>
    Cc: Naoya Horiguchi <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[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]>

 
mptcp: pm: in-kernel: C-flag: handle late ADD_ADDR [+ + +]
Author: Matthieu Baerts (NGI0) <[email protected]>
Date:   Mon Oct 20 22:53:26 2025 +0200

    mptcp: pm: in-kernel: C-flag: handle late ADD_ADDR
    
    commit e84cb860ac3ce67ec6ecc364433fd5b412c448bc upstream.
    
    The special C-flag case expects the ADD_ADDR to be received when
    switching to 'fully-established'. But for various reasons, the ADD_ADDR
    could be sent after the "4th ACK", and the special case doesn't work.
    
    On NIPA, the new test validating this special case for the C-flag failed
    a few times, e.g.
    
      102 default limits, server deny join id 0
            syn rx                 [FAIL] got 0 JOIN[s] syn rx expected 2
    
      Server ns stats
      (...)
      MPTcpExtAddAddrTx  1
      MPTcpExtEchoAdd    1
    
      Client ns stats
      (...)
      MPTcpExtAddAddr    1
      MPTcpExtEchoAddTx  1
    
            synack rx              [FAIL] got 0 JOIN[s] synack rx expected 2
            ack rx                 [FAIL] got 0 JOIN[s] ack rx expected 2
            join Rx                [FAIL] see above
            syn tx                 [FAIL] got 0 JOIN[s] syn tx expected 2
            join Tx                [FAIL] see above
    
    I had a suspicion about what the issue could be: the ADD_ADDR might have
    been received after the switch to the 'fully-established' state. The
    issue was not easy to reproduce. The packet capture shown that the
    ADD_ADDR can indeed be sent with a delay, and the client would not try
    to establish subflows to it as expected.
    
    A simple fix is not to mark the endpoints as 'used' in the C-flag case,
    when looking at creating subflows to the remote initial IP address and
    port. In this case, there is no need to try.
    
    Note: newly added fullmesh endpoints will still continue to be used as
    expected, thanks to the conditions behind mptcp_pm_add_addr_c_flag_case.
    
    Fixes: 4b1ff850e0c1 ("mptcp: pm: in-kernel: usable client side with C-flag")
    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-1-8207030cb0e8@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nbd: override creds to kernel when calling sock_{send,recv}msg() [+ + +]
Author: Ondrej Mosnacek <[email protected]>
Date:   Fri Oct 10 10:09:00 2025 +0200

    nbd: override creds to kernel when calling sock_{send,recv}msg()
    
    [ Upstream commit 81ccca31214e11ea2b537fd35d4f66d7cf46268e ]
    
    sock_{send,recv}msg() internally calls security_socket_{send,recv}msg(),
    which does security checks (e.g. SELinux) for socket access against the
    current task. However, _sock_xmit() in drivers/block/nbd.c may be called
    indirectly from a userspace syscall, where the NBD socket access would
    be incorrectly checked against the calling userspace task (which simply
    tries to read/write a file that happens to reside on an NBD device).
    
    To fix this, temporarily override creds to kernel ones before calling
    the sock_*() functions. This allows the security modules to recognize
    this as internal access by the kernel, which will normally be allowed.
    
    A way to trigger the issue is to do the following (on a system with
    SELinux set to enforcing):
    
        ### Create nbd device:
        truncate -s 256M /tmp/testfile
        nbd-server localhost:10809 /tmp/testfile
    
        ### Connect to the nbd server:
        nbd-client localhost
    
        ### Create mdraid array
        mdadm --create -l 1 -n 2 /dev/md/testarray /dev/nbd0 missing
    
    After these steps, assuming the SELinux policy doesn't allow the
    unexpected access pattern, errors will be visible on the kernel console:
    
    [  142.204243] nbd0: detected capacity change from 0 to 524288
    [  165.189967] md: async del_gendisk mode will be removed in future, please upgrade to mdadm-4.5+
    [  165.252299] md/raid1:md127: active with 1 out of 2 mirrors
    [  165.252725] md127: detected capacity change from 0 to 522240
    [  165.255434] block nbd0: Send control failed (result -13)
    [  165.255718] block nbd0: Request send failed, requeueing
    [  165.256006] block nbd0: Dead connection, failed to find a fallback
    [  165.256041] block nbd0: Receive control failed (result -32)
    [  165.256423] block nbd0: shutting down sockets
    [  165.257196] I/O error, dev nbd0, sector 2048 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
    [  165.257736] Buffer I/O error on dev md127, logical block 0, async page read
    [  165.258263] I/O error, dev nbd0, sector 2048 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
    [  165.259376] Buffer I/O error on dev md127, logical block 0, async page read
    [  165.259920] I/O error, dev nbd0, sector 2048 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
    [  165.260628] Buffer I/O error on dev md127, logical block 0, async page read
    [  165.261661] ldm_validate_partition_table(): Disk read failed.
    [  165.262108] I/O error, dev nbd0, sector 2048 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
    [  165.262769] Buffer I/O error on dev md127, logical block 0, async page read
    [  165.263697] I/O error, dev nbd0, sector 2048 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
    [  165.264412] Buffer I/O error on dev md127, logical block 0, async page read
    [  165.265412] I/O error, dev nbd0, sector 2048 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
    [  165.265872] Buffer I/O error on dev md127, logical block 0, async page read
    [  165.266378] I/O error, dev nbd0, sector 2048 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
    [  165.267168] Buffer I/O error on dev md127, logical block 0, async page read
    [  165.267564]  md127: unable to read partition table
    [  165.269581] I/O error, dev nbd0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
    [  165.269960] Buffer I/O error on dev nbd0, logical block 0, async page read
    [  165.270316] I/O error, dev nbd0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
    [  165.270913] Buffer I/O error on dev nbd0, logical block 0, async page read
    [  165.271253] I/O error, dev nbd0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 2
    [  165.271809] Buffer I/O error on dev nbd0, logical block 0, async page read
    [  165.272074] ldm_validate_partition_table(): Disk read failed.
    [  165.272360]  nbd0: unable to read partition table
    [  165.289004] ldm_validate_partition_table(): Disk read failed.
    [  165.289614]  nbd0: unable to read partition table
    
    The corresponding SELinux denial on Fedora/RHEL will look like this
    (assuming it's not silenced):
    type=AVC msg=audit(1758104872.510:116): avc:  denied  { write } for  pid=1908 comm="mdadm" laddr=::1 lport=32772 faddr=::1 fport=10809 scontext=system_u:system_r:mdadm_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=tcp_socket permissive=0
    
    The respective backtrace looks like this:
    @security[mdadm, -13,
            handshake_exit+221615650
            handshake_exit+221615650
            handshake_exit+221616465
            security_socket_sendmsg+5
            sock_sendmsg+106
            handshake_exit+221616150
            sock_sendmsg+5
            __sock_xmit+162
            nbd_send_cmd+597
            nbd_handle_cmd+377
            nbd_queue_rq+63
            blk_mq_dispatch_rq_list+653
            __blk_mq_do_dispatch_sched+184
            __blk_mq_sched_dispatch_requests+333
            blk_mq_sched_dispatch_requests+38
            blk_mq_run_hw_queue+239
            blk_mq_dispatch_plug_list+382
            blk_mq_flush_plug_list.part.0+55
            __blk_flush_plug+241
            __submit_bio+353
            submit_bio_noacct_nocheck+364
            submit_bio_wait+84
            __blkdev_direct_IO_simple+232
            blkdev_read_iter+162
            vfs_read+591
            ksys_read+95
            do_syscall_64+92
            entry_SYSCALL_64_after_hwframe+120
    ]: 1
    
    The issue has started to appear since commit 060406c61c7c ("block: add
    plug while submitting IO").
    
    Cc: Ming Lei <[email protected]>
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=2348878
    Fixes: 060406c61c7c ("block: add plug while submitting IO")
    Signed-off-by: Ondrej Mosnacek <[email protected]>
    Acked-by: Paul Moore <[email protected]>
    Acked-by: Stephen Smalley <[email protected]>
    Reviewed-by: Ming Lei <[email protected]>
    Tested-by: Ming Lei <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5: Fix IPsec cleanup over MPV device [+ + +]
Author: Patrisious Haddad <[email protected]>
Date:   Wed Oct 22 15:29:42 2025 +0300

    net/mlx5: Fix IPsec cleanup over MPV device
    
    [ Upstream commit 664f76be38a18c61151d0ef248c7e2f3afb4f3c7 ]
    
    When we do mlx5e_detach_netdev() we eventually disable blocking events
    notifier, among those events are IPsec MPV events from IB to core.
    
    So before disabling those blocking events, make sure to also unregister
    the devcom device and mark all this device operations as complete,
    in order to prevent the other device from using invalid netdev
    during future devcom events which could cause the trace below.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000010
    PGD 146427067 P4D 146427067 PUD 146488067 PMD 0
    Oops: Oops: 0000 [#1] SMP
    CPU: 1 UID: 0 PID: 7735 Comm: devlink Tainted: GW 6.12.0-rc6_for_upstream_min_debug_2024_11_08_00_46 #1
    Tainted: [W]=WARN
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
    RIP: 0010:mlx5_devcom_comp_set_ready+0x5/0x40 [mlx5_core]
    Code: 00 01 48 83 05 23 32 1e 00 01 41 b8 ed ff ff ff e9 60 ff ff ff 48 83 05 00 32 1e 00 01 eb e3 66 0f 1f 44 00 00 0f 1f 44 00 00 <48> 8b 47 10 48 83 05 5f 32 1e 00 01 48 8b 50 40 48 85 d2 74 05 40
    RSP: 0018:ffff88811a5c35f8 EFLAGS: 00010206
    RAX: ffff888106e8ab80 RBX: ffff888107d7e200 RCX: ffff88810d6f0a00
    RDX: ffff88810d6f0a00 RSI: 0000000000000001 RDI: 0000000000000000
    RBP: ffff88811a17e620 R08: 0000000000000040 R09: 0000000000000000
    R10: ffff88811a5c3618 R11: 0000000de85d51bd R12: ffff88811a17e600
    R13: ffff88810d6f0a00 R14: 0000000000000000 R15: ffff8881034bda80
    FS:  00007f27bdf89180(0000) GS:ffff88852c880000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000010 CR3: 000000010f159005 CR4: 0000000000372eb0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ? __die+0x20/0x60
     ? page_fault_oops+0x150/0x3e0
     ? exc_page_fault+0x74/0x130
     ? asm_exc_page_fault+0x22/0x30
     ? mlx5_devcom_comp_set_ready+0x5/0x40 [mlx5_core]
     mlx5e_devcom_event_mpv+0x42/0x60 [mlx5_core]
     mlx5_devcom_send_event+0x8c/0x170 [mlx5_core]
     blocking_event+0x17b/0x230 [mlx5_core]
     notifier_call_chain+0x35/0xa0
     blocking_notifier_call_chain+0x3d/0x60
     mlx5_blocking_notifier_call_chain+0x22/0x30 [mlx5_core]
     mlx5_core_mp_event_replay+0x12/0x20 [mlx5_core]
     mlx5_ib_bind_slave_port+0x228/0x2c0 [mlx5_ib]
     mlx5_ib_stage_init_init+0x664/0x9d0 [mlx5_ib]
     ? idr_alloc_cyclic+0x50/0xb0
     ? __kmalloc_cache_noprof+0x167/0x340
     ? __kmalloc_noprof+0x1a7/0x430
     __mlx5_ib_add+0x34/0xd0 [mlx5_ib]
     mlx5r_probe+0xe9/0x310 [mlx5_ib]
     ? kernfs_add_one+0x107/0x150
     ? __mlx5_ib_add+0xd0/0xd0 [mlx5_ib]
     auxiliary_bus_probe+0x3e/0x90
     really_probe+0xc5/0x3a0
     ? driver_probe_device+0x90/0x90
     __driver_probe_device+0x80/0x160
     driver_probe_device+0x1e/0x90
     __device_attach_driver+0x7d/0x100
     bus_for_each_drv+0x80/0xd0
     __device_attach+0xbc/0x1f0
     bus_probe_device+0x86/0xa0
     device_add+0x62d/0x830
     __auxiliary_device_add+0x3b/0xa0
     ? auxiliary_device_init+0x41/0x90
     add_adev+0xd1/0x150 [mlx5_core]
     mlx5_rescan_drivers_locked+0x21c/0x300 [mlx5_core]
     esw_mode_change+0x6c/0xc0 [mlx5_core]
     mlx5_devlink_eswitch_mode_set+0x21e/0x640 [mlx5_core]
     devlink_nl_eswitch_set_doit+0x60/0xe0
     genl_family_rcv_msg_doit+0xd0/0x120
     genl_rcv_msg+0x180/0x2b0
     ? devlink_get_from_attrs_lock+0x170/0x170
     ? devlink_nl_eswitch_get_doit+0x290/0x290
     ? devlink_nl_pre_doit_port_optional+0x50/0x50
     ? genl_family_rcv_msg_dumpit+0xf0/0xf0
     netlink_rcv_skb+0x54/0x100
     genl_rcv+0x24/0x40
     netlink_unicast+0x1fc/0x2d0
     netlink_sendmsg+0x1e4/0x410
     __sock_sendmsg+0x38/0x60
     ? sockfd_lookup_light+0x12/0x60
     __sys_sendto+0x105/0x160
     ? __sys_recvmsg+0x4e/0x90
     __x64_sys_sendto+0x20/0x30
     do_syscall_64+0x4c/0x100
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    RIP: 0033:0x7f27bc91b13a
    Code: bb 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 8b 05 fa 96 2c 00 45 89 c9 4c 63 d1 48 63 ff 85 c0 75 15 b8 2c 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 76 f3 c3 0f 1f 40 00 41 55 41 54 4d 89 c5 55
    RSP: 002b:00007fff369557e8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 0000000009c54b10 RCX: 00007f27bc91b13a
    RDX: 0000000000000038 RSI: 0000000009c54b10 RDI: 0000000000000006
    RBP: 0000000009c54920 R08: 00007f27bd0030e0 R09: 000000000000000c
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000001
     </TASK>
    Modules linked in: mlx5_vdpa vringh vhost_iotlb vdpa xt_MASQUERADE nf_conntrack_netlink nfnetlink iptable_nat xt_addrtype xt_conntrack nf_nat br_netfilter rpcsec_gss_krb5 auth_rpcgss oid_registry overlay rpcrdma rdma_ucm ib_iser libiscsi ib_umad scsi_transport_iscsi ib_ipoib rdma_cm iw_cm ib_cm mlx5_fwctl mlx5_ib ib_uverbs ib_core mlx5_core
    CR2: 0000000000000010
    
    Fixes: 82f9378c443c ("net/mlx5: Handle IPsec steering upon master unbind/bind")
    Signed-off-by: Patrisious Haddad <[email protected]>
    Reviewed-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

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

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

 
net/smc: fix general protection fault in __smc_diag_dump [+ + +]
Author: Wang Liang <[email protected]>
Date:   Fri Oct 17 10:48:27 2025 +0800

    net/smc: fix general protection fault in __smc_diag_dump
    
    [ Upstream commit f584239a9ed25057496bf397c370cc5163dde419 ]
    
    The syzbot report a crash:
    
      Oops: general protection fault, probably for non-canonical address 0xfbd5a5d5a0000003: 0000 [#1] SMP KASAN NOPTI
      KASAN: maybe wild-memory-access in range [0xdead4ead00000018-0xdead4ead0000001f]
      CPU: 1 UID: 0 PID: 6949 Comm: syz.0.335 Not tainted syzkaller #0 PREEMPT(full)
      Hardware name: Google Compute Engine/Google Compute Engine, BIOS Google 08/18/2025
      RIP: 0010:smc_diag_msg_common_fill net/smc/smc_diag.c:44 [inline]
      RIP: 0010:__smc_diag_dump.constprop.0+0x3ca/0x2550 net/smc/smc_diag.c:89
      Call Trace:
       <TASK>
       smc_diag_dump_proto+0x26d/0x420 net/smc/smc_diag.c:217
       smc_diag_dump+0x27/0x90 net/smc/smc_diag.c:234
       netlink_dump+0x539/0xd30 net/netlink/af_netlink.c:2327
       __netlink_dump_start+0x6d6/0x990 net/netlink/af_netlink.c:2442
       netlink_dump_start include/linux/netlink.h:341 [inline]
       smc_diag_handler_dump+0x1f9/0x240 net/smc/smc_diag.c:251
       __sock_diag_cmd net/core/sock_diag.c:249 [inline]
       sock_diag_rcv_msg+0x438/0x790 net/core/sock_diag.c:285
       netlink_rcv_skb+0x158/0x420 net/netlink/af_netlink.c:2552
       netlink_unicast_kernel net/netlink/af_netlink.c:1320 [inline]
       netlink_unicast+0x5a7/0x870 net/netlink/af_netlink.c:1346
       netlink_sendmsg+0x8d1/0xdd0 net/netlink/af_netlink.c:1896
       sock_sendmsg_nosec net/socket.c:714 [inline]
       __sock_sendmsg net/socket.c:729 [inline]
       ____sys_sendmsg+0xa95/0xc70 net/socket.c:2614
       ___sys_sendmsg+0x134/0x1d0 net/socket.c:2668
       __sys_sendmsg+0x16d/0x220 net/socket.c:2700
       do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
       do_syscall_64+0xcd/0x4e0 arch/x86/entry/syscall_64.c:94
       entry_SYSCALL_64_after_hwframe+0x77/0x7f
       </TASK>
    
    The process like this:
    
                   (CPU1)              |             (CPU2)
      ---------------------------------|-------------------------------
      inet_create()                    |
        // init clcsock to NULL        |
        sk = sk_alloc()                |
                                       |
        // unexpectedly change clcsock |
        inet_init_csk_locks()          |
                                       |
        // add sk to hash table        |
        smc_inet_init_sock()           |
          smc_sk_init()                |
            smc_hash_sk()              |
                                       | // traverse the hash table
                                       | smc_diag_dump_proto
                                       |   __smc_diag_dump()
                                       |     // visit wrong clcsock
                                       |     smc_diag_msg_common_fill()
        // alloc clcsock               |
        smc_create_clcsk               |
          sock_create_kern             |
    
    With CONFIG_DEBUG_LOCK_ALLOC=y, the smc->clcsock is unexpectedly changed
    in inet_init_csk_locks(). The INET_PROTOSW_ICSK flag is no need by smc,
    just remove it.
    
    After removing the INET_PROTOSW_ICSK flag, this patch alse revert
    commit 6fd27ea183c2 ("net/smc: fix lacks of icsk_syn_mss with IPPROTO_SMC")
    to avoid casting smc_sock to inet_connection_sock.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=f775be4458668f7d220e
    Tested-by: [email protected]
    Fixes: d25a92ccae6b ("net/smc: Introduce IPPROTO_SMC")
    Signed-off-by: Wang Liang <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Eric Dumazet <[email protected]>
    Reviewed-by: D. Wythe <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

net: bonding: update the slave array for broadcast mode [+ + +]
Author: Tonghao Zhang <[email protected]>
Date:   Thu Oct 16 20:51:36 2025 +0800

    net: bonding: update the slave array for broadcast mode
    
    commit e0caeb24f538c3c9c94f471882ceeb43d9dc2739 upstream.
    
    This patch fixes ce7a381697cb ("net: bonding: add broadcast_neighbor option for 802.3ad").
    Before this commit, on the broadcast mode, all devices were traversed using the
    bond_for_each_slave_rcu. This patch supports traversing devices by using all_slaves.
    Therefore, we need to update the slave array when enslave or release slave.
    
    Fixes: ce7a381697cb ("net: bonding: add broadcast_neighbor option for 802.3ad")
    Cc: Simon Horman <[email protected]>
    Cc: Jonathan Corbet <[email protected]>
    Cc: Andrew Lunn <[email protected]>
    Cc: <[email protected]>
    Reported-by: Jiri Slaby <[email protected]>
    Tested-by: Jiri Slaby <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Tonghao Zhang <[email protected]>
    Reviewed-by: Hangbin Liu <[email protected]>
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Acked-by: Jay Vosburgh <[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: datagram: introduce datagram_poll_queue for custom receive queues [+ + +]
Author: Ralf Lici <[email protected]>
Date:   Tue Oct 21 12:09:40 2025 +0200

    net: datagram: introduce datagram_poll_queue for custom receive queues
    
    [ Upstream commit f6ceec6434b5efff62cecbaa2ff74fc29b96c0c6 ]
    
    Some protocols using TCP encapsulation (e.g., espintcp, openvpn) deliver
    userspace-bound packets through a custom skb queue rather than the
    standard sk_receive_queue.
    
    Introduce datagram_poll_queue that accepts an explicit receive queue,
    and convert datagram_poll into a wrapper around datagram_poll_queue.
    This allows protocols with custom skb queues to reuse the core polling
    logic without relying on sk_receive_queue.
    
    Cc: Sabrina Dubroca <[email protected]>
    Cc: Antonio Quartulli <[email protected]>
    Signed-off-by: Ralf Lici <[email protected]>
    Reviewed-by: Sabrina Dubroca <[email protected]>
    Reviewed-by: Antonio Quartulli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Stable-dep-of: efd729408bc7 ("ovpn: use datagram_poll_queue for socket readiness in TCP")
    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: enetc: fix the deadlock of enetc_mdio_lock [+ + +]
Author: Jianpeng Chang <[email protected]>
Date:   Wed Oct 15 10:14:27 2025 +0800

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

net: ethernet: ti: am65-cpts: fix timestamp loss due to race conditions [+ + +]
Author: Aksh Garg <[email protected]>
Date:   Thu Oct 16 17:27:55 2025 +0530

    net: ethernet: ti: am65-cpts: fix timestamp loss due to race conditions
    
    [ Upstream commit 49d34f3dd8519581030547eb7543a62f9ab5fa08 ]
    
    Resolve race conditions in timestamp events list handling between TX
    and RX paths causing missed timestamps.
    
    The current implementation uses a single events list for both TX and RX
    timestamps. The am65_cpts_find_ts() function acquires the lock,
    splices all events (TX as well as RX events) to a temporary list,
    and releases the lock. This function performs matching of timestamps
    for TX packets only. Before it acquires the lock again to put the
    non-TX events back to the main events list, a concurrent RX
    processing thread could acquire the lock (as observed in practice),
    find an empty events list, and fail to attach timestamp to it,
    even though a relevant event exists in the spliced list which is yet to
    be restored to the main list.
    
    Fix this by creating separate events lists to handle TX and RX
    timestamps independently.
    
    Fixes: c459f606f66df ("net: ethernet: ti: am65-cpts: Enable RX HW timestamp for PTP packets using CPTS FIFO")
    Signed-off-by: Aksh Garg <[email protected]>
    Reviewed-by: Siddharth Vadapalli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hibmcge: select FIXED_PHY [+ + +]
Author: Heiner Kallweit <[email protected]>
Date:   Mon Oct 20 08:54:54 2025 +0200

    net: hibmcge: select FIXED_PHY
    
    [ Upstream commit d63f0391d6c7b75e1a847e1a26349fa8cad0004d ]
    
    hibmcge uses fixed_phy_register() et al, but doesn't cater for the case
    that hibmcge is built-in and fixed_phy is a module. To solve this
    select FIXED_PHY.
    
    Fixes: 1d7cd7a9c69c ("net: hibmcge: support scenario without PHY")
    Signed-off-by: Heiner Kallweit <[email protected]>
    Reviewed-by: Jijie Shao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hsr: prevent creation of HSR device with slaves from another netns [+ + +]
Author: Fernando Fernandez Mancera <[email protected]>
Date:   Mon Oct 20 15:55:33 2025 +0200

    net: hsr: prevent creation of HSR device with slaves from another netns
    
    [ Upstream commit c0178eec8884231a5ae0592b9fce827bccb77e86 ]
    
    HSR/PRP driver does not handle correctly having slaves/interlink devices
    in a different net namespace. Currently, it is possible to create a HSR
    link in a different net namespace than the slaves/interlink with the
    following command:
    
     ip link add hsr0 netns hsr-ns type hsr slave1 eth1 slave2 eth2
    
    As there is no use-case on supporting this scenario, enforce that HSR
    device link matches netns defined by IFLA_LINK_NETNSID.
    
    The iproute2 command mentioned above will throw the following error:
    
     Error: hsr: HSR slaves/interlink must be on the same net namespace than HSR link.
    
    Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)")
    Signed-off-by: Fernando Fernandez Mancera <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: micrel: always set shared->phydev for LAN8814 [+ + +]
Author: Robert Marko <[email protected]>
Date:   Tue Oct 21 15:20:26 2025 +0200

    net: phy: micrel: always set shared->phydev for LAN8814
    
    [ Upstream commit 399d10934740ae8cdaa4e3245f7c5f6c332da844 ]
    
    Currently, during the LAN8814 PTP probe shared->phydev is only set if PTP
    clock gets actually set, otherwise the function will return before setting
    it.
    
    This is an issue as shared->phydev is unconditionally being used when IRQ
    is being handled, especially in lan8814_gpio_process_cap and since it was
    not set it will cause a NULL pointer exception and crash the kernel.
    
    So, simply always set shared->phydev to avoid the NULL pointer exception.
    
    Fixes: b3f1a08fcf0d ("net: phy: micrel: Add support for PTP_PF_EXTTS for lan8814")
    Signed-off-by: Robert Marko <[email protected]>
    Tested-by: Horatiu Vultur <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: realtek: fix rtl8221b-vm-cg name [+ + +]
Author: Aleksander Jan Bajkowski <[email protected]>
Date:   Thu Oct 16 21:22:52 2025 +0200

    net: phy: realtek: fix rtl8221b-vm-cg name
    
    [ Upstream commit ffff5c8fc2af2218a3332b3d5b97654599d50cde ]
    
    When splitting the RTL8221B-VM-CG into C22 and C45 variants, the name was
    accidentally changed to RTL8221B-VN-CG. This patch brings back the previous
    part number.
    
    Fixes: ad5ce743a6b0 ("net: phy: realtek: Add driver instances for rtl8221b via Clause 45")
    Signed-off-by: Aleksander Jan Bajkowski <[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]>

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: usb: rtl8150: Fix frame padding [+ + +]
Author: Michal Pecio <[email protected]>
Date:   Tue Oct 14 20:35:28 2025 +0200

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

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

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

 
nvmem: rcar-efuse: add missing MODULE_DEVICE_TABLE [+ + +]
Author: Cosmin Tanislav <[email protected]>
Date:   Fri Sep 19 17:28:53 2025 +0300

    nvmem: rcar-efuse: add missing MODULE_DEVICE_TABLE
    
    commit 7959ffbec062c35bda02aa635d21ac45dbfacd80 upstream.
    
    The nvmem-rcar-efuse driver can be compiled as a module. Add missing
    MODULE_DEVICE_TABLE so it can be matched by modalias and automatically
    loaded by udev.
    
    Cc: [email protected]
    Fixes: 1530b923a514 ("nvmem: Add R-Car E-FUSE driver")
    Signed-off-by: Cosmin Tanislav <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
objtool/rust: add one more `noreturn` Rust function [+ + +]
Author: Miguel Ojeda <[email protected]>
Date:   Mon Oct 20 04:07:14 2025 +0200

    objtool/rust: add one more `noreturn` Rust function
    
    commit dbdf2a7feb422f9bacfd12774e624cf26f503eb0 upstream.
    
    Between Rust 1.79 and 1.86, under `CONFIG_RUST_KERNEL_DOCTESTS=y`,
    `objtool` may report:
    
        rust/doctests_kernel_generated.o: warning: objtool:
        rust_doctest_kernel_alloc_kbox_rs_13() falls through to next
        function rust_doctest_kernel_alloc_kvec_rs_0()
    
    (as well as in rust_doctest_kernel_alloc_kvec_rs_0) due to calls to the
    `noreturn` symbol:
    
        core::option::expect_failed
    
    from code added in commits 779db37373a3 ("rust: alloc: kvec: implement
    AsPageIter for VVec") and 671618432f46 ("rust: alloc: kbox: implement
    AsPageIter for VBox").
    
    Thus add the mangled one to the list so that `objtool` knows it is
    actually `noreturn`.
    
    This can be reproduced as well in other versions by tweaking the code,
    such as the latest stable Rust (1.90.0).
    
    Stable does not have code that triggers this, but it could have it in
    the future. Downstream forks could too. Thus tag it for backport.
    
    See commit 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
    for more details.
    
    Signed-off-by: Miguel Ojeda <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reviewed-by: Alice Ryhl <[email protected]>
    Cc: [email protected] # Needed in 6.12.y and later.
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[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]>

 
of/irq: Add msi-parent check to of_msi_xlate() [+ + +]
Author: Lorenzo Pieralisi <[email protected]>
Date:   Tue Oct 21 14:40:59 2025 +0200

    of/irq: Add msi-parent check to of_msi_xlate()
    
    [ Upstream commit 119aaeed0b6729293f41ea33be05ecd27a947d48 ]
    
    In some legacy platforms the MSI controller for a PCI host bridge is
    identified by an msi-parent property whose phandle points at an MSI
    controller node with no #msi-cells property, that implicitly
    means #msi-cells == 0.
    
    For such platforms, mapping a device ID and retrieving the MSI controller
    node becomes simply a matter of checking whether in the device hierarchy
    there is an msi-parent property pointing at an MSI controller node with
    such characteristics.
    
    Add a helper function to of_msi_xlate() to check the msi-parent property in
    addition to msi-map and retrieve the MSI controller node (with a 1:1 ID
    deviceID-IN<->deviceID-OUT  mapping) to provide support for deviceID
    mapping and MSI controller node retrieval for such platforms.
    
    Fixes: 57d72196dfc8 ("irqchip/gic-v5: Add GICv5 ITS support")
    Signed-off-by: Lorenzo Pieralisi <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Cc: Sascha Bischoff <[email protected]>
    Cc: Rob Herring <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

of/irq: Convert of_msi_map_id() callers to of_msi_xlate() [+ + +]
Author: Lorenzo Pieralisi <[email protected]>
Date:   Tue Aug 5 15:34:43 2025 +0200

    of/irq: Convert of_msi_map_id() callers to of_msi_xlate()
    
    [ Upstream commit a576a849d5f33356e0d8fd3eae4fbaf8869417e5 ]
    
    With the introduction of the of_msi_xlate() function, the OF layer
    provides an API to map a device ID and retrieve the MSI controller
    node the ID is mapped to with a single call.
    
    of_msi_map_id() is currently used to map a deviceID to a specific
    MSI controller node; of_msi_xlate() can be used for that purpose
    too, there is no need to keep the two functions.
    
    Convert of_msi_map_id() to of_msi_xlate() calls and update the
    of_msi_xlate() documentation to describe how the struct device_node
    pointer passed in should be set-up to either provide the MSI controller
    node target or receive its pointer upon mapping completion.
    
    Signed-off-by: Lorenzo Pieralisi <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: Rob Herring <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Acked-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Stable-dep-of: 119aaeed0b67 ("of/irq: Add msi-parent check to of_msi_xlate()")
    Signed-off-by: Sasha Levin <[email protected]>

 
ovpn: use datagram_poll_queue for socket readiness in TCP [+ + +]
Author: Ralf Lici <[email protected]>
Date:   Tue Oct 21 12:09:42 2025 +0200

    ovpn: use datagram_poll_queue for socket readiness in TCP
    
    [ Upstream commit efd729408bc7d57e0c8d027b9ff514187fc1a05b ]
    
    openvpn TCP encapsulation uses a custom queue to deliver packets to
    userspace. Currently it relies on datagram_poll, which checks
    sk_receive_queue, leading to false readiness signals when that queue
    contains non-userspace packets.
    
    Switch ovpn_tcp_poll to use datagram_poll_queue with the peer's
    user_queue, ensuring poll only signals readiness when userspace data is
    actually available. Also refactor ovpn_tcp_poll in order to enforce the
    assumption we can make on the lifetime of ovpn_sock and peer.
    
    Fixes: 11851cbd60ea ("ovpn: implement TCP transport")
    Signed-off-by: Antonio Quartulli <[email protected]>
    Signed-off-by: Ralf Lici <[email protected]>
    Reviewed-by: Sabrina Dubroca <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI: Test for bit underflow in pcie_set_readrq() [+ + +]
Author: Kees Cook <[email protected]>
Date:   Thu Sep 4 22:28:41 2025 -0700

    PCI: Test for bit underflow in pcie_set_readrq()
    
    [ Upstream commit 00e58ff924b3a684b076f9512fe2753be87b50e1 ]
    
    In preparation for the future commit ("bitops: Add __attribute_const__ to generic
    ffs()-family implementations"), which allows GCC's value range tracker
    to see past ffs(), GCC 8 on ARM thinks that it might be possible that
    "ffs(rq) - 8" used here:
    
            v = FIELD_PREP(PCI_EXP_DEVCTL_READRQ, ffs(rq) - 8);
    
    could wrap below 0, leading to a very large value, which would be out of
    range for the FIELD_PREP() usage:
    
    drivers/pci/pci.c: In function 'pcie_set_readrq':
    include/linux/compiler_types.h:572:38: error: call to '__compiletime_assert_471' declared with attribute error: FIELD_PREP: value too large for the field
    ...
    drivers/pci/pci.c:5896:6: note: in expansion of macro 'FIELD_PREP'
      v = FIELD_PREP(PCI_EXP_DEVCTL_READRQ, ffs(rq) - 8);
          ^~~~~~~~~~
    
    If the result of the ffs() is bounds checked before being used in
    FIELD_PREP(), the value tracker seems happy again. :)
    
    Reported-by: Linux Kernel Functional Testing <[email protected]>
    Closes: https://lore.kernel.org/linux-pci/CA+G9fYuysVr6qT8bjF6f08WLyCJRG7aXAeSd2F7=zTaHHd7L+Q@mail.gmail.com/
    Acked-by: Bjorn Helgaas <[email protected]>
    Acked-by: Arnd Bergmann <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/mellanox: mlxbf-pmc: add sysfs_attr_init() to count_clock init [+ + +]
Author: David Thompson <[email protected]>
Date:   Mon Oct 13 15:56:05 2025 +0000

    platform/mellanox: mlxbf-pmc: add sysfs_attr_init() to count_clock init
    
    [ Upstream commit a7b4747d8e0e7871c3d4971cded1dcc9af6af9e9 ]
    
    The lock-related debug logic (CONFIG_LOCK_STAT) in the kernel is noting
    the following warning when the BlueField-3 SOC is booted:
    
      BUG: key ffff00008a3402a8 has not been registered!
      ------------[ cut here ]------------
      DEBUG_LOCKS_WARN_ON(1)
      WARNING: CPU: 4 PID: 592 at kernel/locking/lockdep.c:4801 lockdep_init_map_type+0x1d4/0x2a0
    <snip>
      Call trace:
       lockdep_init_map_type+0x1d4/0x2a0
       __kernfs_create_file+0x84/0x140
       sysfs_add_file_mode_ns+0xcc/0x1cc
       internal_create_group+0x110/0x3d4
       internal_create_groups.part.0+0x54/0xcc
       sysfs_create_groups+0x24/0x40
       device_add+0x6e8/0x93c
       device_register+0x28/0x40
       __hwmon_device_register+0x4b0/0x8a0
       devm_hwmon_device_register_with_groups+0x7c/0xe0
       mlxbf_pmc_probe+0x1e8/0x3e0 [mlxbf_pmc]
       platform_probe+0x70/0x110
    
    The mlxbf_pmc driver must call sysfs_attr_init() during the
    initialization of the "count_clock" data structure to avoid
    this warning.
    
    Fixes: 5efc800975d9 ("platform/mellanox: mlxbf-pmc: Add support for monitoring cycle count")
    Reviewed-by: Shravan Kumar Ramani <[email protected]>
    Signed-off-by: David Thompson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/x86: alienware-wmi-wmax: Add AWCC support to Dell G15 5530 [+ + +]
Author: tr1x_em <[email protected]>
Date:   Thu Sep 25 09:10:03 2025 +0530

    platform/x86: alienware-wmi-wmax: Add AWCC support to Dell G15 5530
    
    commit 34cbd6e07fddf36e186c8bf26a456fb7f50af44e upstream.
    
    Makes alienware-wmi load on G15 5530 by default
    
    Cc: [email protected]
    Signed-off-by: Saumya <[email protected]>
    Reviewed-by: Kurt Borja <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

platform/x86: alienware-wmi-wmax: Fix NULL pointer dereference in sleep handlers [+ + +]
Author: Kurt Borja <[email protected]>
Date:   Tue Oct 14 05:07:27 2025 -0500

    platform/x86: alienware-wmi-wmax: Fix NULL pointer dereference in sleep handlers
    
    commit a49c4d48c3b60926e6a8cec217bf95aa65388ecc upstream.
    
    Devices without the AWCC interface don't initialize `awcc`. Add a check
    before dereferencing it in sleep handlers.
    
    Cc: [email protected]
    Reported-by: Gal Hammer <[email protected]>
    Tested-by: Gal Hammer <[email protected]>
    Fixes: 07ac275981b1 ("platform/x86: alienware-wmi-wmax: Add support for manual fan control")
    Signed-off-by: Kurt Borja <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[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]>

 
ptp: ocp: Fix typo using index 1 instead of i in SMA initialization loop [+ + +]
Author: Jiasheng Jiang <[email protected]>
Date:   Tue Oct 21 18:24:56 2025 +0000

    ptp: ocp: Fix typo using index 1 instead of i in SMA initialization loop
    
    [ Upstream commit a767957e7a83f9e742be196aa52a48de8ac5a7e4 ]
    
    In ptp_ocp_sma_fb_init(), the code mistakenly used bp->sma[1]
    instead of bp->sma[i] inside a for-loop, which caused only SMA[1]
    to have its DIRECTION_CAN_CHANGE capability cleared. This led to
    inconsistent capability flags across SMA pins.
    
    Fixes: 09eeb3aecc6c ("ptp_ocp: implement DPLL ops")
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Reviewed-by: Vadim Fedorenko <[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]>

 
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: cpufeature: add validation for zfa, zfh and zfhmin [+ + +]
Author: Clément Léger <[email protected]>
Date:   Tue May 27 12:00:00 2025 +0200

    riscv: cpufeature: add validation for zfa, zfh and zfhmin
    
    [ Upstream commit 2e2cf5581fccc562f7faf174ffb9866fed5cafbd ]
    
    These extensions depends on the F one. Add a validation callback
    checking for the F extension to be present. Now that extensions are
    correctly reported using the F/D presence, we can remove the
    has_fpu() check in hwprobe_isa_ext0().
    
    Signed-off-by: Clément Léger <[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: cpufeature: avoid uninitialized variable in has_thead_homogeneous_vlenb() [+ + +]
Author: Paul Walmsley <[email protected]>
Date:   Sat Oct 18 00:31:11 2025 -0600

    riscv: cpufeature: avoid uninitialized variable in has_thead_homogeneous_vlenb()
    
    commit 2dc99ea2727640b2fe12f9aa0e38ea2fc3cbb92d upstream.
    
    In has_thead_homogeneous_vlenb(), smatch detected that the vlenb variable
    could be used while uninitialized.  It appears that this could happen if
    no CPUs described in DT have the "thead,vlenb" property.
    
    Fix by initializing vlenb to 0, which will keep thead_vlenb_of set to 0
    (as it was statically initialized).  This in turn will cause
    riscv_v_setup_vsize() to fall back to CSR probing - the desired result if
    thead,vlenb isn't provided in the DT data.
    
    While here, fix a nearby comment typo.
    
    Cc: [email protected]
    Cc: Charlie Jenkins <[email protected]>
    Fixes: 377be47f90e41 ("riscv: vector: Use vlenb from DT for thead")
    Signed-off-by: Paul Walmsley <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

riscv: hwprobe: avoid uninitialized variable use in hwprobe_arch_id() [+ + +]
Author: Paul Walmsley <[email protected]>
Date:   Sat Oct 18 09:32:12 2025 -0600

    riscv: hwprobe: avoid uninitialized variable use in hwprobe_arch_id()
    
    [ Upstream commit b7776a802f2f80139f96530a489dd00fd7089eda ]
    
    Resolve this smatch warning:
    
      arch/riscv/kernel/sys_hwprobe.c:50 hwprobe_arch_id() error: uninitialized symbol 'cpu_id'.
    
    This could happen if hwprobe_arch_id() was called with a key ID of
    something other than MVENDORID, MIMPID, and MARCHID.  This does not
    happen in the current codebase.  The only caller of hwprobe_arch_id()
    is a function that only passes one of those three key IDs.
    
    For the sake of reducing static analyzer warning noise, and in the
    unlikely event that hwprobe_arch_id() is someday called with some
    other key ID, validate hwprobe_arch_id()'s input to ensure that
    'cpu_id' is always initialized before use.
    
    Fixes: ea3de9ce8aa280 ("RISC-V: Add a syscall for HW probing")
    Cc: Evan Green <[email protected]>
    Signed-off-by: Paul Walmsley <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

riscv: hwprobe: Fix stale vDSO data for late-initialized keys at boot [+ + +]
Author: Jingwei Wang <[email protected]>
Date:   Mon Aug 11 22:20:06 2025 +0800

    riscv: hwprobe: Fix stale vDSO data for late-initialized keys at boot
    
    commit 5d15d2ad36b0f7afab83ca9fc8a2a6e60cbe54c4 upstream.
    
    The hwprobe vDSO data for some keys, like MISALIGNED_VECTOR_PERF,
    is determined by an asynchronous kthread. This can create a race
    condition where the kthread finishes after the vDSO data has
    already been populated, causing userspace to read stale values.
    
    To fix this race, a new 'ready' flag is added to the vDSO data,
    initialized to 'false' during arch_initcall_sync. This flag is
    checked by both the vDSO's user-space code and the riscv_hwprobe
    syscall. The syscall serves as a one-time gate, using a completion
    to wait for any pending probes before populating the data and
    setting the flag to 'true', thus ensuring userspace reads fresh
    values on its first request.
    
    Reported-by: Tsukasa OI <[email protected]>
    Closes: https://lore.kernel.org/linux-riscv/[email protected]/
    Fixes: e7c9d66e313b ("RISC-V: Report vector unaligned access speed hwprobe")
    Cc: Palmer Dabbelt <[email protected]>
    Cc: Alexandre Ghiti <[email protected]>
    Cc: Olof Johansson <[email protected]>
    Cc: [email protected]
    Reviewed-by: Alexandre Ghiti <[email protected]>
    Co-developed-by: Palmer Dabbelt <[email protected]>
    Signed-off-by: Palmer Dabbelt <[email protected]>
    Signed-off-by: Jingwei Wang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [[email protected]: fix checkpatch issues]
    Signed-off-by: Paul Walmsley <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

riscv: mm: Return intended SATP mode for noXlvl options [+ + +]
Author: Junhui Liu <[email protected]>
Date:   Tue Jul 22 00:53:10 2025 +0800

    riscv: mm: Return intended SATP mode for noXlvl options
    
    [ Upstream commit f3243bed39c26ce0f13e6392a634f91d409b2d02 ]
    
    Change the return value of match_noXlvl() to return the SATP mode that
    will be used, rather than the mode being disabled. This enables unified
    logic for return value judgement with the function that obtains mmu-type
    from the fdt, avoiding extra conversion. This only changes the naming,
    with no functional impact.
    
    Signed-off-by: Junhui Liu <[email protected]>
    Reviewed-by: Alexandre Ghiti <[email protected]>
    Reviewed-by: Nutty Liu <[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: mm: Use mmu-type from FDT to limit SATP mode [+ + +]
Author: Junhui Liu <[email protected]>
Date:   Tue Jul 22 00:53:11 2025 +0800

    riscv: mm: Use mmu-type from FDT to limit SATP mode
    
    [ Upstream commit 17e9521044c9b3ee839f861d1ac35c5b5c20d16b ]
    
    Some RISC-V implementations may hang when attempting to write an
    unsupported SATP mode, even though the latest RISC-V specification
    states such writes should have no effect. To avoid this issue, the
    logic for selecting SATP mode has been refined:
    
    The kernel now determines the SATP mode limit by taking the minimum of
    the value specified by the kernel command line (noXlvl) and the
    "mmu-type" property in the device tree (FDT). If only one is specified,
    use that.
    - If the resulting limit is sv48 or higher, the kernel will probe SATP
      modes from this limit downward until a supported mode is found.
    - If the limit is sv39, the kernel will directly use sv39 without
      probing.
    
    This ensures SATP mode selection is safe and compatible with both
    hardware and user configuration, minimizing the risk of hangs.
    
    Signed-off-by: Junhui Liu <[email protected]>
    Reviewed-by: Alexandre Ghiti <[email protected]>
    Reviewed-by: Nutty Liu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Paul Walmsley <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
rust: device: fix device context of Device::parent() [+ + +]
Author: Danilo Krummrich <[email protected]>
Date:   Thu Oct 16 15:31:44 2025 +0200

    rust: device: fix device context of Device::parent()
    
    commit cfec502b3d091ff7c24df6ccf8079470584315a0 upstream.
    
    Regardless of the DeviceContext of a device, we can't give any
    guarantees about the DeviceContext of its parent device.
    
    This is very subtle, since it's only caused by a simple typo, i.e.
    
             Self::from_raw(parent)
    
    which preserves the DeviceContext in this case, vs.
    
             Device::from_raw(parent)
    
    which discards the DeviceContext.
    
    (I should have noticed it doing the correct thing in auxiliary::Device
    subsequently, but somehow missed it.)
    
    Hence, fix both Device::parent() and auxiliary::Device::parent().
    
    Cc: [email protected]
    Fixes: a4c9f71e3440 ("rust: device: implement Device::parent()")
    Reviewed-by: Alice Ryhl <[email protected]>
    Reviewed-by: Alexandre Courbot <[email protected]>
    Acked-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Danilo Krummrich <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rv: Fully convert enabled_monitors to use list_head as iterator [+ + +]
Author: Nam Cao <[email protected]>
Date:   Thu Oct 2 08:22:35 2025 +0000

    rv: Fully convert enabled_monitors to use list_head as iterator
    
    commit 103541e6a5854b08a25e4caa61e990af1009a52e upstream.
    
    The callbacks in enabled_monitors_seq_ops are inconsistent. Some treat the
    iterator as struct rv_monitor *, while others treat the iterator as struct
    list_head *.
    
    This causes a wrong type cast and crashes the system as reported by Nathan.
    
    Convert everything to use struct list_head * as iterator. This also makes
    enabled_monitors consistent with available_monitors.
    
    Fixes: de090d1ccae1 ("rv: Fix wrong type cast in enabled_monitors_next()")
    Reported-by: Nathan Chancellor <[email protected]>
    Closes: https://lore.kernel.org/linux-trace-kernel/20250923002004.GA2836051@ax162/
    Signed-off-by: Nam Cao <[email protected]>
    Cc: [email protected]
    Reviewed-by: Gabriele Monaco <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Gabriele Monaco <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

rv: Make rtapp/pagefault monitor depends on CONFIG_MMU [+ + +]
Author: Nam Cao <[email protected]>
Date:   Thu Oct 2 08:23:17 2025 +0000

    rv: Make rtapp/pagefault monitor depends on CONFIG_MMU
    
    commit 3d62f95bd8450cebb4a4741bf83949cd54edd4a3 upstream.
    
    There is no page fault without MMU. Compiling the rtapp/pagefault monitor
    without CONFIG_MMU fails as page fault tracepoints' definitions are not
    available.
    
    Make rtapp/pagefault monitor depends on CONFIG_MMU.
    
    Fixes: 9162620eb604 ("rv: Add rtapp_pagefault monitor")
    Signed-off-by: Nam Cao <[email protected]>
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Cc: [email protected]
    Reviewed-by: Gabriele Monaco <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Gabriele Monaco <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
s390/mm: Use __GFP_ACCOUNT for user page table allocations [+ + +]
Author: Heiko Carstens <[email protected]>
Date:   Mon Sep 22 17:24:05 2025 +0200

    s390/mm: Use __GFP_ACCOUNT for user page table allocations
    
    [ Upstream commit 5671ce2a1fc6b4a16cff962423bc416b92cac3c8 ]
    
    Add missing kmemcg accounting of user page table allocations.
    
    Reviewed-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/pkey: Forward keygenflags to ep11_unwrapkey [+ + +]
Author: Harald Freudenberger <[email protected]>
Date:   Wed Aug 13 11:43:50 2025 +0200

    s390/pkey: Forward keygenflags to ep11_unwrapkey
    
    [ Upstream commit 11aa54ba4cfa5390ea47c9a1fc62502abce1f6b9 ]
    
    The pkey ioctl PKEY_CLR2SECK2 describes in the pkey.h header file
    the parameter 'keygenflags' which is forwarded to the handler
    functions which actually deal with the clear key to secure key
    operation. The ep11 handler module function ep11_clr2keyblob()
    function receives this parameter but does not forward it to the
    underlying function ep11_unwrapkey() on invocation. So in the end
    the user of this ioctl could not forward additional key generation
    flags to the ep11 implementation and thus was unable to modify the
    key generation process in any way. So now call ep11_unwrapkey()
    with the real keygenflags instead of 0 and thus the user of this
    ioctl can for example via keygenflags provide valid combinations
    of XCP_BLOB_* flags.
    
    Suggested-by: Ingo Franzki <[email protected]>
    Signed-off-by: Harald Freudenberger <[email protected]>
    Reviewed-by: Ingo Franzki <[email protected]>
    Signed-off-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sched/fair: Block delayed tasks on throttled hierarchy during dequeue [+ + +]
Author: K Prateek Nayak <[email protected]>
Date:   Thu Oct 23 04:03:59 2025 +0000

    sched/fair: Block delayed tasks on throttled hierarchy during dequeue
    
    Dequeuing a fair task on a throttled hierarchy returns early on
    encountering a throttled cfs_rq since the throttle path has already
    dequeued the hierarchy above and has adjusted the h_nr_* accounting till
    the root cfs_rq.
    
    dequeue_entities() crucially misses calling __block_task() for delayed
    tasks being dequeued on the throttled hierarchies, but this was mostly
    harmless until commit b7ca5743a260 ("sched/core: Tweak
    wait_task_inactive() to force dequeue sched_delayed tasks") since all
    existing cases would re-enqueue the task if task_on_rq_queued() returned
    true and the task would eventually be blocked at pick after the
    hierarchy was unthrottled.
    
    wait_task_inactive() is special as it expects the delayed task on
    throttled hierarchy to reach the blocked state on dequeue but since
    __block_task() is never called, task_on_rq_queued() continues to return
    true. Furthermore, since the task is now off the hierarchy, the pick
    never reaches it to fully block the task even after unthrottle leading
    to wait_task_inactive() looping endlessly.
    
    Remedy this by calling __block_task() if a delayed task is being
    dequeued on a throttled hierarchy.
    
    This fix is only required for stabled kernels implementing delay dequeue
    (>= v6.12) before v6.18 since upstream commit e1fad12dcb66 ("sched/fair:
    Switch to task based throttle model") indirectly fixes this by removing
    the early return conditions in dequeue_entities() as part of the per-task
    throttle feature.
    
    Cc: [email protected]
    Reported-by: Matt Fleming <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Fixes: b7ca5743a260 ("sched/core: Tweak wait_task_inactive() to force dequeue sched_delayed tasks")
    Tested-by: Matt Fleming <[email protected]>
    Signed-off-by: K Prateek Nayak <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
 
sched: Remove never used code in mm_cid_get() [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Wed Oct 15 11:19:34 2025 +0200

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

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

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

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

    selftests: mptcp: join: mark 'delete re-add signal' as skipped if not supported
    
    commit c3496c052ac36ea98ec4f8e95ae6285a425a2457 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: b5e2fb832f48 ("selftests: mptcp: add explicit test case for remove/readd")
    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-4-8207030cb0e8@kernel.org
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

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

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

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

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

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

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

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

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

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

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

serial: sc16is7xx: remove useless enable of enhanced features [+ + +]
Author: Hugo Villeneuve <[email protected]>
Date:   Mon Oct 6 10:20:02 2025 -0400

    serial: sc16is7xx: remove useless enable of enhanced features
    
    commit 1c05bf6c0262f946571a37678250193e46b1ff0f upstream.
    
    Commit 43c51bb573aa ("sc16is7xx: make sure device is in suspend once
    probed") permanently enabled access to the enhanced features in
    sc16is7xx_probe(), and it is never disabled after that.
    
    Therefore, remove re-enable of enhanced features in
    sc16is7xx_set_baud(). This eliminates a potential useless read + write
    cycle each time the baud rate is reconfigured.
    
    Fixes: 43c51bb573aa ("sc16is7xx: make sure device is in suspend once probed")
    Cc: stable <[email protected]>
    Signed-off-by: Hugo Villeneuve <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
slab: Avoid race on slab->obj_exts in alloc_slab_obj_exts [+ + +]
Author: Hao Ge <[email protected]>
Date:   Tue Oct 21 09:03:53 2025 +0800

    slab: Avoid race on slab->obj_exts in alloc_slab_obj_exts
    
    commit 6ed8bfd24ce1cb31742b09a3eb557cd008533eec upstream.
    
    If two competing threads enter alloc_slab_obj_exts() and one of them
    fails to allocate the object extension vector, it might override the
    valid slab->obj_exts allocated by the other thread with
    OBJEXTS_ALLOC_FAIL. This will cause the thread that lost this race and
    expects a valid pointer to dereference a NULL pointer later on.
    
    Update slab->obj_exts atomically using cmpxchg() to avoid
    slab->obj_exts overrides by racing threads.
    
    Thanks for Vlastimil and Suren's help with debugging.
    
    Fixes: f7381b911640 ("slab: mark slab->obj_exts allocation failures unconditionally")
    Cc: <[email protected]>
    Suggested-by: Suren Baghdasaryan <[email protected]>
    Signed-off-by: Hao Ge <[email protected]>
    Reviewed-by: Harry Yoo <[email protected]>
    Reviewed-by: Suren Baghdasaryan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vlastimil Babka <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

slab: Fix obj_ext mistakenly considered NULL due to race condition [+ + +]
Author: Hao Ge <[email protected]>
Date:   Thu Oct 23 22:33:13 2025 +0800

    slab: Fix obj_ext mistakenly considered NULL due to race condition
    
    commit 7f434e1d9a17ca5f567c9796c9c105a65c18db9a upstream.
    
    If two competing threads enter alloc_slab_obj_exts(), and the one that
    allocates the vector wins the cmpxchg(), the other thread that failed
    allocation mistakenly assumes that slab->obj_exts is still empty due to
    its own allocation failure. This will then trigger warnings with
    CONFIG_MEM_ALLOC_PROFILING_DEBUG checks in the subsequent free path.
    
    Therefore, let's check the result of cmpxchg() to see if marking the
    allocation as failed was successful. If it wasn't, check whether the
    winning side has succeeded its allocation (it might have been also
    marking it as failed) and if yes, return success.
    
    Suggested-by: Harry Yoo <[email protected]>
    Fixes: f7381b911640 ("slab: mark slab->obj_exts allocation failures unconditionally")
    Cc: <[email protected]>
    Signed-off-by: Hao Ge <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Suren Baghdasaryan <[email protected]>
    Reviewed-by: Harry Yoo <[email protected]>
    Signed-off-by: Vlastimil Babka <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
smb: client: get rid of d_drop() in cifs_do_rename() [+ + +]
Author: Paulo Alcantara <[email protected]>
Date:   Wed Oct 22 21:11:01 2025 -0300

    smb: client: get rid of d_drop() in cifs_do_rename()
    
    commit 72ed55b4c335703c203b942972558173e1e5ddee upstream.
    
    There is no need to force a lookup by unhashing the moved dentry after
    successfully renaming the file on server.  The file metadata will be
    re-fetched from server, if necessary, in the next call to
    ->d_revalidate() anyways.
    
    Signed-off-by: Paulo Alcantara (Red Hat) <[email protected]>
    Reviewed-by: David Howells <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

smb: client: limit the range of info->receive_credit_target [+ + +]
Author: Stefan Metzmacher <[email protected]>
Date:   Thu Aug 14 15:01:35 2025 +0200

    smb: client: limit the range of info->receive_credit_target
    
    [ Upstream commit 9219f8cac296769324bbe8a28c289586114244c4 ]
    
    This simplifies further changes...
    
    Cc: Steve French <[email protected]>
    Cc: Tom Talpey <[email protected]>
    Cc: Long Li <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Stefan Metzmacher <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

smb: client: make use of ib_wc_status_msg() and skip IB_WC_WR_FLUSH_ERR logging [+ + +]
Author: Stefan Metzmacher <[email protected]>
Date:   Tue Aug 12 09:44:07 2025 +0200

    smb: client: make use of ib_wc_status_msg() and skip IB_WC_WR_FLUSH_ERR logging
    
    [ Upstream commit a8e970358b31a5abba8b5737a67ba7b8d26f4258 ]
    
    There's no need to get log message for every IB_WC_WR_FLUSH_ERR
    completion, but any other error should be logged at level ERR.
    
    Cc: Steve French <[email protected]>
    Cc: Tom Talpey <[email protected]>
    Cc: Long Li <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Stefan Metzmacher <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

smb: client: queue post_recv_credits_work also if the peer raises the credit target [+ + +]
Author: Stefan Metzmacher <[email protected]>
Date:   Mon Aug 11 17:53:55 2025 +0200

    smb: client: queue post_recv_credits_work also if the peer raises the credit target
    
    [ Upstream commit 02548c477a90481c1fd0d6e7c84b4504ec2fcc12 ]
    
    This is already handled in the server, but currently it done
    in a very complex way there. So we do it much simpler.
    
    Note that put_receive_buffer() will take care of it
    in case data_length is 0.
    
    Cc: Steve French <[email protected]>
    Cc: Tom Talpey <[email protected]>
    Cc: Long Li <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Acked-by: Namjae Jeon <[email protected]>
    Signed-off-by: Stefan Metzmacher <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
spi: airoha: add support of dual/quad wires spi modes to exec_op() handler [+ + +]
Author: Mikhail Kshevetskiy <[email protected]>
Date:   Sun Oct 12 15:16:54 2025 +0300

    spi: airoha: add support of dual/quad wires spi modes to exec_op() handler
    
    [ Upstream commit edd2e261b1babb92213089b5feadca12e3459322 ]
    
    Booting without this patch and disabled dirmap support results in
    
    [    2.980719] spi-nand spi0.0: Micron SPI NAND was found.
    [    2.986040] spi-nand spi0.0: 256 MiB, block size: 128 KiB, page size: 2048, OOB size: 128
    [    2.994709] 2 fixed-partitions partitions found on MTD device spi0.0
    [    3.001075] Creating 2 MTD partitions on "spi0.0":
    [    3.005862] 0x000000000000-0x000000020000 : "bl2"
    [    3.011272] 0x000000020000-0x000010000000 : "ubi"
    ...
    [    6.195594] ubi0: attaching mtd1
    [   13.338398] ubi0: scanning is finished
    [   13.342188] ubi0 error: ubi_read_volume_table: the layout volume was not found
    [   13.349784] ubi0 error: ubi_attach_mtd_dev: failed to attach mtd1, error -22
    [   13.356897] UBI error: cannot attach mtd1
    
    If dirmap is disabled or not supported in the spi driver, the dirmap requests
    will be executed via exec_op() handler. Thus, if the hardware supports
    dual/quad spi modes, then corresponding requests will be sent to exec_op()
    handler. Current driver does not support such requests, so error is arrised.
    As result the flash can't be read/write.
    
    This patch adds support of dual and quad wires spi modes to exec_op() handler.
    
    Fixes: a403997c12019 ("spi: airoha: add SPI-NAND Flash controller driver")
    Signed-off-by: Mikhail Kshevetskiy <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: airoha: fix reading/writing of flashes with more than one plane per lun [+ + +]
Author: Mikhail Kshevetskiy <[email protected]>
Date:   Sun Oct 12 15:16:57 2025 +0300

    spi: airoha: fix reading/writing of flashes with more than one plane per lun
    
    [ Upstream commit 0b7d9b25e4bc2e478c9d06281a65f930769fca09 ]
    
    Attaching UBI on the flash with more than one plane per lun will lead to
    the following error:
    
    [    2.980989] spi-nand spi0.0: Micron SPI NAND was found.
    [    2.986309] spi-nand spi0.0: 256 MiB, block size: 128 KiB, page size: 2048, OOB size: 128
    [    2.994978] 2 fixed-partitions partitions found on MTD device spi0.0
    [    3.001350] Creating 2 MTD partitions on "spi0.0":
    [    3.006159] 0x000000000000-0x000000020000 : "bl2"
    [    3.011663] 0x000000020000-0x000010000000 : "ubi"
    ...
    [    6.391748] ubi0: attaching mtd1
    [    6.412545] ubi0 error: ubi_attach: PEB 0 contains corrupted VID header, and the data does not contain all 0xFF
    [    6.422677] ubi0 error: ubi_attach: this may be a non-UBI PEB or a severe VID header corruption which requires manual inspection
    [    6.434249] Volume identifier header dump:
    [    6.438349]     magic     55424923
    [    6.441482]     version   1
    [    6.444007]     vol_type  0
    [    6.446539]     copy_flag 0
    [    6.449068]     compat    0
    [    6.451594]     vol_id    0
    [    6.454120]     lnum      1
    [    6.456651]     data_size 4096
    [    6.459442]     used_ebs  1061644134
    [    6.462748]     data_pad  0
    [    6.465274]     sqnum     0
    [    6.467805]     hdr_crc   61169820
    [    6.470943] Volume identifier header hexdump:
    [    6.475308] hexdump of PEB 0 offset 4096, length 126976
    [    6.507391] ubi0 warning: ubi_attach: valid VID header but corrupted EC header at PEB 4
    [    6.515415] ubi0 error: ubi_compare_lebs: unsupported on-flash UBI format
    [    6.522222] ubi0 error: ubi_attach_mtd_dev: failed to attach mtd1, error -22
    [    6.529294] UBI error: cannot attach mtd1
    
    Non dirmap reading works good. Looking to spi_mem_no_dirmap_read() code we'll see:
    
            static ssize_t spi_mem_no_dirmap_read(struct spi_mem_dirmap_desc *desc,
                                                  u64 offs, size_t len, void *buf)
            {
                    struct spi_mem_op op = desc->info.op_tmpl;
                    int ret;
    
    // --- see here ---
                    op.addr.val = desc->info.offset + offs;
    //-----------------
                    op.data.buf.in = buf;
                    op.data.nbytes = len;
                    ret = spi_mem_adjust_op_size(desc->mem, &op);
                    if (ret)
                    return ret;
    
                    ret = spi_mem_exec_op(desc->mem, &op);
                    if (ret)
                            return ret;
    
                    return op.data.nbytes;
            }
    
    The similar happens for spi_mem_no_dirmap_write(). Thus the address
    passed to the flash should take in the account the value of
    desc->info.offset.
    
    This patch fix dirmap reading/writing of flashes with more than one
    plane per lun.
    
    Fixes: a403997c12019 ("spi: airoha: add SPI-NAND Flash controller driver")
    Signed-off-by: Mikhail Kshevetskiy <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: airoha: return an error for continuous mode dirmap creation cases [+ + +]
Author: Mikhail Kshevetskiy <[email protected]>
Date:   Sun Oct 12 15:16:52 2025 +0300

    spi: airoha: return an error for continuous mode dirmap creation cases
    
    [ Upstream commit 4314ffce4eb81a6c18700af1b6e29b6e0c6b9e37 ]
    
    This driver can accelerate single page operations only, thus
    continuous reading mode should not be used.
    
    Continuous reading will use sizes up to the size of one erase block.
    This size is much larger than the size of single flash page. Use this
    difference to identify continuous reading and return an error.
    
    Signed-off-by: Mikhail Kshevetskiy <[email protected]>
    Reviewed-by: Frieder Schrempf <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Fixes: a403997c12019 ("spi: airoha: add SPI-NAND Flash controller driver")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: airoha: switch back to non-dma mode in the case of error [+ + +]
Author: Mikhail Kshevetskiy <[email protected]>
Date:   Sun Oct 12 15:16:56 2025 +0300

    spi: airoha: switch back to non-dma mode in the case of error
    
    [ Upstream commit 20d7b236b78c7ec685a22db5689b9c829975e0c3 ]
    
    Current dirmap code does not switch back to non-dma mode in the case of
    error. This is wrong.
    
    This patch fixes dirmap read/write error path.
    
    Fixes: a403997c12019 ("spi: airoha: add SPI-NAND Flash controller driver")
    Signed-off-by: Mikhail Kshevetskiy <[email protected]>
    Acked-by: Lorenzo Bianconi <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: cadence-quadspi: Fix pm_runtime unbalance on dma EPROBE_DEFER [+ + +]
Author: Mattijs Korpershoek <[email protected]>
Date:   Thu Oct 9 09:10:38 2025 +0200

    spi: cadence-quadspi: Fix pm_runtime unbalance on dma EPROBE_DEFER
    
    [ Upstream commit 8735696acea24ac1f9d4490992418c71941ca68c ]
    
    In csqspi_probe(), when cqspi_request_mmap_dma() returns -EPROBE_DEFER,
    we handle the error by jumping to probe_setup_failed.
    In that label, we call pm_runtime_disable(), even if we never called
    pm_runtime_enable() before.
    
    Because of this, the driver cannot probe:
    
    [    2.690018] cadence-qspi 47040000.spi: No Rx DMA available
    [    2.699735] spi-nor spi0.0: resume failed with -13
    [    2.699741] spi-nor: probe of spi0.0 failed with error -13
    
    Only call pm_runtime_disable() if it was enabled by adding a new
    label to handle cqspi_request_mmap_dma() failures.
    
    Fixes: b07f349d1864 ("spi: spi-cadence-quadspi: Fix pm runtime unbalance")
    Signed-off-by: Mattijs Korpershoek <[email protected]>
    Reviewed-by: Dan Carpenter <[email protected]>
    Link: https://patch.msgid.link/20251009-cadence-quadspi-fix-pm-runtime-v2-1-8bdfefc43902@kernel.org
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: rockchip-sfc: Fix DMA-API usage [+ + +]
Author: Marek Szyprowski <[email protected]>
Date:   Fri Oct 3 13:42:39 2025 +0200

    spi: rockchip-sfc: Fix DMA-API usage
    
    [ Upstream commit ee795e82e10197c070efd380dc9615c73dffad6c ]
    
    Use DMA-API dma_map_single() call for getting the DMA address of the
    transfer buffer instead of hacking with virt_to_phys().
    
    This fixes the following DMA-API debug warning:
    ------------[ cut here ]------------
    DMA-API: rockchip-sfc fe300000.spi: device driver tries to sync DMA memory it has not allocated [device address=0x000000000cf70000] [size=288 bytes]
    WARNING: kernel/dma/debug.c:1106 at check_sync+0x1d8/0x690, CPU#2: systemd-udevd/151
    Modules linked in: ...
    Hardware name: Hardkernel ODROID-M1 (DT)
    pstate: 604000c9 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : check_sync+0x1d8/0x690
    lr : check_sync+0x1d8/0x690
    ..
    Call trace:
     check_sync+0x1d8/0x690 (P)
     debug_dma_sync_single_for_cpu+0x84/0x8c
     __dma_sync_single_for_cpu+0x88/0x234
     rockchip_sfc_exec_mem_op+0x4a0/0x798 [spi_rockchip_sfc]
     spi_mem_exec_op+0x408/0x498
     spi_nor_read_data+0x170/0x184
     spi_nor_read_sfdp+0x74/0xe4
     spi_nor_parse_sfdp+0x120/0x11f0
     spi_nor_sfdp_init_params_deprecated+0x3c/0x8c
     spi_nor_scan+0x690/0xf88
     spi_nor_probe+0xe4/0x304
     spi_mem_probe+0x6c/0xa8
     spi_probe+0x94/0xd4
     really_probe+0xbc/0x298
     ...
    
    Fixes: b69386fcbc60 ("spi: rockchip-sfc: Using normal memory for dma")
    Signed-off-by: Marek Szyprowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

spi: spi-nxp-fspi: add the support for sample data from DQS pad [+ + +]
Author: Haibo Chen <[email protected]>
Date:   Wed Sep 17 15:27:09 2025 +0800

    spi: spi-nxp-fspi: add the support for sample data from DQS pad
    
    [ Upstream commit c07f270323175b83779c2c2b80b360ed476baec5 ]
    
    flexspi define four mode for sample clock source selection.
    Here is the list of modes:
    mode 0: Dummy Read strobe generated by FlexSPI Controller and loopback
            internally
    mode 1: Dummy Read strobe generated by FlexSPI Controller and loopback
            from DQS pad
    mode 2: Reserved
    mode 3: Flash provided Read strobe and input from DQS pad
    
    In default, flexspi use mode 0 after reset. And for DTR mode, flexspi
    only support 8D-8D-8D mode. For 8D-8D-8D mode, IC suggest to use mode 3,
    otherwise read always get incorrect data.
    
    For DTR mode, flexspi will automatically div 2 of the root clock
    and output to device. the formula is:
        device_clock = root_clock / (is_dtr ? 2 : 1)
    So correct the clock rate setting for DTR mode to get the max
    performance.
    
    Signed-off-by: Haibo Chen <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: a89103f67112 ("spi: spi-nxp-fspi: re-config the clock rate when operation require new clock rate")
    Signed-off-by: Sasha Levin <[email protected]>

spi: spi-nxp-fspi: limit the clock rate for different sample clock source selection [+ + +]
Author: Haibo Chen <[email protected]>
Date:   Mon Sep 22 16:47:15 2025 +0800

    spi: spi-nxp-fspi: limit the clock rate for different sample clock source selection
    
    [ Upstream commit f43579ef3500527649b1c233be7cf633806353aa ]
    
    For different sample clock source selection, the max frequency
    flexspi supported are different. For mode 0, max frequency is 66MHz.
    For mode 3, the max frequency is 166MHz.
    
    Refer to 3.9.9 FlexSPI timing parameters on page 65.
    https://www.nxp.com/docs/en/data-sheet/IMX8MNCEC.pdf
    
    Though flexspi maybe still work under higher frequency, but can't
    guarantee the stability. IC suggest to add this limitation on all
    SoCs which contain flexspi.
    
    Fixes: c07f27032317 ("spi: spi-nxp-fspi: add the support for sample data from DQS pad")
    Signed-off-by: Haibo Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: spi-nxp-fspi: re-config the clock rate when operation require new clock rate [+ + +]
Author: Haibo Chen <[email protected]>
Date:   Mon Sep 22 16:47:13 2025 +0800

    spi: spi-nxp-fspi: re-config the clock rate when operation require new clock rate
    
    [ Upstream commit a89103f67112453fa36c9513e951c19eed9d2d92 ]
    
    Current operation contain the max_freq, so new coming operation may use
    new clock rate, need to re-config the clock rate to match the requirement.
    
    Fixes: 26851cf65ffc ("spi: nxp-fspi: Support per spi-mem operation frequency switches")
    Signed-off-by: Haibo Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
staging: gpib: Fix device reference leak in fmh_gpib driver [+ + +]
Author: Ma Ke <[email protected]>
Date:   Tue Sep 23 09:36:03 2025 +0800

    staging: gpib: Fix device reference leak in fmh_gpib driver
    
    commit b1aabb8ef09b4cf0cc0c92ca9dfd19482f3192c1 upstream.
    
    The fmh_gpib driver contains a device reference count leak in
    fmh_gpib_attach_impl() where driver_find_device() increases the
    reference count of the device by get_device() when matching but this
    reference is not properly decreased. Add put_device() in
    fmh_gpib_detach(), which ensures that the reference count of the
    device is correctly managed.
    
    Found by code review.
    
    Cc: stable <[email protected]>
    Fixes: 8e4841a0888c ("staging: gpib: Add Frank Mori Hess FPGA PCI GPIB driver")
    Signed-off-by: Ma Ke <[email protected]>
    Reviewed-by: Dan Carpenter <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

staging: gpib: Fix no EOI on 1 and 2 byte writes [+ + +]
Author: Dave Penkler <[email protected]>
Date:   Sun Sep 28 11:18:18 2025 +0200

    staging: gpib: Fix no EOI on 1 and 2 byte writes
    
    commit d3c4c1f29aadccf2f43530bfa1e60a6d8030fd4a upstream.
    
    EOI (End Or Identify) is a hardware line on the GPIB bus that can be
    asserted with the last byte of a message to indicate the end of the
    transfer to the receiving device.
    
    In this driver, a write with send_eoi true is done in 3 parts:
      Send first byte directly
      Send remaining but 1 bytes using the fifo
      Send the last byte directly with EOI asserted
    
    The first byte in a write is always sent by writing to the tms9914
    chip directly to setup for the subsequent fifo transfer.  We were not
    checking for a 1 byte write with send_eoi true resulting in EOI not
    being asserted. Since the fifo transfer was not executed
    (fifotransfersize == 0) the retval in the test after the fifo transfer
    code was still 1 from the preceding direct write. This caused it to
    return without executing the final direct write which would have sent
    an unsollicited extra byte.
    
    For a 2 byte message the first byte was sent directly. But since the
    fifo transfer was not executed (fifotransfersize == 1) and the retval
    in the test after the fifo transfer code was still 1 from the
    preceding first byte write it returned before the final direct byte
    write with send_eoi true. The second byte was then sent as a separate
    1 byte write to complete the 2 byte write count again without EOI
    being asserted as above.
    
    Only send the first byte directly if more than 1 byte is to be
    transferred with send_eoi true.
    
    Also check for retval < 0 for the error return in case the fifo code
    is not used (1 or 2 byte message with send_eoi true).
    
    Fixes: 09a4655ee1eb ("staging: gpib: Add HP/Agilent/Keysight 8235xx PCI GPIB driver")
    Cc: stable <[email protected]>
    Tested-by: Dave Penkler <[email protected]>
    Signed-off-by: Dave Penkler <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

staging: gpib: Fix sending clear and trigger events [+ + +]
Author: Dave Penkler <[email protected]>
Date:   Sun Sep 28 13:33:58 2025 +0200

    staging: gpib: Fix sending clear and trigger events
    
    commit 92a2b74a6b5a5d9b076cd9aa75e63c6461cbd073 upstream.
    
    This driver was not sending device clear or trigger events when the
    board entered the DCAS or DTAS state respectively in device mode.
    
    DCAS is the Device Clear Active State which is entered on receiving a
    selective device clear message (SDC) or universal device clear message
    (DCL) from the controller in charge.
    
    DTAS is the Device Trigger Active State which is entered on receiving
    a group execute trigger (GET) message from the controller.
    
    In order for an application, implementing a particular device, to
    detect when one of these states is entered the driver needs to send
    the appropriate event.
    
    Send the appropriate gpib_event when DCAS or DTAS is set in the
    reported status word. This sets the DCAS or DTAS bits in the board's
    status word which can be monitored by the application.
    
    Fixes: 4e127de14fa7 ("staging: gpib: Add National Instruments USB GPIB driver")
    Cc: stable <[email protected]>
    Tested-by: Dave Penkler <[email protected]>
    Signed-off-by: Dave Penkler <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

staging: gpib: Return -EINTR on device clear [+ + +]
Author: Dave Penkler <[email protected]>
Date:   Sun Sep 28 13:33:59 2025 +0200

    staging: gpib: Return -EINTR on device clear
    
    commit aaf2af1ed147ef49be65afb541a67255e9f60d15 upstream.
    
    When the ATN (Attention) line is asserted during a read we get a
    NIUSB_ATN_STATE_ERROR during a read. For the controller to send a
    device clear it asserts ATN. Normally this is an error but in the case
    of a device clear it should be regarded as an interrupt.
    
    Return -EINTR when the Device Clear Active State (DCAS) is entered
    else signal an error with dev_dbg with status instead of just dev_err.
    
    Signed-off-by: Dave Penkler <[email protected]>
    Cc: stable <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sysfs: check visibility before changing group attribute ownership [+ + +]
Author: Fernando Fernandez Mancera <[email protected]>
Date:   Thu Oct 16 12:14:56 2025 +0200

    sysfs: check visibility before changing group attribute ownership
    
    [ Upstream commit c7fbb8218b4ad35fec0bd2256d2b9c8d60331f33 ]
    
    Since commit 0c17270f9b92 ("net: sysfs: Implement is_visible for
    phys_(port_id, port_name, switch_id)"), __dev_change_net_namespace() can
    hit WARN_ON() when trying to change owner of a file that isn't visible.
    See the trace below:
    
     WARNING: CPU: 6 PID: 2938 at net/core/dev.c:12410 __dev_change_net_namespace+0xb89/0xc30
     CPU: 6 UID: 0 PID: 2938 Comm: incusd Not tainted 6.17.1-1-mainline #1 PREEMPT(full)  4b783b4a638669fb644857f484487d17cb45ed1f
     Hardware name: Framework Laptop 13 (AMD Ryzen 7040Series)/FRANMDCP07, BIOS 03.07 02/19/2025
     RIP: 0010:__dev_change_net_namespace+0xb89/0xc30
     [...]
     Call Trace:
      <TASK>
      ? if6_seq_show+0x30/0x50
      do_setlink.isra.0+0xc7/0x1270
      ? __nla_validate_parse+0x5c/0xcc0
      ? security_capable+0x94/0x1a0
      rtnl_newlink+0x858/0xc20
      ? update_curr+0x8e/0x1c0
      ? update_entity_lag+0x71/0x80
      ? sched_balance_newidle+0x358/0x450
      ? psi_task_switch+0x113/0x2a0
      ? __pfx_rtnl_newlink+0x10/0x10
      rtnetlink_rcv_msg+0x346/0x3e0
      ? sched_clock+0x10/0x30
      ? __pfx_rtnetlink_rcv_msg+0x10/0x10
      netlink_rcv_skb+0x59/0x110
      netlink_unicast+0x285/0x3c0
      ? __alloc_skb+0xdb/0x1a0
      netlink_sendmsg+0x20d/0x430
      ____sys_sendmsg+0x39f/0x3d0
      ? import_iovec+0x2f/0x40
      ___sys_sendmsg+0x99/0xe0
      __sys_sendmsg+0x8a/0xf0
      do_syscall_64+0x81/0x970
      ? __sys_bind+0xe3/0x110
      ? syscall_exit_work+0x143/0x1b0
      ? do_syscall_64+0x244/0x970
      ? sock_alloc_file+0x63/0xc0
      ? syscall_exit_work+0x143/0x1b0
      ? do_syscall_64+0x244/0x970
      ? alloc_fd+0x12e/0x190
      ? put_unused_fd+0x2a/0x70
      ? do_sys_openat2+0xa2/0xe0
      ? syscall_exit_work+0x143/0x1b0
      ? do_syscall_64+0x244/0x970
      ? exc_page_fault+0x7e/0x1a0
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
     [...]
      </TASK>
    
    Fix this by checking is_visible() before trying to touch the attribute.
    
    Fixes: 303a42769c4c ("sysfs: add sysfs_group{s}_change_owner()")
    Fixes: 0c17270f9b92 ("net: sysfs: Implement is_visible for phys_(port_id, port_name, switch_id)")
    Reported-by: Cynthia <[email protected]>
    Closes: https://lore.kernel.org/netdev/01070199e22de7f8-28f711ab-d3f1-46d9-b9a0-048ab05eb09b-000000@eu-central-1.amazonses.com/
    Signed-off-by: Fernando Fernandez Mancera <[email protected]>
    Reviewed-by: Jakub Kicinski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
treewide: remove MIGRATEPAGE_SUCCESS [+ + +]
Author: David Hildenbrand <[email protected]>
Date:   Sun Oct 26 19:50:27 2025 -0400

    treewide: remove MIGRATEPAGE_SUCCESS
    
    [ Upstream commit fb49a4425cfa163faccd91f913773d3401d3a7d4 ]
    
    At this point MIGRATEPAGE_SUCCESS is misnamed for all folio users,
    and now that we remove MIGRATEPAGE_UNMAP, it's really the only "success"
    return value that the code uses and expects.
    
    Let's just get rid of MIGRATEPAGE_SUCCESS completely and just use "0"
    for success.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Hildenbrand <[email protected]>
    Reviewed-by: Zi Yan <[email protected]>                    [mm]
    Acked-by: Dave Kleikamp <[email protected]>      [jfs]
    Acked-by: David Sterba <[email protected]>               [btrfs]
    Acked-by: Greg Kroah-Hartman <[email protected]>
    Reviewed-by: Byungchul Park <[email protected]>
    Cc: Alistair Popple <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Benjamin LaHaise <[email protected]>
    Cc: Chris Mason <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Christophe Leroy <[email protected]>
    Cc: Dave Kleikamp <[email protected]>
    Cc: Eugenio Pé rez <[email protected]>
    Cc: Gregory Price <[email protected]>
    Cc: "Huang, Ying" <[email protected]>
    Cc: Jan Kara <[email protected]>
    Cc: Jason Wang <[email protected]>
    Cc: Jerrin Shaji George <[email protected]>
    Cc: Josef Bacik <[email protected]>
    Cc: Joshua Hahn <[email protected]>
    Cc: Madhavan Srinivasan <[email protected]>
    Cc: Mathew Brost <[email protected]>
    Cc: Michael Ellerman <[email protected]>
    Cc: "Michael S. Tsirkin" <[email protected]>
    Cc: Minchan Kim <[email protected]>
    Cc: Muchun Song <[email protected]>
    Cc: Nicholas Piggin <[email protected]>
    Cc: Oscar Salvador <[email protected]>
    Cc: Rakie Kim <[email protected]>
    Cc: Sergey Senozhatsky <[email protected]>
    Cc: Xuan Zhuo <[email protected]>
    Cc: Lance Yang <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 4ba5a8a7faa6 ("vmw_balloon: indicate success when effectively deflating during migration")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tty: serial: sh-sci: fix RSCI FIFO overrun handling [+ + +]
Author: Cosmin Tanislav <[email protected]>
Date:   Tue Sep 23 18:47:06 2025 +0300

    tty: serial: sh-sci: fix RSCI FIFO overrun handling
    
    commit ef8fef45c74b5a0059488fda2df65fa133f7d7d0 upstream.
    
    The receive error handling code is shared between RSCI and all other
    SCIF port types, but the RSCI overrun_reg is specified as a memory
    offset, while for other SCIF types it is an enum value used to index
    into the sci_port_params->regs array, as mentioned above the
    sci_serial_in() function.
    
    For RSCI, the overrun_reg is CSR (0x48), causing the sci_getreg() call
    inside the sci_handle_fifo_overrun() function to index outside the
    bounds of the regs array, which currently has a size of 20, as specified
    by SCI_NR_REGS.
    
    Because of this, we end up accessing memory outside of RSCI's
    rsci_port_params structure, which, when interpreted as a plat_sci_reg,
    happens to have a non-zero size, causing the following WARN when
    sci_serial_in() is called, as the accidental size does not match the
    supported register sizes.
    
    The existence of the overrun_reg needs to be checked because
    SCIx_SH3_SCIF_REGTYPE has overrun_reg set to SCLSR, but SCLSR is not
    present in the regs array.
    
    Avoid calling sci_getreg() for port types which don't use standard
    register handling.
    
    Use the ops->read_reg() and ops->write_reg() functions to properly read
    and write registers for RSCI, and change the type of the status variable
    to accommodate the 32-bit CSR register.
    
    sci_getreg() and sci_serial_in() are also called with overrun_reg in the
    sci_mpxed_interrupt() interrupt handler, but that code path is not used
    for RSCI, as it does not have a muxed interrupt.
    
    ------------[ cut here ]------------
    Invalid register access
    WARNING: CPU: 0 PID: 0 at drivers/tty/serial/sh-sci.c:522 sci_serial_in+0x38/0xac
    Modules linked in: renesas_usbhs at24 rzt2h_adc industrialio_adc sha256 cfg80211 bluetooth ecdh_generic ecc rfkill fuse drm backlight ipv6
    CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.17.0-rc1+ #30 PREEMPT
    Hardware name: Renesas RZ/T2H EVK Board based on r9a09g077m44 (DT)
    pstate: 604000c5 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : sci_serial_in+0x38/0xac
    lr : sci_serial_in+0x38/0xac
    sp : ffff800080003e80
    x29: ffff800080003e80 x28: ffff800082195b80 x27: 000000000000000d
    x26: ffff8000821956d0 x25: 0000000000000000 x24: ffff800082195b80
    x23: ffff000180e0d800 x22: 0000000000000010 x21: 0000000000000000
    x20: 0000000000000010 x19: ffff000180e72000 x18: 000000000000000a
    x17: ffff8002bcee7000 x16: ffff800080000000 x15: 0720072007200720
    x14: 0720072007200720 x13: 0720072007200720 x12: 0720072007200720
    x11: 0000000000000058 x10: 0000000000000018 x9 : ffff8000821a6a48
    x8 : 0000000000057fa8 x7 : 0000000000000406 x6 : ffff8000821fea48
    x5 : ffff00033ef88408 x4 : ffff8002bcee7000 x3 : ffff800082195b80
    x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff800082195b80
    Call trace:
     sci_serial_in+0x38/0xac (P)
     sci_handle_fifo_overrun.isra.0+0x70/0x134
     sci_er_interrupt+0x50/0x39c
     __handle_irq_event_percpu+0x48/0x140
     handle_irq_event+0x44/0xb0
     handle_fasteoi_irq+0xf4/0x1a0
     handle_irq_desc+0x34/0x58
     generic_handle_domain_irq+0x1c/0x28
     gic_handle_irq+0x4c/0x140
     call_on_irq_stack+0x30/0x48
     do_interrupt_handler+0x80/0x84
     el1_interrupt+0x34/0x68
     el1h_64_irq_handler+0x18/0x24
     el1h_64_irq+0x6c/0x70
     default_idle_call+0x28/0x58 (P)
     do_idle+0x1f8/0x250
     cpu_startup_entry+0x34/0x3c
     rest_init+0xd8/0xe0
     console_on_rootfs+0x0/0x6c
     __primary_switched+0x88/0x90
    ---[ end trace 0000000000000000 ]---
    
    Cc: stable <[email protected]>
    Fixes: 0666e3fe95ab ("serial: sh-sci: Add support for RZ/T2H SCI")
    Signed-off-by: Cosmin Tanislav <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

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

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

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

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

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

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

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

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

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

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

 
vfio/cdx: update driver to build without CONFIG_GENERIC_MSI_IRQ [+ + +]
Author: Nipun Gupta <[email protected]>
Date:   Tue Aug 26 10:08:52 2025 +0530

    vfio/cdx: update driver to build without CONFIG_GENERIC_MSI_IRQ
    
    commit 9f3acb3d9a1872e2fa36af068ca2e93a8a864089 upstream.
    
    Define dummy MSI related APIs in VFIO CDX driver to build the
    driver without enabling CONFIG_GENERIC_MSI_IRQ flag.
    
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Reviewed-by: Nikhil Agarwal <[email protected]>
    Reviewed-by: Alex Williamson <[email protected]>
    Signed-off-by: Nipun Gupta <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alex Williamson <[email protected]>
    Cc: Nathan Chancellor <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
virtio-net: zero unused hash fields [+ + +]
Author: Jason Wang <[email protected]>
Date:   Wed Oct 22 11:44:21 2025 +0800

    virtio-net: zero unused hash fields
    
    commit b2284768c6b32aa224ca7d0ef0741beb434f03aa upstream.
    
    When GSO tunnel is negotiated virtio_net_hdr_tnl_from_skb() tries to
    initialize the tunnel metadata but forget to zero unused rxhash
    fields. This may leak information to another side. Fixing this by
    zeroing the unused hash fields.
    
    Acked-by: Michael S. Tsirkin <[email protected]>
    Fixes: a2fb4bc4e2a6a ("net: implement virtio helpers to handle UDP GSO tunneling")
    Cc: <[email protected]>
    Signed-off-by: Jason Wang <[email protected]>
    Reviewed-by: Xuan Zhuo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
vmw_balloon: indicate success when effectively deflating during migration [+ + +]
Author: David Hildenbrand <[email protected]>
Date:   Sun Oct 26 19:50:28 2025 -0400

    vmw_balloon: indicate success when effectively deflating during migration
    
    [ Upstream commit 4ba5a8a7faa647ada8eae61a36517cf369f5bbe4 ]
    
    When migrating a balloon page, we first deflate the old page to then
    inflate the new page.
    
    However, if inflating the new page succeeded, we effectively deflated the
    old page, reducing the balloon size.
    
    In that case, the migration actually worked: similar to migrating+
    immediately deflating the new page.  The old page will be freed back to
    the buddy.
    
    Right now, the core will leave the page be marked as isolated (as we
    returned an error).  When later trying to putback that page, we will run
    into the WARN_ON_ONCE() in balloon_page_putback().
    
    That handling was changed in commit 3544c4faccb8 ("mm/balloon_compaction:
    stop using __ClearPageMovable()"); before that change, we would have
    tolerated that way of handling it.
    
    To fix it, let's just return 0 in that case, making the core effectively
    just clear the "isolated" flag + freeing it back to the buddy as if the
    migration succeeded.  Note that the new page will also get freed when the
    core puts the last reference.
    
    Note that this also makes it all be more consistent: we will no longer
    unisolate the page in the balloon driver while keeping it marked as being
    isolated in migration core.
    
    This was found by code inspection.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 3544c4faccb8 ("mm/balloon_compaction: stop using __ClearPageMovable()")
    Signed-off-by: David Hildenbrand <[email protected]>
    Cc: Jerrin Shaji George <[email protected]>
    Cc: Broadcom internal kernel review list <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    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/microcode: Fix Entrysign revision check for Zen1/Naples [+ + +]
Author: Andrew Cooper <[email protected]>
Date:   Mon Oct 20 15:41:24 2025 +0100

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

 
xfs: always warn about deprecated mount options [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Sun Oct 26 13:40:05 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 locking in xchk_nlinks_collect_dir [+ + +]
Author: Darrick J. Wong <[email protected]>
Date:   Tue Oct 21 11:30:43 2025 -0700

    xfs: fix locking in xchk_nlinks_collect_dir
    
    commit f477af0cfa0487eddec66ffe10fd9df628ba6f52 upstream.
    
    On a filesystem with parent pointers, xchk_nlinks_collect_dir walks both
    the directory entries (data fork) and the parent pointers (attr fork) to
    determine the correct link count.  Unfortunately I forgot to update the
    lock mode logic to handle the case of a directory whose attr fork is in
    btree format and has not yet been loaded *and* whose data fork doesn't
    need loading.
    
    This leads to a bunch of assertions from xfs/286 in xfs_iread_extents
    because we only took ILOCK_SHARED, not ILOCK_EXCL.  You'd need the rare
    happenstance of a directory with a large number of non-pptr extended
    attributes set and enough memory pressure to cause the directory to be
    evicted and partially reloaded from disk.
    
    I /think/ this only started in 6.18-rc1 because I've started seeing OOM
    errors with the maple tree slab using 70% of memory, and this didn't
    happen in 6.17.  Yay dynamic systems!
    
    Cc: [email protected] # v6.10
    Fixes: 77ede5f44b0d86 ("xfs: walk directory parent pointers to determine backref count")
    Signed-off-by: Darrick J. Wong <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Carlos Maiolino <[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]>

xhci: dbc: fix bogus 1024 byte prefix if ttyDBC read races with stall event [+ + +]
Author: Mathias Nyman <[email protected]>
Date:   Tue Oct 14 01:55:41 2025 +0300

    xhci: dbc: fix bogus 1024 byte prefix if ttyDBC read races with stall event
    
    commit f3d12ec847b945d5d65846c85f062d07d5e73164 upstream.
    
    DbC may add 1024 bogus bytes to the beginneing of the receiving endpoint
    if DbC hw triggers a STALL event before any Transfer Blocks (TRBs) for
    incoming data are queued, but driver handles the event after it queued
    the TRBs.
    
    This is possible as xHCI DbC hardware may trigger spurious STALL transfer
    events even if endpoint is empty. The STALL event contains a pointer
    to the stalled TRB, and "remaining" untransferred data length.
    
    As there are no TRBs queued yet the STALL event will just point to first
    TRB position of the empty ring, with '0' bytes remaining untransferred.
    
    DbC driver is polling for events, and may not handle the STALL event
    before /dev/ttyDBC0 is opened and incoming data TRBs are queued.
    
    The DbC event handler will now assume the first queued TRB (length 1024)
    has stalled with '0' bytes remaining untransferred, and copies the data
    
    This race situation can be practically mitigated by making sure the event
    handler handles all pending transfer events when DbC reaches configured
    state, and only then create dev/ttyDbC0, and start queueing transfers.
    The event handler can this way detect the STALL events on empty rings
    and discard them before any transfers are queued.
    
    This does in practice solve the issue, but still leaves a small possible
    gap for the race to trigger.
    We still need a way to distinguish spurious STALLs on empty rings with '0'
    bytes remaing, from actual STALL events with all bytes transmitted.
    
    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]>