Changelog in Linux kernel 6.6.104

 
ACPI: EC: Add device to acpi_ec_no_wakeup[] qurik list [+ + +]
Author: Werner Sembach <[email protected]>
Date:   Thu May 8 13:16:18 2025 +0200

    ACPI: EC: Add device to acpi_ec_no_wakeup[] qurik list
    
    commit 9cd51eefae3c871440b93c03716c5398f41bdf78 upstream.
    
    Add the TUXEDO InfinityBook Pro AMD Gen9 to the acpi_ec_no_wakeup[]
    quirk list to prevent spurious wakeups.
    
    Signed-off-by: Werner Sembach <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ASoC: codecs: tx-macro: correct tx_macro_component_drv name [+ + +]
Author: Alexey Klimov <[email protected]>
Date:   Wed Aug 6 15:00:30 2025 +0100

    ASoC: codecs: tx-macro: correct tx_macro_component_drv name
    
    [ Upstream commit 43e0da37d5cfb23eec6aeee9422f84d86621ce2b ]
    
    We already have a component driver named "RX-MACRO", which is
    lpass-rx-macro.c. The tx macro component driver's name should
    be "TX-MACRO" accordingly. Fix it.
    
    Cc: Srinivas Kandagatla <[email protected]>
    Signed-off-by: Alexey Klimov <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
atm: atmtcp: Prevent arbitrary write in atmtcp_recv_control(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Aug 21 02:18:24 2025 +0000

    atm: atmtcp: Prevent arbitrary write in atmtcp_recv_control().
    
    [ Upstream commit ec79003c5f9d2c7f9576fc69b8dbda80305cbe3a ]
    
    syzbot reported the splat below. [0]
    
    When atmtcp_v_open() or atmtcp_v_close() is called via connect()
    or close(), atmtcp_send_control() is called to send an in-kernel
    special message.
    
    The message has ATMTCP_HDR_MAGIC in atmtcp_control.hdr.length.
    Also, a pointer of struct atm_vcc is set to atmtcp_control.vcc.
    
    The notable thing is struct atmtcp_control is uAPI but has a
    space for an in-kernel pointer.
    
      struct atmtcp_control {
            struct atmtcp_hdr hdr;  /* must be first */
      ...
            atm_kptr_t vcc;         /* both directions */
      ...
      } __ATM_API_ALIGN;
    
      typedef struct { unsigned char _[8]; } __ATM_API_ALIGN atm_kptr_t;
    
    The special message is processed in atmtcp_recv_control() called
    from atmtcp_c_send().
    
    atmtcp_c_send() is vcc->dev->ops->send() and called from 2 paths:
    
      1. .ndo_start_xmit() (vcc->send() == atm_send_aal0())
      2. vcc_sendmsg()
    
    The problem is sendmsg() does not validate the message length and
    userspace can abuse atmtcp_recv_control() to overwrite any kptr
    by atmtcp_control.
    
    Let's add a new ->pre_send() hook to validate messages from sendmsg().
    
    [0]:
    Oops: general protection fault, probably for non-canonical address 0xdffffc00200000ab: 0000 [#1] SMP KASAN PTI
    KASAN: probably user-memory-access in range [0x0000000100000558-0x000000010000055f]
    CPU: 0 UID: 0 PID: 5865 Comm: syz-executor331 Not tainted 6.17.0-rc1-syzkaller-00215-gbab3ce404553 #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/12/2025
    RIP: 0010:atmtcp_recv_control drivers/atm/atmtcp.c:93 [inline]
    RIP: 0010:atmtcp_c_send+0x1da/0x950 drivers/atm/atmtcp.c:297
    Code: 4d 8d 75 1a 4c 89 f0 48 c1 e8 03 42 0f b6 04 20 84 c0 0f 85 15 06 00 00 41 0f b7 1e 4d 8d b7 60 05 00 00 4c 89 f0 48 c1 e8 03 <42> 0f b6 04 20 84 c0 0f 85 13 06 00 00 66 41 89 1e 4d 8d 75 1c 4c
    RSP: 0018:ffffc90003f5f810 EFLAGS: 00010203
    RAX: 00000000200000ab RBX: 0000000000000000 RCX: 0000000000000000
    RDX: ffff88802a510000 RSI: 00000000ffffffff RDI: ffff888030a6068c
    RBP: ffff88802699fb40 R08: ffff888030a606eb R09: 1ffff1100614c0dd
    R10: dffffc0000000000 R11: ffffffff8718fc40 R12: dffffc0000000000
    R13: ffff888030a60680 R14: 000000010000055f R15: 00000000ffffffff
    FS:  00007f8d7e9236c0(0000) GS:ffff888125c1c000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000000000045ad50 CR3: 0000000075bde000 CR4: 00000000003526f0
    Call Trace:
     <TASK>
     vcc_sendmsg+0xa10/0xc60 net/atm/common.c:645
     sock_sendmsg_nosec net/socket.c:714 [inline]
     __sock_sendmsg+0x219/0x270 net/socket.c:729
     ____sys_sendmsg+0x505/0x830 net/socket.c:2614
     ___sys_sendmsg+0x21f/0x2a0 net/socket.c:2668
     __sys_sendmsg net/socket.c:2700 [inline]
     __do_sys_sendmsg net/socket.c:2705 [inline]
     __se_sys_sendmsg net/socket.c:2703 [inline]
     __x64_sys_sendmsg+0x19b/0x260 net/socket.c:2703
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xfa/0x3b0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f8d7e96a4a9
    Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 51 18 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f8d7e923198 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 00007f8d7e9f4308 RCX: 00007f8d7e96a4a9
    RDX: 0000000000000000 RSI: 0000200000000240 RDI: 0000000000000005
    RBP: 00007f8d7e9f4300 R08: 65732f636f72702f R09: 65732f636f72702f
    R10: 65732f636f72702f R11: 0000000000000246 R12: 00007f8d7e9c10ac
    R13: 00007f8d7e9231a0 R14: 0000200000000200 R15: 0000200000000250
     </TASK>
    Modules linked in:
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Tested-by: [email protected]
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: hci_event: Detect if HCI_EV_NUM_COMP_PKTS is unbalanced [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Wed Aug 20 17:04:00 2025 -0400

    Bluetooth: hci_event: Detect if HCI_EV_NUM_COMP_PKTS is unbalanced
    
    [ Upstream commit 15bf2c6391bafb14a3020d06ec0761bce0803463 ]
    
    This attempts to detect if HCI_EV_NUM_COMP_PKTS contain an unbalanced
    (more than currently considered outstanding) number of packets otherwise
    it could cause the hcon->sent to underflow and loop around breaking the
    tracking of the outstanding packets pending acknowledgment.
    
    Fixes: f42809185896 ("Bluetooth: Simplify num_comp_pkts_evt function")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_event: Mark connection as closed during suspend disconnect [+ + +]
Author: Ludovico de Nittis <[email protected]>
Date:   Tue Aug 12 17:55:27 2025 +0200

    Bluetooth: hci_event: Mark connection as closed during suspend disconnect
    
    [ Upstream commit b7fafbc499b5ee164018eb0eefe9027f5a6aaad2 ]
    
    When suspending, the disconnect command for an active Bluetooth
    connection could be issued, but the corresponding
    `HCI_EV_DISCONN_COMPLETE` event might not be received before the system
    completes the suspend process. This can lead to an inconsistent state.
    
    On resume, the controller may auto-accept reconnections from the same
    device (due to suspend event filters), but these new connections are
    rejected by the kernel which still has connection objects from before
    suspend. Resulting in errors like:
    ```
    kernel: Bluetooth: hci0: ACL packet for unknown connection handle 1
    kernel: Bluetooth: hci0: Ignoring HCI_Connection_Complete for existing
    connection
    ```
    
    This is a btmon snippet that shows the issue:
    ```
    < HCI Command: Disconnect (0x01|0x0006) plen 3
            Handle: 1 Address: 78:20:A5:4A:DF:28 (Nintendo Co.,Ltd)
            Reason: Remote User Terminated Connection (0x13)
    > HCI Event: Command Status (0x0f) plen 4
          Disconnect (0x01|0x0006) ncmd 2
            Status: Success (0x00)
    [...]
    // Host suspends with the event filter set for the device
    // On resume, the device tries to reconnect with a new handle
    
    > HCI Event: Connect Complete (0x03) plen 11
            Status: Success (0x00)
            Handle: 2
            Address: 78:20:A5:4A:DF:28 (Nintendo Co.,Ltd)
    
    // Kernel ignores this event because there is an existing connection
    with
    // handle 1
    ```
    
    By explicitly setting the connection state to BT_CLOSED we can ensure a
    consistent state, even if we don't receive the disconnect complete event
    in time.
    
    Link: https://github.com/bluez/bluez/issues/1226
    Fixes: 182ee45da083 ("Bluetooth: hci_sync: Rework hci_suspend_notifier")
    Signed-off-by: Ludovico de Nittis <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_event: Treat UNKNOWN_CONN_ID on disconnect as success [+ + +]
Author: Ludovico de Nittis <[email protected]>
Date:   Tue Aug 12 17:55:26 2025 +0200

    Bluetooth: hci_event: Treat UNKNOWN_CONN_ID on disconnect as success
    
    [ Upstream commit 2f050a5392b7a0928bf836d9891df4851463512c ]
    
    When the host sends an HCI_OP_DISCONNECT command, the controller may
    respond with the status HCI_ERROR_UNKNOWN_CONN_ID (0x02). E.g. this can
    happen on resume from suspend, if the link was terminated by the remote
    device before the event mask was correctly set.
    
    This is a btmon snippet that shows the issue:
    ```
    > ACL Data RX: Handle 3 flags 0x02 dlen 12
          L2CAP: Disconnection Request (0x06) ident 5 len 4
            Destination CID: 65
            Source CID: 72
    < ACL Data TX: Handle 3 flags 0x00 dlen 12
          L2CAP: Disconnection Response (0x07) ident 5 len 4
            Destination CID: 65
            Source CID: 72
    > ACL Data RX: Handle 3 flags 0x02 dlen 12
          L2CAP: Disconnection Request (0x06) ident 6 len 4
            Destination CID: 64
            Source CID: 71
    < ACL Data TX: Handle 3 flags 0x00 dlen 12
          L2CAP: Disconnection Response (0x07) ident 6 len 4
            Destination CID: 64
            Source CID: 71
    < HCI Command: Set Event Mask (0x03|0x0001) plen 8
            Mask: 0x3dbff807fffbffff
              Inquiry Complete
              Inquiry Result
              Connection Complete
              Connection Request
              Disconnection Complete
              Authentication Complete
    [...]
    < HCI Command: Disconnect (0x01|0x0006) plen 3
            Handle: 3 Address: 78:20:A5:4A:DF:28 (Nintendo Co.,Ltd)
            Reason: Remote User Terminated Connection (0x13)
    > HCI Event: Command Status (0x0f) plen 4
          Disconnect (0x01|0x0006) ncmd 1
            Status: Unknown Connection Identifier (0x02)
    ```
    
    Currently, the hci_cs_disconnect function treats any non-zero status
    as a command failure. This can be misleading because the connection is
    indeed being terminated and the controller is confirming that is has no
    knowledge of that connection handle. Meaning that the initial request of
    disconnecting a device should be treated as done.
    
    With this change we allow the function to proceed, following the success
    path, which correctly calls `mgmt_device_disconnected` and ensures a
    consistent state.
    
    Link: https://github.com/bluez/bluez/issues/1226
    Fixes: 182ee45da083 ("Bluetooth: hci_sync: Rework hci_suspend_notifier")
    Signed-off-by: Ludovico de Nittis <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_sync: fix set_local_name race condition [+ + +]
Author: Pavel Shpakovskiy <[email protected]>
Date:   Fri Aug 22 12:20:55 2025 +0300

    Bluetooth: hci_sync: fix set_local_name race condition
    
    [ Upstream commit 6bbd0d3f0c23fc53c17409dd7476f38ae0ff0cd9 ]
    
    Function set_name_sync() uses hdev->dev_name field to send
    HCI_OP_WRITE_LOCAL_NAME command, but copying from data to hdev->dev_name
    is called after mgmt cmd was queued, so it is possible that function
    set_name_sync() will read old name value.
    
    This change adds name as a parameter for function hci_update_name_sync()
    to avoid race condition.
    
    Fixes: 6f6ff38a1e14 ("Bluetooth: hci_sync: Convert MGMT_OP_SET_LOCAL_NAME")
    Signed-off-by: Pavel Shpakovskiy <[email protected]>
    Reviewed-by: Paul Menzel <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dma/pool: Ensure DMA_DIRECT_REMAP allocations are decrypted [+ + +]
Author: Shanker Donthineni <[email protected]>
Date:   Mon Aug 11 13:17:59 2025 -0500

    dma/pool: Ensure DMA_DIRECT_REMAP allocations are decrypted
    
    commit 89a2d212bdb4bc29bed8e7077abe054b801137ea upstream.
    
    When CONFIG_DMA_DIRECT_REMAP is enabled, atomic pool pages are
    remapped via dma_common_contiguous_remap() using the supplied
    pgprot. Currently, the mapping uses
    pgprot_dmacoherent(PAGE_KERNEL), which leaves the memory encrypted
    on systems with memory encryption enabled (e.g., ARM CCA Realms).
    
    This can cause the DMA layer to fail or crash when accessing the
    memory, as the underlying physical pages are not configured as
    expected.
    
    Fix this by requesting a decrypted mapping in the vmap() call:
    pgprot_decrypted(pgprot_dmacoherent(PAGE_KERNEL))
    
    This ensures that atomic pool memory is consistently mapped
    unencrypted.
    
    Cc: [email protected]
    Signed-off-by: Shanker Donthineni <[email protected]>
    Reviewed-by: Catalin Marinas <[email protected]>
    Signed-off-by: Marek Szyprowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/msm: Defer fd_install in SUBMIT ioctl [+ + +]
Author: Rob Clark <[email protected]>
Date:   Wed Jul 23 13:28:22 2025 -0700

    drm/msm: Defer fd_install in SUBMIT ioctl
    
    [ Upstream commit f22853435bbd1e9836d0dce7fd99c040b94c2bf1 ]
    
    Avoid fd_install() until there are no more potential error paths, to
    avoid put_unused_fd() after the fd is made visible to userspace.
    
    Fixes: 68dc6c2d5eec ("drm/msm: Fix submit error-path leaks")
    Reported-by: Dan Carpenter <[email protected]>
    Signed-off-by: Rob Clark <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/665363/
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/nouveau/disp: Always accept linear modifier [+ + +]
Author: James Jones <[email protected]>
Date:   Mon Aug 11 15:00:16 2025 -0700

    drm/nouveau/disp: Always accept linear modifier
    
    commit e2fe0c54fb7401e6ecd3c10348519ab9e23bd639 upstream.
    
    On some chipsets, which block-linear modifiers are
    supported is format-specific. However, linear
    modifiers are always be supported. The prior
    modifier filtering logic was not accounting for
    the linear case.
    
    Cc: [email protected]
    Fixes: c586f30bf74c ("drm/nouveau/kms: Add format mod prop to base/ovly/nvdisp")
    Signed-off-by: James Jones <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Danilo Krummrich <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/nouveau: remove unused increment in gm200_flcn_pio_imem_wr [+ + +]
Author: Timur Tabi <[email protected]>
Date:   Tue Aug 12 19:10:03 2025 -0500

    drm/nouveau: remove unused increment in gm200_flcn_pio_imem_wr
    
    [ Upstream commit f529b8915543fb9ceb732cec5571f7fe12bc9530 ]
    
    The 'tag' parameter is passed by value and is not actually used after
    being incremented, so remove the increment.  It's the function that calls
    gm200_flcn_pio_imem_wr that is supposed to (and does) increment 'tag'.
    
    Fixes: 0e44c2170876 ("drm/nouveau/flcn: new code to load+boot simple HS FWs (VPR scrubber)")
    Reviewed-by: Philipp Stanner <[email protected]>
    Signed-off-by: Timur Tabi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Danilo Krummrich <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/nouveau: remove unused memory target test [+ + +]
Author: Timur Tabi <[email protected]>
Date:   Tue Aug 12 19:10:04 2025 -0500

    drm/nouveau: remove unused memory target test
    
    [ Upstream commit 64c722b5e7f6b909b0e448e580f64628a0d76208 ]
    
    The memory target check is a hold-over from a refactor.  It's harmless
    but distracting, so just remove it.
    
    Fixes: 2541626cfb79 ("drm/nouveau/acr: use common falcon HS FW code for ACR FWs")
    Signed-off-by: Timur Tabi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Danilo Krummrich <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dt-bindings: display/msm: qcom,mdp5: drop lut clock [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Sat Aug 9 11:36:54 2025 +0300

    dt-bindings: display/msm: qcom,mdp5: drop lut clock
    
    [ Upstream commit 7ab3b7579a6d2660a3425b9ea93b9a140b07f49c ]
    
    None of MDP5 platforms have a LUT clock on the display-controller, it
    was added by the mistake. Drop it, fixing DT warnings on MSM8976 /
    MSM8956 platforms. Technically it's an ABI break, but no other platforms
    are affected.
    
    Fixes: 385c8ac763b3 ("dt-bindings: display/msm: convert MDP5 schema to YAML format")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Acked-by: Rob Herring (Arm) <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/667822/
    Signed-off-by: Rob Clark <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
efivarfs: Fix slab-out-of-bounds in efivarfs_d_compare [+ + +]
Author: Li Nan <[email protected]>
Date:   Wed Aug 27 15:39:54 2025 +0800

    efivarfs: Fix slab-out-of-bounds in efivarfs_d_compare
    
    [ Upstream commit a6358f8cf64850f3f27857b8ed8c1b08cfc4685c ]
    
    Observed on kernel 6.6 (present on master as well):
    
      BUG: KASAN: slab-out-of-bounds in memcmp+0x98/0xd0
      Call trace:
       kasan_check_range+0xe8/0x190
       __asan_loadN+0x1c/0x28
       memcmp+0x98/0xd0
       efivarfs_d_compare+0x68/0xd8
       __d_lookup_rcu_op_compare+0x178/0x218
       __d_lookup_rcu+0x1f8/0x228
       d_alloc_parallel+0x150/0x648
       lookup_open.isra.0+0x5f0/0x8d0
       open_last_lookups+0x264/0x828
       path_openat+0x130/0x3f8
       do_filp_open+0x114/0x248
       do_sys_openat2+0x340/0x3c0
       __arm64_sys_openat+0x120/0x1a0
    
    If dentry->d_name.len < EFI_VARIABLE_GUID_LEN , 'guid' can become
    negative, leadings to oob. The issue can be triggered by parallel
    lookups using invalid filename:
    
      T1                    T2
      lookup_open
       ->lookup
        simple_lookup
         d_add
         // invalid dentry is added to hash list
    
                            lookup_open
                             d_alloc_parallel
                              __d_lookup_rcu
                               __d_lookup_rcu_op_compare
                                hlist_bl_for_each_entry_rcu
                                // invalid dentry can be retrieved
                                 ->d_compare
                                  efivarfs_d_compare
                                  // oob
    
    Fix it by checking 'guid' before cmp.
    
    Fixes: da27a24383b2 ("efivarfs: guid part of filenames are case-insensitive")
    Signed-off-by: Li Nan <[email protected]>
    Signed-off-by: Wu Guanghao <[email protected]>
    Signed-off-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
erofs: fix atomic context detection when !CONFIG_DEBUG_LOCK_ALLOC [+ + +]
Author: Junli Liu <[email protected]>
Date:   Tue Aug 5 09:19:58 2025 +0800

    erofs: fix atomic context detection when !CONFIG_DEBUG_LOCK_ALLOC
    
    [ Upstream commit c99fab6e80b76422741d34aafc2f930a482afbdd ]
    
    Since EROFS handles decompression in non-atomic contexts due to
    uncontrollable decompression latencies and vmap() usage, it tries
    to detect atomic contexts and only kicks off a kworker on demand
    in order to reduce unnecessary scheduling overhead.
    
    However, the current approach is insufficient and can lead to
    sleeping function calls in invalid contexts, causing kernel
    warnings and potential system instability. See the stacktrace [1]
    and previous discussion [2].
    
    The current implementation only checks rcu_read_lock_any_held(),
    which behaves inconsistently across different kernel configurations:
    
    - When CONFIG_DEBUG_LOCK_ALLOC is enabled: correctly detects
      RCU critical sections by checking rcu_lock_map
    - When CONFIG_DEBUG_LOCK_ALLOC is disabled: compiles to
      "!preemptible()", which only checks preempt_count and misses
      RCU critical sections
    
    This patch introduces z_erofs_in_atomic() to provide comprehensive
    atomic context detection:
    
    1. Check RCU preemption depth when CONFIG_PREEMPTION is enabled,
       as RCU critical sections may not affect preempt_count but still
       require atomic handling
    
    2. Always use async processing when CONFIG_PREEMPT_COUNT is disabled,
       as preemption state cannot be reliably determined
    
    3. Fall back to standard preemptible() check for remaining cases
    
    The function replaces the previous complex condition check and ensures
    that z_erofs always uses (kthread_)work in atomic contexts to minimize
    scheduling overhead and prevent sleeping in invalid contexts.
    
    [1] Problem stacktrace
    [ 61.266692] BUG: sleeping function called from invalid context at kernel/locking/rtmutex_api.c:510
    [ 61.266702] in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 107, name: irq/54-ufshcd
    [ 61.266704] preempt_count: 0, expected: 0
    [ 61.266705] RCU nest depth: 2, expected: 0
    [ 61.266710] CPU: 0 UID: 0 PID: 107 Comm: irq/54-ufshcd Tainted: G W O 6.12.17 #1
    [ 61.266714] Tainted: [W]=WARN, [O]=OOT_MODULE
    [ 61.266715] Hardware name: schumacher (DT)
    [ 61.266717] Call trace:
    [ 61.266718] dump_backtrace+0x9c/0x100
    [ 61.266727] show_stack+0x20/0x38
    [ 61.266728] dump_stack_lvl+0x78/0x90
    [ 61.266734] dump_stack+0x18/0x28
    [ 61.266736] __might_resched+0x11c/0x180
    [ 61.266743] __might_sleep+0x64/0xc8
    [ 61.266745] mutex_lock+0x2c/0xc0
    [ 61.266748] z_erofs_decompress_queue+0xe8/0x978
    [ 61.266753] z_erofs_decompress_kickoff+0xa8/0x190
    [ 61.266756] z_erofs_endio+0x168/0x288
    [ 61.266758] bio_endio+0x160/0x218
    [ 61.266762] blk_update_request+0x244/0x458
    [ 61.266766] scsi_end_request+0x38/0x278
    [ 61.266770] scsi_io_completion+0x4c/0x600
    [ 61.266772] scsi_finish_command+0xc8/0xe8
    [ 61.266775] scsi_complete+0x88/0x148
    [ 61.266777] blk_mq_complete_request+0x3c/0x58
    [ 61.266780] scsi_done_internal+0xcc/0x158
    [ 61.266782] scsi_done+0x1c/0x30
    [ 61.266783] ufshcd_compl_one_cqe+0x12c/0x438
    [ 61.266786] __ufshcd_transfer_req_compl+0x2c/0x78
    [ 61.266788] ufshcd_poll+0xf4/0x210
    [ 61.266789] ufshcd_transfer_req_compl+0x50/0x88
    [ 61.266791] ufshcd_intr+0x21c/0x7c8
    [ 61.266792] irq_forced_thread_fn+0x44/0xd8
    [ 61.266796] irq_thread+0x1a4/0x358
    [ 61.266799] kthread+0x12c/0x138
    [ 61.266802] ret_from_fork+0x10/0x20
    
    [2] https://lore.kernel.org/r/58b661d0-0ebb-4b45-a10d-c5927fb791cd@paulmck-laptop
    
    Signed-off-by: Junli Liu <[email protected]>
    Reviewed-by: Gao Xiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [ Gao Xiang: Use the original trace in v1. ]
    Signed-off-by: Gao Xiang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/smb: Fix inconsistent refcnt update [+ + +]
Author: Shuhao Fu <[email protected]>
Date:   Thu Aug 28 02:24:19 2025 +0800

    fs/smb: Fix inconsistent refcnt update
    
    commit ab529e6ca1f67bcf31f3ea80c72bffde2e9e053e upstream.
    
    A possible inconsistent update of refcount was identified in `smb2_compound_op`.
    Such inconsistent update could lead to possible resource leaks.
    
    Why it is a possible bug:
    1. In the comment section of the function, it clearly states that the
    reference to `cfile` should be dropped after calling this function.
    2. Every control flow path would check and drop the reference to
    `cfile`, except the patched one.
    3. Existing callers would not handle refcount update of `cfile` if
    -ENOMEM is returned.
    
    To fix the bug, an extra goto label "out" is added, to make sure that the
    cleanup logic would always be respected. As the problem is caused by the
    allocation failure of `vars`, the cleanup logic between label "finished"
    and "out" can be safely ignored. According to the definition of function
    `is_replayable_error`, the error code of "-ENOMEM" is not recoverable.
    Therefore, the replay logic also gets ignored.
    
    Signed-off-by: Shuhao Fu <[email protected]>
    Acked-by: Paulo Alcantara (Red Hat) <[email protected]>
    Cc: [email protected]
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ftrace: Fix potential warning in trace_printk_seq during ftrace_dump [+ + +]
Author: Tengda Wu <[email protected]>
Date:   Fri Aug 22 03:33:43 2025 +0000

    ftrace: Fix potential warning in trace_printk_seq during ftrace_dump
    
    [ Upstream commit 4013aef2ced9b756a410f50d12df9ebe6a883e4a ]
    
    When calling ftrace_dump_one() concurrently with reading trace_pipe,
    a WARN_ON_ONCE() in trace_printk_seq() can be triggered due to a race
    condition.
    
    The issue occurs because:
    
    CPU0 (ftrace_dump)                              CPU1 (reader)
    echo z > /proc/sysrq-trigger
    
    !trace_empty(&iter)
    trace_iterator_reset(&iter) <- len = size = 0
                                                    cat /sys/kernel/tracing/trace_pipe
    trace_find_next_entry_inc(&iter)
      __find_next_entry
        ring_buffer_empty_cpu <- all empty
      return NULL
    
    trace_printk_seq(&iter.seq)
      WARN_ON_ONCE(s->seq.len >= s->seq.size)
    
    In the context between trace_empty() and trace_find_next_entry_inc()
    during ftrace_dump, the ring buffer data was consumed by other readers.
    This caused trace_find_next_entry_inc to return NULL, failing to populate
    `iter.seq`. At this point, due to the prior trace_iterator_reset, both
    `iter.seq.len` and `iter.seq.size` were set to 0. Since they are equal,
    the WARN_ON_ONCE condition is triggered.
    
    Move the trace_printk_seq() into the if block that checks to make sure the
    return value of trace_find_next_entry_inc() is non-NULL in
    ftrace_dump_one(), ensuring the 'iter.seq' is properly populated before
    subsequent operations.
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: d769041f8653 ("ring_buffer: implement new locking")
    Signed-off-by: Tengda Wu <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
HID: asus: fix UAF via HID_CLAIMED_INPUT validation [+ + +]
Author: Qasim Ijaz <[email protected]>
Date:   Sun Aug 10 19:10:41 2025 +0100

    HID: asus: fix UAF via HID_CLAIMED_INPUT validation
    
    commit d3af6ca9a8c34bbd8cff32b469b84c9021c9e7e4 upstream.
    
    After hid_hw_start() is called hidinput_connect() will eventually be
    called to set up the device with the input layer since the
    HID_CONNECT_DEFAULT connect mask is used. During hidinput_connect()
    all input and output reports are processed and corresponding hid_inputs
    are allocated and configured via hidinput_configure_usages(). This
    process involves slot tagging report fields and configuring usages
    by setting relevant bits in the capability bitmaps. However it is possible
    that the capability bitmaps are not set at all leading to the subsequent
    hidinput_has_been_populated() check to fail leading to the freeing of the
    hid_input and the underlying input device.
    
    This becomes problematic because a malicious HID device like a
    ASUS ROG N-Key keyboard can trigger the above scenario via a
    specially crafted descriptor which then leads to a user-after-free
    when the name of the freed input device is written to later on after
    hid_hw_start(). Below, report 93 intentionally utilises the
    HID_UP_UNDEFINED Usage Page which is skipped during usage
    configuration, leading to the frees.
    
    0x05, 0x0D,        // Usage Page (Digitizer)
    0x09, 0x05,        // Usage (Touch Pad)
    0xA1, 0x01,        // Collection (Application)
    0x85, 0x0D,        //   Report ID (13)
    0x06, 0x00, 0xFF,  //   Usage Page (Vendor Defined 0xFF00)
    0x09, 0xC5,        //   Usage (0xC5)
    0x15, 0x00,        //   Logical Minimum (0)
    0x26, 0xFF, 0x00,  //   Logical Maximum (255)
    0x75, 0x08,        //   Report Size (8)
    0x95, 0x04,        //   Report Count (4)
    0xB1, 0x02,        //   Feature (Data,Var,Abs)
    0x85, 0x5D,        //   Report ID (93)
    0x06, 0x00, 0x00,  //   Usage Page (Undefined)
    0x09, 0x01,        //   Usage (0x01)
    0x15, 0x00,        //   Logical Minimum (0)
    0x26, 0xFF, 0x00,  //   Logical Maximum (255)
    0x75, 0x08,        //   Report Size (8)
    0x95, 0x1B,        //   Report Count (27)
    0x81, 0x02,        //   Input (Data,Var,Abs)
    0xC0,              // End Collection
    
    Below is the KASAN splat after triggering the UAF:
    
    [   21.672709] ==================================================================
    [   21.673700] BUG: KASAN: slab-use-after-free in asus_probe+0xeeb/0xf80
    [   21.673700] Write of size 8 at addr ffff88810a0ac000 by task kworker/1:2/54
    [   21.673700]
    [   21.673700] CPU: 1 UID: 0 PID: 54 Comm: kworker/1:2 Not tainted 6.16.0-rc4-g9773391cf4dd-dirty #36 PREEMPT(voluntary)
    [   21.673700] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
    [   21.673700] Call Trace:
    [   21.673700]  <TASK>
    [   21.673700]  dump_stack_lvl+0x5f/0x80
    [   21.673700]  print_report+0xd1/0x660
    [   21.673700]  kasan_report+0xe5/0x120
    [   21.673700]  __asan_report_store8_noabort+0x1b/0x30
    [   21.673700]  asus_probe+0xeeb/0xf80
    [   21.673700]  hid_device_probe+0x2ee/0x700
    [   21.673700]  really_probe+0x1c6/0x6b0
    [   21.673700]  __driver_probe_device+0x24f/0x310
    [   21.673700]  driver_probe_device+0x4e/0x220
    [...]
    [   21.673700]
    [   21.673700] Allocated by task 54:
    [   21.673700]  kasan_save_stack+0x3d/0x60
    [   21.673700]  kasan_save_track+0x18/0x40
    [   21.673700]  kasan_save_alloc_info+0x3b/0x50
    [   21.673700]  __kasan_kmalloc+0x9c/0xa0
    [   21.673700]  __kmalloc_cache_noprof+0x139/0x340
    [   21.673700]  input_allocate_device+0x44/0x370
    [   21.673700]  hidinput_connect+0xcb6/0x2630
    [   21.673700]  hid_connect+0xf74/0x1d60
    [   21.673700]  hid_hw_start+0x8c/0x110
    [   21.673700]  asus_probe+0x5a3/0xf80
    [   21.673700]  hid_device_probe+0x2ee/0x700
    [   21.673700]  really_probe+0x1c6/0x6b0
    [   21.673700]  __driver_probe_device+0x24f/0x310
    [   21.673700]  driver_probe_device+0x4e/0x220
    [...]
    [   21.673700]
    [   21.673700] Freed by task 54:
    [   21.673700]  kasan_save_stack+0x3d/0x60
    [   21.673700]  kasan_save_track+0x18/0x40
    [   21.673700]  kasan_save_free_info+0x3f/0x60
    [   21.673700]  __kasan_slab_free+0x3c/0x50
    [   21.673700]  kfree+0xcf/0x350
    [   21.673700]  input_dev_release+0xab/0xd0
    [   21.673700]  device_release+0x9f/0x220
    [   21.673700]  kobject_put+0x12b/0x220
    [   21.673700]  put_device+0x12/0x20
    [   21.673700]  input_free_device+0x4c/0xb0
    [   21.673700]  hidinput_connect+0x1862/0x2630
    [   21.673700]  hid_connect+0xf74/0x1d60
    [   21.673700]  hid_hw_start+0x8c/0x110
    [   21.673700]  asus_probe+0x5a3/0xf80
    [   21.673700]  hid_device_probe+0x2ee/0x700
    [   21.673700]  really_probe+0x1c6/0x6b0
    [   21.673700]  __driver_probe_device+0x24f/0x310
    [   21.673700]  driver_probe_device+0x4e/0x220
    [...]
    
    Fixes: 9ce12d8be12c ("HID: asus: Add i2c touchpad support")
    Cc: [email protected]
    Signed-off-by: Qasim Ijaz <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: hid-ntrig: fix unable to handle page fault in ntrig_report_version() [+ + +]
Author: Minjong Kim <[email protected]>
Date:   Wed Aug 13 19:30:22 2025 +0900

    HID: hid-ntrig: fix unable to handle page fault in ntrig_report_version()
    
    commit 185c926283da67a72df20a63a5046b3b4631b7d9 upstream.
    
    in ntrig_report_version(), hdev parameter passed from hid_probe().
    sending descriptor to /dev/uhid can make hdev->dev.parent->parent to null
    if hdev->dev.parent->parent is null, usb_dev has
    invalid address(0xffffffffffffff58) that hid_to_usb_dev(hdev) returned
    when usb_rcvctrlpipe() use usb_dev,it trigger
    page fault error for address(0xffffffffffffff58)
    
    add null check logic to ntrig_report_version()
    before calling hid_to_usb_dev()
    
    Signed-off-by: Minjong Kim <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: input: rename hidinput_set_battery_charge_status() [+ + +]
Author: José Expósito <[email protected]>
Date:   Thu Aug 14 12:39:39 2025 +0200

    HID: input: rename hidinput_set_battery_charge_status()
    
    [ Upstream commit a82231b2a8712d0218fc286a9b0da328d419a3f4 ]
    
    In preparation for a patch fixing a bug affecting
    hidinput_set_battery_charge_status(), rename the function to
    hidinput_update_battery_charge_status() and move it up so it can be used
    by hidinput_update_battery().
    
    Refactor, no functional changes.
    
    Tested-by: 卢国宏 <[email protected]>
    Signed-off-by: José Expósito <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Stable-dep-of: e94536e1d181 ("HID: input: report battery status changes immediately")
    Signed-off-by: Sasha Levin <[email protected]>

HID: input: report battery status changes immediately [+ + +]
Author: José Expósito <[email protected]>
Date:   Thu Aug 14 12:39:40 2025 +0200

    HID: input: report battery status changes immediately
    
    [ Upstream commit e94536e1d1818b0989aa19b443b7089f50133c35 ]
    
    Previously, the battery status (charging/discharging) was not reported
    immediately to user-space. 
    
    For most input devices, this wasn't problematic because changing their
    battery status requires connecting them to a different bus.
    For example, a gamepad would report a discharging status while
    connected via Bluetooth and a charging status while connected via USB.
    
    However, certain devices are not connected or disconnected when their
    battery status changes. For example, a phone battery changes its status
    without connecting or disconnecting it.
    In these cases, the battery status was not reported immediately to user
    space.
    
    Report battery status changes immediately to user space to support
    these kinds of devices.
    
    Fixes: a608dc1c0639 ("HID: input: map battery system charging")
    Reported-by: 卢国宏 <[email protected]>
    Closes: https://lore.kernel.org/linux-input/aI49Im0sGb6fpgc8@fedora/T/
    Tested-by: 卢国宏 <[email protected]>
    Signed-off-by: José Expósito <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

HID: logitech: Add ids for G PRO 2 LIGHTSPEED [+ + +]
Author: Matt Coffin <[email protected]>
Date:   Wed Aug 20 01:49:51 2025 -0600

    HID: logitech: Add ids for G PRO 2 LIGHTSPEED
    
    commit ab1bb82f3db20e23eace06db52031b1164a110c2 upstream.
    
    Adds support for the G PRO 2 LIGHTSPEED Wireless via it's nano receiver
    or directly. This nano receiver appears to work identically to the 1_1
    receiver for the case I've verified, which is the battery status through
    lg-hidpp.
    
    The same appears to be the case wired, sharing much with the Pro X
    Superlight 2; differences seemed to lie in userland configuration rather
    than in interfaces used by hid_logitech_hidpp on the kernel side.
    
    I verified the sysfs interface for battery charge/discharge status, and
    capacity read to be working on my 910-007290 device (white).
    
    Signed-off-by: Matt Coffin <[email protected]>
    Reviewed-by: Bastien Nocera <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: mcp2221: Don't set bus speed on every transfer [+ + +]
Author: Hamish Martin <[email protected]>
Date:   Wed Oct 25 16:55:13 2023 +1300

    HID: mcp2221: Don't set bus speed on every transfer
    
    commit 02a46753601a24e1673d9c28173121055e8e6cc9 upstream.
    
    Since the initial commit of this driver the I2C bus speed has been
    reconfigured for every single transfer. This is despite the fact that we
    never change the speed and it is never "lost" by the chip.
    Upon investigation we find that what was really happening was that the
    setting of the bus speed had the side effect of cancelling a previous
    failed command if there was one, thereby freeing the bus. This is the
    part that was actually required to keep the bus operational in the face
    of failed commands.
    
    Instead of always setting the speed, we now correctly cancel any failed
    commands as they are detected. This means we can just set the bus speed
    at probe time and remove the previous speed sets on each transfer.
    This has the effect of improving performance and reducing the number of
    commands required to complete transfers.
    
    Signed-off-by: Hamish Martin <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Fixes: 67a95c21463d ("HID: mcp2221: add usb to i2c-smbus host bridge")
    [[email protected]: backport to stable, up to 6.8. Add "Fixes" tag]
    Signed-off-by: Romain Sioen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: mcp2221: Handle reads greater than 60 bytes [+ + +]
Author: Hamish Martin <[email protected]>
Date:   Wed Oct 25 16:55:14 2023 +1300

    HID: mcp2221: Handle reads greater than 60 bytes
    
    commit 2682468671aa0b4d52ae09779b48212a80d71b91 upstream.
    
    When a user requests more than 60 bytes of data the MCP2221 must chunk
    the data in chunks up to 60 bytes long (see command/response code 0x40
    in the datasheet).
    In order to signal that the device has more data the (undocumented) byte
    at byte index 2 of the Get I2C Data response uses the value 0x54. This
    contrasts with the case for the final data chunk where the value
    returned is 0x55 (MCP2221_I2C_READ_COMPL). The fact that 0x55 was not
    returned in the response was interpreted by the driver as a failure
    meaning that all reads of more than 60 bytes would fail.
    
    Add support for reads that are split over multiple chunks by looking for
    the response code indicating that more data is expected and continuing
    the read as the code intended. Some timing delays are required to ensure
    the chip has time to refill its FIFO as data is read in from the I2C
    bus. This timing has been tested in my system when configured for bus
    speeds of 50KHz, 100KHz, and 400KHz and operates well.
    
    Signed-off-by: Hamish Martin <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Fixes: 67a95c21463d0 ("HID: mcp2221: add usb to i2c-smbus host bridge")
    [[email protected]: backport to stable, up to 6.8. Add "Fixes" tag]
    Signed-off-by: Romain Sioen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: multitouch: fix slab out-of-bounds access in mt_report_fixup() [+ + +]
Author: Qasim Ijaz <[email protected]>
Date:   Sun Aug 10 19:09:24 2025 +0100

    HID: multitouch: fix slab out-of-bounds access in mt_report_fixup()
    
    commit 0379eb8691b9c4477da0277ae0832036ca4410b4 upstream.
    
    A malicious HID device can trigger a slab out-of-bounds during
    mt_report_fixup() by passing in report descriptor smaller than
    607 bytes. mt_report_fixup() attempts to patch byte offset 607
    of the descriptor with 0x25 by first checking if byte offset
    607 is 0x15 however it lacks bounds checks to verify if the
    descriptor is big enough before conducting this check. Fix
    this bug by ensuring the descriptor size is at least 608
    bytes before accessing it.
    
    Below is the KASAN splat after the out of bounds access happens:
    
    [   13.671954] ==================================================================
    [   13.672667] BUG: KASAN: slab-out-of-bounds in mt_report_fixup+0x103/0x110
    [   13.673297] Read of size 1 at addr ffff888103df39df by task kworker/0:1/10
    [   13.673297]
    [   13.673297] CPU: 0 UID: 0 PID: 10 Comm: kworker/0:1 Not tainted 6.15.0-00005-gec5d573d83f4-dirty #3
    [   13.673297] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/04
    [   13.673297] Call Trace:
    [   13.673297]  <TASK>
    [   13.673297]  dump_stack_lvl+0x5f/0x80
    [   13.673297]  print_report+0xd1/0x660
    [   13.673297]  kasan_report+0xe5/0x120
    [   13.673297]  __asan_report_load1_noabort+0x18/0x20
    [   13.673297]  mt_report_fixup+0x103/0x110
    [   13.673297]  hid_open_report+0x1ef/0x810
    [   13.673297]  mt_probe+0x422/0x960
    [   13.673297]  hid_device_probe+0x2e2/0x6f0
    [   13.673297]  really_probe+0x1c6/0x6b0
    [   13.673297]  __driver_probe_device+0x24f/0x310
    [   13.673297]  driver_probe_device+0x4e/0x220
    [   13.673297]  __device_attach_driver+0x169/0x320
    [   13.673297]  bus_for_each_drv+0x11d/0x1b0
    [   13.673297]  __device_attach+0x1b8/0x3e0
    [   13.673297]  device_initial_probe+0x12/0x20
    [   13.673297]  bus_probe_device+0x13d/0x180
    [   13.673297]  device_add+0xe3a/0x1670
    [   13.673297]  hid_add_device+0x31d/0xa40
    [...]
    
    Fixes: c8000deb6836 ("HID: multitouch: Add support for GT7868Q")
    Cc: [email protected]
    Signed-off-by: Qasim Ijaz <[email protected]>
    Reviewed-by: Jiri Slaby <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: quirks: add support for Legion Go dual dinput modes [+ + +]
Author: Antheas Kapenekakis <[email protected]>
Date:   Sun Aug 3 18:02:53 2025 +0200

    HID: quirks: add support for Legion Go dual dinput modes
    
    commit 1f3214aae9f49faf495f3836216afbc6c5400b2e upstream.
    
    The Legion Go features detachable controllers which support a dual
    dinput mode. In this mode, the controllers appear under a single HID
    device with two applications.
    
    Currently, both controllers appear under the same event device, causing
    their controls to be mixed up. This patch separates the two so that
    they can be used independently.
    
    In addition, the latest firmware update for the Legion Go swaps the IDs
    to the ones used by the Legion Go 2, so add those IDs as well.
    
    [[email protected]: improved shortlog]
    Signed-off-by: Antheas Kapenekakis <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

HID: wacom: Add a new Art Pen 2 [+ + +]
Author: Ping Cheng <[email protected]>
Date:   Sun Aug 10 22:40:30 2025 -0700

    HID: wacom: Add a new Art Pen 2
    
    commit 9fc51941d9e7793da969b2c66e6f8213c5b1237f upstream.
    
    Signed-off-by: Ping Cheng <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ice: fix incorrect counter for buffer allocation failures [+ + +]
Author: Michal Kubiak <[email protected]>
Date:   Fri Aug 8 17:53:10 2025 +0200

    ice: fix incorrect counter for buffer allocation failures
    
    [ Upstream commit b1a0c977c6f1130f7dd125ee3db8c2435d7e3d41 ]
    
    Currently, the driver increments `alloc_page_failed` when buffer allocation fails
    in `ice_clean_rx_irq()`. However, this counter is intended for page allocation
    failures, not buffer allocation issues.
    
    This patch corrects the counter by incrementing `alloc_buf_failed` instead,
    ensuring accurate statistics reporting for buffer allocation failures.
    
    Fixes: 2fba7dc5157b ("ice: Add support for XDP multi-buffer on Rx side")
    Reported-by: Jacob Keller <[email protected]>
    Suggested-by: Paul Menzel <[email protected]>
    Signed-off-by: Michal Kubiak <[email protected]>
    Reviewed-by: Paul Menzel <[email protected]>
    Reviewed-by: Jason Xing <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Tested-by: Priya Singh <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: gather page_count()'s of each frag right before XDP prog call [+ + +]
Author: Maciej Fijalkowski <[email protected]>
Date:   Thu Jan 23 16:01:17 2025 +0100

    ice: gather page_count()'s of each frag right before XDP prog call
    
    [ Upstream commit 11c4aa074d547d825b19cd8d9f288254d89d805c ]
    
    If we store the pgcnt on few fragments while being in the middle of
    gathering the whole frame and we stumbled upon DD bit not being set, we
    terminate the NAPI Rx processing loop and come back later on. Then on
    next NAPI execution we work on previously stored pgcnt.
    
    Imagine that second half of page was used actively by networking stack
    and by the time we came back, stack is not busy with this page anymore
    and decremented the refcnt. The page reuse algorithm in this case should
    be good to reuse the page but given the old refcnt it will not do so and
    attempt to release the page via page_frag_cache_drain() with
    pagecnt_bias used as an arg. This in turn will result in negative refcnt
    on struct page, which was initially observed by Xu Du.
    
    Therefore, move the page count storage from ice_get_rx_buf() to a place
    where we are sure that whole frame has been collected, but before
    calling XDP program as it internally can also change the page count of
    fragments belonging to xdp_buff.
    
    Fixes: ac0753391195 ("ice: Store page count inside ice_rx_buf")
    Reported-and-tested-by: Xu Du <[email protected]>
    Reviewed-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Co-developed-by: Jacob Keller <[email protected]>
    Signed-off-by: Jacob Keller <[email protected]>
    Signed-off-by: Maciej Fijalkowski <[email protected]>
    Tested-by: Chandan Kumar Rout <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Stable-dep-of: b1a0c977c6f1 ("ice: fix incorrect counter for buffer allocation failures")
    Signed-off-by: Sasha Levin <[email protected]>

ice: Introduce ice_xdp_buff [+ + +]
Author: Larysa Zaremba <[email protected]>
Date:   Tue Dec 5 22:08:33 2023 +0100

    ice: Introduce ice_xdp_buff
    
    [ Upstream commit d951c14ad237b087f0d1377c44932fcc0b322c40 ]
    
    In order to use XDP hints via kfuncs we need to put
    RX descriptor and miscellaneous data next to xdp_buff.
    Same as in hints implementations in other drivers, we achieve
    this through putting xdp_buff into a child structure.
    
    Currently, xdp_buff is stored in the ring structure,
    so replace it with union that includes child structure.
    This way enough memory is available while existing XDP code
    remains isolated from hints.
    
    Minimum size of the new child structure (ice_xdp_buff) is exactly
    64 bytes (single cache line). To place it at the start of a cache line,
    move 'next' field from CL1 to CL4, as it isn't used often. This still
    leaves 192 bits available in CL3 for packet context extensions.
    
    Signed-off-by: Larysa Zaremba <[email protected]>
    Reviewed-by: Maciej Fijalkowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Stable-dep-of: b1a0c977c6f1 ("ice: fix incorrect counter for buffer allocation failures")
    Signed-off-by: Sasha Levin <[email protected]>

ice: stop storing XDP verdict within ice_rx_buf [+ + +]
Author: Maciej Fijalkowski <[email protected]>
Date:   Thu Jan 23 16:01:18 2025 +0100

    ice: stop storing XDP verdict within ice_rx_buf
    
    [ Upstream commit 468a1952df78f65c5991b7ac885c8b5b7dd87bab ]
    
    Idea behind having ice_rx_buf::act was to simplify and speed up the Rx
    data path by walking through buffers that were representing cleaned HW
    Rx descriptors. Since it caused us a major headache recently and we
    rolled back to old approach that 'puts' Rx buffers right after running
    XDP prog/creating skb, this is useless now and should be removed.
    
    Get rid of ice_rx_buf::act and related logic. We still need to take care
    of a corner case where XDP program releases a particular fragment.
    
    Make ice_run_xdp() to return its result and use it within
    ice_put_rx_mbuf().
    
    Fixes: 2fba7dc5157b ("ice: Add support for XDP multi-buffer on Rx side")
    Reviewed-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Maciej Fijalkowski <[email protected]>
    Tested-by: Chandan Kumar Rout <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Stable-dep-of: b1a0c977c6f1 ("ice: fix incorrect counter for buffer allocation failures")
    Signed-off-by: Sasha Levin <[email protected]>

 
KVM: x86: use array_index_nospec with indices that come from guest [+ + +]
Author: Thijs Raymakers <[email protected]>
Date:   Mon Aug 4 08:44:05 2025 +0200

    KVM: x86: use array_index_nospec with indices that come from guest
    
    commit c87bd4dd43a624109c3cc42d843138378a7f4548 upstream.
    
    min and dest_id are guest-controlled indices. Using array_index_nospec()
    after the bounds checks clamps these values to mitigate speculative execution
    side-channels.
    
    Signed-off-by: Thijs Raymakers <[email protected]>
    Cc: [email protected]
    Cc: Sean Christopherson <[email protected]>
    Cc: Paolo Bonzini <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Fixes: 715062970f37 ("KVM: X86: Implement PV sched yield hypercall")
    Fixes: bdf7ffc89922 ("KVM: LAPIC: Fix pv ipis out-of-bounds access")
    Fixes: 4180bf1b655a ("KVM: X86: Implement "send IPI" hypercall")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Linux: Linux 6.6.104 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu Sep 4 15:30:29 2025 +0200

    Linux 6.6.104
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Brett A C Sheffield <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mips: dts: lantiq: danube: add missing burst length property [+ + +]
Author: Aleksander Jan Bajkowski <[email protected]>
Date:   Sun Aug 17 14:49:06 2025 +0200

    mips: dts: lantiq: danube: add missing burst length property
    
    [ Upstream commit 7b28232921782aa38048249132899c337405eaa8 ]
    
    The upstream dts lacks the lantiq,{rx/tx}-burst-length property. Other
    issues were also fixed:
    arch/mips/boot/dts/lantiq/danube_easy50712.dtb: etop@e180000 (lantiq,etop-xway): 'interrupt-names' is a required property
            from schema $id: http://devicetree.org/schemas/net/lantiq,etop-xway.yaml#
    arch/mips/boot/dts/lantiq/danube_easy50712.dtb: etop@e180000 (lantiq,etop-xway): 'lantiq,tx-burst-length' is a required property
            from schema $id: http://devicetree.org/schemas/net/lantiq,etop-xway.yaml#
    arch/mips/boot/dts/lantiq/danube_easy50712.dtb: etop@e180000 (lantiq,etop-xway): 'lantiq,rx-burst-length' is a required property
            from schema $id: http://devicetree.org/schemas/net/lantiq,etop-xway.yaml#
    
    Fixes: 14d4e308e0aa ("net: lantiq: configure the burst length in ethernet drivers")
    Signed-off-by: Aleksander Jan Bajkowski <[email protected]>
    Acked-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mips: lantiq: xway: sysctrl: rename the etop node [+ + +]
Author: Aleksander Jan Bajkowski <[email protected]>
Date:   Sun Aug 17 14:49:07 2025 +0200

    mips: lantiq: xway: sysctrl: rename the etop node
    
    [ Upstream commit 8c431ea8f3f795c4b9cfa57a85bc4166b9cce0ac ]
    
    Bindig requires a node name matching ‘^ethernet@[0-9a-f]+$’. This patch
    changes the clock name from “etop” to “ethernet”.
    
    This fixes the following warning:
    arch/mips/boot/dts/lantiq/danube_easy50712.dtb: etop@e180000 (lantiq,etop-xway): $nodename:0: 'etop@e180000' does not match '^ethernet@[0-9a-f]+$'
            from schema $id: http://devicetree.org/schemas/net/lantiq,etop-xway.yaml#
    
    Fixes: dac0bad93741 ("dt-bindings: net: lantiq,etop-xway: Document Lantiq Xway ETOP bindings")
    Signed-off-by: Aleksander Jan Bajkowski <[email protected]>
    Acked-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5: Add device cap for supporting hot reset in sync reset flow [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Wed Sep 11 13:17:51 2024 -0700

    net/mlx5: Add device cap for supporting hot reset in sync reset flow
    
    [ Upstream commit 9947204cdad97d22d171039019a4aad4d6899cdd ]
    
    New devices with new FW can support sync reset for firmware activate
    using hot reset. Add capability for supporting it and add MFRL field to
    query from FW which type of PCI reset method to use while handling sync
    reset events.
    
    Signed-off-by: Moshe Shemesh <[email protected]>
    Signed-off-by: Saeed Mahameed <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 902a8bc23a24 ("net/mlx5: Fix lockdep assertion on sync reset unload event")
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Add support for sync reset using hot reset [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Wed Sep 11 13:17:52 2024 -0700

    net/mlx5: Add support for sync reset using hot reset
    
    [ Upstream commit 57502f62678ced0149d415324931bde37b42885a ]
    
    On device that supports sync reset for firmware activate using hot
    reset, the driver queries the required reset method while handling the
    sync reset request. If the required reset method is hot reset, the
    driver will use pci_reset_bus() to reset the PCI link instead of the
    link toggle.
    
    Signed-off-by: Moshe Shemesh <[email protected]>
    Signed-off-by: Saeed Mahameed <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 902a8bc23a24 ("net/mlx5: Fix lockdep assertion on sync reset unload event")
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Call mlx5_sf_id_erase() once in mlx5_sf_dealloc() [+ + +]
Author: Jiri Pirko <[email protected]>
Date:   Fri Jun 2 13:43:42 2023 +0200

    net/mlx5: Call mlx5_sf_id_erase() once in mlx5_sf_dealloc()
    
    [ Upstream commit 2597ee190b4eb48d3b7d35b7bb2cc18046ae087e ]
    
    Before every call of mlx5_sf_dealloc(), there is a call to
    mlx5_sf_id_erase(). So move it to the beginning of mlx5_sf_dealloc().
    Also remove redundant mlx5_sf_id_erase() call from mlx5_sf_free()
    as it is called only from mlx5_sf_dealloc().
    
    Signed-off-by: Jiri Pirko <[email protected]>
    Reviewed-by: Shay Drory <[email protected]>
    Signed-off-by: Saeed Mahameed <[email protected]>
    Stable-dep-of: 26e42ec7712d ("net/mlx5: Nack sync reset when SFs are present")
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Convert SF port_indices xarray to function_ids xarray [+ + +]
Author: Jiri Pirko <[email protected]>
Date:   Thu May 18 11:33:16 2023 +0200

    net/mlx5: Convert SF port_indices xarray to function_ids xarray
    
    [ Upstream commit 2284a4836251b3dee348172f69ac84157aa7b03e ]
    
    No need to lookup for sf by a port index. Convert the xarray to have
    function id as an index and optimize the remaining function id
    based lookup.
    
    Signed-off-by: Jiri Pirko <[email protected]>
    Reviewed-by: Shay Drory <[email protected]>
    Signed-off-by: Saeed Mahameed <[email protected]>
    Stable-dep-of: 26e42ec7712d ("net/mlx5: Nack sync reset when SFs are present")
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Fix lockdep assertion on sync reset unload event [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Mon Aug 25 17:34:29 2025 +0300

    net/mlx5: Fix lockdep assertion on sync reset unload event
    
    [ Upstream commit 902a8bc23a24882200f57cadc270e15a2cfaf2bb ]
    
    Fix lockdep assertion triggered during sync reset unload event. When the
    sync reset flow is initiated using the devlink reload fw_activate
    option, the PF already holds the devlink lock while handling unload
    event. In this case, delegate sync reset unload event handling back to
    the devlink callback process to avoid double-locking and resolve the
    lockdep warning.
    
    Kernel log:
    WARNING: CPU: 9 PID: 1578 at devl_assert_locked+0x31/0x40
    [...]
    Call Trace:
    <TASK>
     mlx5_unload_one_devl_locked+0x2c/0xc0 [mlx5_core]
     mlx5_sync_reset_unload_event+0xaf/0x2f0 [mlx5_core]
     process_one_work+0x222/0x640
     worker_thread+0x199/0x350
     kthread+0x10b/0x230
     ? __pfx_worker_thread+0x10/0x10
     ? __pfx_kthread+0x10/0x10
     ret_from_fork+0x8e/0x100
     ? __pfx_kthread+0x10/0x10
     ret_from_fork_asm+0x1a/0x30
    </TASK>
    
    Fixes: 7a9770f1bfea ("net/mlx5: Handle sync reset unload event")
    Signed-off-by: Moshe Shemesh <[email protected]>
    Signed-off-by: Mark Bloch <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Nack sync reset when SFs are present [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Mon Aug 25 17:34:30 2025 +0300

    net/mlx5: Nack sync reset when SFs are present
    
    [ Upstream commit 26e42ec7712d392d561964514b1f253b1a96f42d ]
    
    If PF (Physical Function) has SFs (Sub-Functions), since the SFs are not
    taking part in the synchronization flow, sync reset can lead to fatal
    error on the SFs, as the function will be closed unexpectedly from the
    SF point of view.
    
    Add a check to prevent sync reset when there are SFs on a PF device
    which is not ECPF, as ECPF is teardowned gracefully before reset.
    
    Fixes: 92501fa6e421 ("net/mlx5: Ack on sync_reset_request only if PF can do reset_now")
    Signed-off-by: Moshe Shemesh <[email protected]>
    Reviewed-by: Parav Pandit <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Signed-off-by: Mark Bloch <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Reload auxiliary drivers on fw_activate [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Mon Aug 25 17:34:28 2025 +0300

    net/mlx5: Reload auxiliary drivers on fw_activate
    
    [ Upstream commit 34cc6a54914f478c93e176450fae6313404f9f74 ]
    
    The devlink reload fw_activate command performs firmware activation
    followed by driver reload, while devlink reload driver_reinit triggers
    only driver reload. However, the driver reload logic differs between the
    two modes, as on driver_reinit mode mlx5 also reloads auxiliary drivers,
    while in fw_activate mode the auxiliary drivers are suspended where
    applicable.
    
    Additionally, following the cited commit, if the device has multiple PFs,
    the behavior during fw_activate may vary between PFs: one PF may suspend
    auxiliary drivers, while another reloads them.
    
    Align devlink dev reload fw_activate behavior with devlink dev reload
    driver_reinit, to reload all auxiliary drivers.
    
    Fixes: 72ed5d5624af ("net/mlx5: Suspend auxiliary devices only in case of PCI device suspend")
    Signed-off-by: Moshe Shemesh <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Reviewed-by: Akiva Goldberger <[email protected]>
    Signed-off-by: Mark Bloch <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: SF, Fix add port error handling [+ + +]
Author: Chris Mi <[email protected]>
Date:   Wed Jan 15 13:39:06 2025 +0200

    net/mlx5: SF, Fix add port error handling
    
    commit 2011a2a18ef00b5b8e4b753acbe6451a8c5f2260 upstream.
    
    If failed to add SF, error handling doesn't delete the SF from the
    SF table. But the hw resources are deleted. So when unload driver,
    hw resources will be deleted again. Firmware will report syndrome
    0x68def3 which means "SF is not allocated can not deallocate".
    
    Fix it by delete SF from SF table if failed to add SF.
    
    Fixes: 2597ee190b4e ("net/mlx5: Call mlx5_sf_id_erase() once in mlx5_sf_dealloc()")
    Signed-off-by: Chris Mi <[email protected]>
    Reviewed-by: Shay Drori <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Signed-off-by: Tariq Toukan <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net/mlx5: Use devlink port pointer to get the pointer of container SF struct [+ + +]
Author: Jiri Pirko <[email protected]>
Date:   Wed May 17 13:59:34 2023 +0200

    net/mlx5: Use devlink port pointer to get the pointer of container SF struct
    
    [ Upstream commit 9caeb1475c3e852bcfa6332227c6bb2feaa8eb23 ]
    
    Benefit from the fact that struct devlink_port is eventually embedded
    in struct mlx5_sf and use container_of() macro to get it instead of the
    xarray lookup in every devlink port op.
    
    Signed-off-by: Jiri Pirko <[email protected]>
    Reviewed-by: Shay Drory <[email protected]>
    Signed-off-by: Saeed Mahameed <[email protected]>
    Stable-dep-of: 26e42ec7712d ("net/mlx5: Nack sync reset when SFs are present")
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5e: Set local Xoff after FW update [+ + +]
Author: Alexei Lazar <[email protected]>
Date:   Mon Aug 25 17:34:34 2025 +0300

    net/mlx5e: Set local Xoff after FW update
    
    [ Upstream commit aca0c31af61e0d5cf1675a0cbd29460b95ae693c ]
    
    The local Xoff value is being set before the firmware (FW) update.
    In case of a failure where the FW is not updated with the new value,
    there is no fallback to the previous value.
    Update the local Xoff value after the FW has been successfully set.
    
    Fixes: 0696d60853d5 ("net/mlx5e: Receive buffer configuration")
    Signed-off-by: Alexei Lazar <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Reviewed-by: Dragos Tatulea <[email protected]>
    Signed-off-by: Mark Bloch <[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: Update and set Xon/Xoff upon MTU set [+ + +]
Author: Alexei Lazar <[email protected]>
Date:   Mon Aug 25 17:34:32 2025 +0300

    net/mlx5e: Update and set Xon/Xoff upon MTU set
    
    [ Upstream commit ceddedc969f0532b7c62ca971ee50d519d2bc0cb ]
    
    Xon/Xoff sizes are derived from calculation that include the MTU size.
    Set Xon/Xoff when MTU is set.
    If Xon/Xoff fails, set the previous MTU.
    
    Fixes: 0696d60853d5 ("net/mlx5e: Receive buffer configuration")
    Signed-off-by: Alexei Lazar <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Signed-off-by: Mark Bloch <[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: Update and set Xon/Xoff upon port speed set [+ + +]
Author: Alexei Lazar <[email protected]>
Date:   Mon Aug 25 17:34:33 2025 +0300

    net/mlx5e: Update and set Xon/Xoff upon port speed set
    
    [ Upstream commit d24341740fe48add8a227a753e68b6eedf4b385a ]
    
    Xon/Xoff sizes are derived from calculations that include
    the port speed.
    These settings need to be updated and applied whenever the
    port speed is changed.
    The port speed is typically set after the physical link goes down
    and is negotiated as part of the link-up process between the two
    connected interfaces.
    Xon/Xoff parameters being updated at the point where the new
    negotiated speed is established.
    
    Fixes: 0696d60853d5 ("net/mlx5e: Receive buffer configuration")
    Signed-off-by: Alexei Lazar <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Signed-off-by: Mark Bloch <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: dlink: fix multicast stats being counted incorrectly [+ + +]
Author: Yeounsu Moon <[email protected]>
Date:   Sun Aug 24 03:29:24 2025 +0900

    net: dlink: fix multicast stats being counted incorrectly
    
    [ Upstream commit 007a5ffadc4fd51739527f1503b7cf048f31c413 ]
    
    `McstFramesRcvdOk` counts the number of received multicast packets, and
    it reports the value correctly.
    
    However, reading `McstFramesRcvdOk` clears the register to zero. As a
    result, the driver was reporting only the packets since the last read,
    instead of the accumulated total.
    
    Fix this by updating the multicast statistics accumulatively instaed of
    instantaneously.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Tested-on: D-Link DGE-550T Rev-A3
    Signed-off-by: Yeounsu Moon <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ipv4: fix regression in local-broadcast routes [+ + +]
Author: Oscar Maes <[email protected]>
Date:   Wed Aug 27 08:23:21 2025 +0200

    net: ipv4: fix regression in local-broadcast routes
    
    [ Upstream commit 5189446ba995556eaa3755a6e875bc06675b88bd ]
    
    Commit 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
    introduced a regression where local-broadcast packets would have their
    gateway set in __mkroute_output, which was caused by fi = NULL being
    removed.
    
    Fix this by resetting the fib_info for local-broadcast packets. This
    preserves the intended changes for directed-broadcast packets.
    
    Cc: [email protected]
    Fixes: 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
    Reported-by: Brett A C Sheffield <[email protected]>
    Closes: https://lore.kernel.org/regressions/[email protected]
    Signed-off-by: Oscar Maes <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: rose: convert 'use' field to refcount_t [+ + +]
Author: Takamitsu Iwai <[email protected]>
Date:   Sat Aug 23 17:58:56 2025 +0900

    net: rose: convert 'use' field to refcount_t
    
    [ Upstream commit d860d1faa6b2ce3becfdb8b0c2b048ad31800061 ]
    
    The 'use' field in struct rose_neigh is used as a reference counter but
    lacks atomicity. This can lead to race conditions where a rose_neigh
    structure is freed while still being referenced by other code paths.
    
    For example, when rose_neigh->use becomes zero during an ioctl operation
    via rose_rt_ioctl(), the structure may be removed while its timer is
    still active, potentially causing use-after-free issues.
    
    This patch changes the type of 'use' from unsigned short to refcount_t and
    updates all code paths to use rose_neigh_hold() and rose_neigh_put() which
    operate reference counts atomically.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Takamitsu Iwai <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: rose: fix a typo in rose_clear_routes() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Aug 27 17:21:49 2025 +0000

    net: rose: fix a typo in rose_clear_routes()
    
    commit 1cc8a5b534e5f9b5e129e54ee2e63c9f5da4f39a upstream.
    
    syzbot crashed in rose_clear_routes(), after a recent patch typo.
    
    KASAN: null-ptr-deref in range [0x0000000000000010-0x0000000000000017]
    CPU: 0 UID: 0 PID: 10591 Comm: syz.3.1856 Not tainted syzkaller #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/12/2025
     RIP: 0010:rose_clear_routes net/rose/rose_route.c:565 [inline]
     RIP: 0010:rose_rt_ioctl+0x162/0x1250 net/rose/rose_route.c:760
     <TASK>
      rose_ioctl+0x3ce/0x8b0 net/rose/af_rose.c:1381
      sock_do_ioctl+0xd9/0x300 net/socket.c:1238
      sock_ioctl+0x576/0x790 net/socket.c:1359
      vfs_ioctl fs/ioctl.c:51 [inline]
      __do_sys_ioctl fs/ioctl.c:598 [inline]
      __se_sys_ioctl+0xfc/0x170 fs/ioctl.c:584
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
      do_syscall_64+0xfa/0x3b0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: da9c9c877597 ("net: rose: include node references in rose_neigh refcount")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Takamitsu Iwai <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[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: rose: include node references in rose_neigh refcount [+ + +]
Author: Takamitsu Iwai <[email protected]>
Date:   Sat Aug 23 17:58:57 2025 +0900

    net: rose: include node references in rose_neigh refcount
    
    [ Upstream commit da9c9c877597170b929a6121a68dcd3dd9a80f45 ]
    
    Current implementation maintains two separate reference counting
    mechanisms: the 'count' field in struct rose_neigh tracks references from
    rose_node structures, while the 'use' field (now refcount_t) tracks
    references from rose_sock.
    
    This patch merges these two reference counting systems using 'use' field
    for proper reference management. Specifically, this patch adds incrementing
    and decrementing of rose_neigh->use when rose_neigh->count is incremented
    or decremented.
    
    This patch also modifies rose_rt_free(), rose_rt_device_down() and
    rose_clear_route() to properly release references to rose_neigh objects
    before freeing a rose_node through rose_remove_node().
    
    These changes ensure rose_neigh structures are properly freed only when
    all references, including those from rose_node structures, are released.
    As a result, this resolves a slab-use-after-free issue reported by Syzbot.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=942297eecf7d2d61d1f1
    Signed-off-by: Takamitsu Iwai <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: rose: split remove and free operations in rose_remove_neigh() [+ + +]
Author: Takamitsu Iwai <[email protected]>
Date:   Sat Aug 23 17:58:55 2025 +0900

    net: rose: split remove and free operations in rose_remove_neigh()
    
    [ Upstream commit dcb34659028f856c423a29ef9b4e2571d203444d ]
    
    The current rose_remove_neigh() performs two distinct operations:
    1. Removes rose_neigh from rose_neigh_list
    2. Frees the rose_neigh structure
    
    Split these operations into separate functions to improve maintainability
    and prepare for upcoming refcount_t conversion. The timer cleanup remains
    in rose_remove_neigh() because free operations can be called from timer
    itself.
    
    This patch introduce rose_neigh_put() to handle the freeing of rose_neigh
    structures and modify rose_remove_neigh() to handle removal only.
    
    Signed-off-by: Takamitsu Iwai <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: d860d1faa6b2 ("net: rose: convert 'use' field to refcount_t")
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: Rename phylink_get_caps() callback to update_caps() [+ + +]
Author: Serge Semin <[email protected]>
Date:   Fri Apr 19 12:03:05 2024 +0300

    net: stmmac: Rename phylink_get_caps() callback to update_caps()
    
    [ Upstream commit dc144baeb4fbfa0d91ce9c3875307566f58704ec ]
    
    Since recent commits the stmmac_ops::phylink_get_caps() callback has no
    longer been responsible for the phylink MAC capabilities getting, but
    merely updates the MAC capabilities in the mac_device_info::link::caps
    field. Rename the callback to comply with the what the method does now.
    
    Signed-off-by: Serge Semin <[email protected]>
    Reviewed-by: Romain Gantois <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Stable-dep-of: 42ef11b2bff5 ("net: stmmac: xgmac: Correct supported speed modes")
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: Set CIC bit only for TX queues with COE [+ + +]
Author: Rohan G Thomas <[email protected]>
Date:   Mon Aug 25 12:36:54 2025 +0800

    net: stmmac: Set CIC bit only for TX queues with COE
    
    [ Upstream commit b1eded580ab28119de0b0f21efe37ee2b4419144 ]
    
    Currently, in the AF_XDP transmit paths, the CIC bit of
    TX Desc3 is set for all packets. Setting this bit for
    packets transmitting through queues that don't support
    checksum offloading causes the TX DMA to get stuck after
    transmitting some packets. This patch ensures the CIC bit
    of TX Desc3 is set only if the TX queue supports checksum
    offloading.
    
    Fixes: 132c32ee5bc0 ("net: stmmac: Add TX via XDP zero-copy socket")
    Signed-off-by: Rohan G Thomas <[email protected]>
    Reviewed-by: Matthew Gerlach <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: xgmac: Correct supported speed modes [+ + +]
Author: Rohan G Thomas <[email protected]>
Date:   Mon Aug 25 12:36:53 2025 +0800

    net: stmmac: xgmac: Correct supported speed modes
    
    [ Upstream commit 42ef11b2bff5b6a2910c28d2ea47cc00e0fbcaec ]
    
    Correct supported speed modes as per the XGMAC databook.
    Commit 9cb54af214a7 ("net: stmmac: Fix IP-cores specific
    MAC capabilities") removes support for 10M, 100M and
    1000HD. 1000HD is not supported by XGMAC IP, but it does
    support 10M and 100M FD mode for XGMAC version >= 2_20,
    and it also supports 10M and 100M HD mode if the HDSEL bit
    is set in the MAC_HW_FEATURE0 reg. This commit enables support
    for 10M and 100M speed modes for XGMAC IP based on XGMAC
    version and MAC capabilities.
    
    Fixes: 9cb54af214a7 ("net: stmmac: Fix IP-cores specific MAC capabilities")
    Signed-off-by: Rohan G Thomas <[email protected]>
    Reviewed-by: Matthew Gerlach <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: xgmac: Do not enable RX FIFO Overflow interrupts [+ + +]
Author: Rohan G Thomas <[email protected]>
Date:   Mon Aug 25 12:36:52 2025 +0800

    net: stmmac: xgmac: Do not enable RX FIFO Overflow interrupts
    
    [ Upstream commit 4f23382841e67174211271a454811dd17c0ef3c5 ]
    
    Enabling RX FIFO Overflow interrupts is counterproductive
    and causes an interrupt storm when RX FIFO overflows.
    Disabling this interrupt has no side effect and eliminates
    interrupt storms when the RX FIFO overflows.
    
    Commit 8a7cb245cf28 ("net: stmmac: Do not enable RX FIFO
    overflow interrupts") disables RX FIFO overflow interrupts
    for DWMAC4 IP and removes the corresponding handling of
    this interrupt. This patch is doing the same thing for
    XGMAC IP.
    
    Fixes: 2142754f8b9c ("net: stmmac: Add MAC related callbacks for XGMAC2")
    Signed-off-by: Rohan G Thomas <[email protected]>
    Reviewed-by: Matthew Gerlach <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: qmi_wwan: add Telit Cinterion LE910C4-WWX new compositions [+ + +]
Author: Fabio Porcedda <[email protected]>
Date:   Fri Aug 22 11:13:24 2025 +0200

    net: usb: qmi_wwan: add Telit Cinterion LE910C4-WWX new compositions
    
    commit e81a7f65288c7e2cfb7e7890f648e099fd885ab3 upstream.
    
    Add the following Telit Cinterion LE910C4-WWX new compositions:
    
    0x1034: tty (AT) + tty (AT) + rmnet
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  8 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1034 Rev=00.00
    S:  Manufacturer=Telit
    S:  Product=LE910C4-WWX
    S:  SerialNumber=93f617e7
    C:  #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x1037: tty (diag) + tty (Telit custom) + tty (AT) + tty (AT) + rmnet
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 15 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1037 Rev=00.00
    S:  Manufacturer=Telit
    S:  Product=LE910C4-WWX
    S:  SerialNumber=93f617e7
    C:  #Ifs= 5 Cfg#= 1 Atr=e0 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=ff Prot=ff Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x1038: tty (Telit custom) + tty (AT) + tty (AT) + rmnet
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  9 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1038 Rev=00.00
    S:  Manufacturer=Telit
    S:  Product=LE910C4-WWX
    S:  SerialNumber=93f617e7
    C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Cc: [email protected]
    Signed-off-by: Fabio Porcedda <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
NFS: Fix a race when updating an existing write [+ + +]
Author: Trond Myklebust <[email protected]>
Date:   Sat Aug 16 07:25:20 2025 -0700

    NFS: Fix a race when updating an existing write
    
    commit 76d2e3890fb169168c73f2e4f8375c7cc24a765e upstream.
    
    After nfs_lock_and_join_requests() tests for whether the request is
    still attached to the mapping, nothing prevents a call to
    nfs_inode_remove_request() from succeeding until we actually lock the
    page group.
    The reason is that whoever called nfs_inode_remove_request() doesn't
    necessarily have a lock on the page group head.
    
    So in order to avoid races, let's take the page group lock earlier in
    nfs_lock_and_join_requests(), and hold it across the removal of the
    request in nfs_inode_remove_request().
    
    Reported-by: Jeff Layton <[email protected]>
    Tested-by: Joe Quanaim <[email protected]>
    Tested-by: Andrew Steffen <[email protected]>
    Reviewed-by: Jeff Layton <[email protected]>
    Fixes: bd37d6fce184 ("NFSv4: Convert nfs_lock_and_join_requests() to use nfs_page_find_head_request()")
    Cc: [email protected]
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nfs: fold nfs_page_group_lock_subrequests into nfs_lock_and_join_requests [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Mon Jul 1 07:26:52 2024 +0200

    nfs: fold nfs_page_group_lock_subrequests into nfs_lock_and_join_requests
    
    commit 25edbcac6e32eab345e470d56ca9974a577b878b upstream.
    
    Fold nfs_page_group_lock_subrequests into nfs_lock_and_join_requests to
    prepare for future changes to this code, and move the helpers to write.c
    as well.
    
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
of: Add a helper to free property struct [+ + +]
Author: Rob Herring <[email protected]>
Date:   Tue Apr 9 13:59:39 2024 -0500

    of: Add a helper to free property struct
    
    [ Upstream commit 1c5e3d9bf33b811e1c6dd9081b322004acc4a1fd ]
    
    Freeing a property struct is 3 kfree()'s which is duplicated in multiple
    spots. Add a helper, __of_prop_free(), and replace all the open coded
    cases in the DT code.
    
    Reviewed-by: Saravana Kannan <[email protected]>
    Reviewed-by: Jonathan Cameron <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring <[email protected]>
    Stable-dep-of: 80af3745ca46 ("of: dynamic: Fix use after free in of_changeset_add_prop_helper()")
    Signed-off-by: Sasha Levin <[email protected]>

of: dynamic: Fix memleak when of_pci_add_properties() failed [+ + +]
Author: Lizhi Hou <[email protected]>
Date:   Mon Aug 18 08:22:21 2025 -0700

    of: dynamic: Fix memleak when of_pci_add_properties() failed
    
    [ Upstream commit c81f6ce16785cc07ae81f53deb07b662ed0bb3a5 ]
    
    When of_pci_add_properties() failed, of_changeset_destroy() is called to
    free the changeset. And of_changeset_destroy() puts device tree node in
    each entry but does not free property in the entry. This leads to memory
    leak in the failure case.
    
    In of_changeset_add_prop_helper(), add the property to the device tree node
    deadprops list. Thus, the property will also be freed along with device
    tree node.
    
    Fixes: b544fc2b8606 ("of: dynamic: Add interfaces for creating device node dynamically")
    Reported-by: Lorenzo Pieralisi <[email protected]>
    Closes: https://lore.kernel.org/all/aJms+YT8TnpzpCY8@lpieralisi/
    Tested-by: Lorenzo Pieralisi <[email protected]>
    Signed-off-by: Lizhi Hou <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
of: dynamic: Fix use after free in of_changeset_add_prop_helper() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Fri Aug 22 11:08:46 2025 +0300

    of: dynamic: Fix use after free in of_changeset_add_prop_helper()
    
    [ Upstream commit 80af3745ca465c6c47e833c1902004a7fa944f37 ]
    
    If the of_changeset_add_property() function call fails, then this code
    frees "new_pp" and then dereference it on the next line.  Return the
    error code directly instead.
    
    Fixes: c81f6ce16785 ("of: dynamic: Fix memleak when of_pci_add_properties() failed")
    Signed-off-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
phy: mscc: Fix when PTP clock is register and unregister [+ + +]
Author: Horatiu Vultur <[email protected]>
Date:   Mon Aug 25 08:55:43 2025 +0200

    phy: mscc: Fix when PTP clock is register and unregister
    
    [ Upstream commit 882e57cbc7204662f6c5672d5b04336c1d790b03 ]
    
    It looks like that every time when the interface was set down and up the
    driver was creating a new ptp clock. On top of this the function
    ptp_clock_unregister was never called.
    Therefore fix this by calling ptp_clock_register and initialize the
    mii_ts struct inside the probe function and call ptp_clock_unregister when
    driver is removed.
    
    Fixes: 7d272e63e0979d ("net: phy: mscc: timestamping and PHC support")
    Signed-off-by: Horatiu Vultur <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Reviewed-by: Vladimir Oltean <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pinctrl: STMFX: add missing HAS_IOMEM dependency [+ + +]
Author: Randy Dunlap <[email protected]>
Date:   Thu Aug 14 19:27:21 2025 -0700

    pinctrl: STMFX: add missing HAS_IOMEM dependency
    
    [ Upstream commit a12946bef0407cf2db0899c83d42c47c00af3fbc ]
    
    When building on ARCH=um (which does not set HAS_IOMEM), kconfig
    reports an unmet dependency caused by PINCTRL_STMFX. It selects
    MFD_STMFX, which depends on HAS_IOMEM. To stop this warning,
    PINCTRL_STMFX should also depend on HAS_IOMEM.
    
    kconfig warning:
    WARNING: unmet direct dependencies detected for MFD_STMFX
      Depends on [n]: HAS_IOMEM [=n] && I2C [=y] && OF [=y]
      Selected by [y]:
      - PINCTRL_STMFX [=y] && PINCTRL [=y] && I2C [=y] && OF_GPIO [=y]
    
    Fixes: 1490d9f841b1 ("pinctrl: Add STMFX GPIO expander Pinctrl/GPIO driver")
    Signed-off-by: Randy Dunlap <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/kvm: Fix ifdef to remove build warning [+ + +]
Author: Madhavan Srinivasan <[email protected]>
Date:   Sun May 18 10:11:04 2025 +0530

    powerpc/kvm: Fix ifdef to remove build warning
    
    [ Upstream commit 88688a2c8ac6c8036d983ad8b34ce191c46a10aa ]
    
    When compiling for pseries or powernv defconfig with "make C=1",
    these warning were reported bu sparse tool in powerpc/kernel/kvm.c
    
    arch/powerpc/kernel/kvm.c:635:9: warning: switch with no cases
    arch/powerpc/kernel/kvm.c:646:9: warning: switch with no cases
    
    Currently #ifdef were added after the switch case which are specific
    for BOOKE and PPC_BOOK3S_32. These are not enabled in pseries/powernv
    defconfig. Fix it by moving the #ifdef before switch(){}
    
    Fixes: cbe487fac7fc0 ("KVM: PPC: Add mtsrin PV code")
    Tested-by: Venkat Rao Bagalkote <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "drm/amdgpu: fix incorrect vm flags to map bo" [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Mon Aug 25 13:40:22 2025 -0400

    Revert "drm/amdgpu: fix incorrect vm flags to map bo"
    
    commit ac4ed2da4c1305a1a002415058aa7deaf49ffe3e upstream.
    
    This reverts commit b08425fa77ad2f305fe57a33dceb456be03b653f.
    
    Revert this to align with 6.17 because the fixes tag
    was wrong on this commit.
    
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit be33e8a239aac204d7e9e673c4220ef244eb1ba3)
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "drm/dp: Change AUX DPCD probe address from DPCD_REV to LANE0_1_STATUS" [+ + +]
Author: Imre Deak <[email protected]>
Date:   Thu Aug 28 20:49:29 2025 +0300

    Revert "drm/dp: Change AUX DPCD probe address from DPCD_REV to LANE0_1_STATUS"
    
    This reverts commit 65e46aeaf84aa88539bcff6b8077e05fbd0700da which is
    commit a40c5d727b8111b5db424a1e43e14a1dcce1e77f upstream.
    
    The upstream commit a40c5d727b8111b5db424a1e43e14a1dcce1e77f ("drm/dp:
    Change AUX DPCD probe address from DPCD_REV to LANE0_1_STATUS") the
    reverted commit backported causes a regression, on one eDP panel at
    least resulting in display flickering, described in detail at the Link:
    below. The issue fixed by the upstream commit will need a different
    solution, revert the backport for now.
    
    Cc: [email protected]
    Cc: [email protected]
    Cc: Sasha Levin <[email protected]>
    Link: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14558
    Signed-off-by: Imre Deak <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
scsi: core: sysfs: Correct sysfs attributes access rights [+ + +]
Author: Damien Le Moal <[email protected]>
Date:   Mon Jul 28 13:17:00 2025 +0900

    scsi: core: sysfs: Correct sysfs attributes access rights
    
    [ Upstream commit a2f54ff15c3bdc0132e20aae041607e2320dbd73 ]
    
    The SCSI sysfs attributes "supported_mode" and "active_mode" do not
    define a store method and thus cannot be modified.  Correct the
    DEVICE_ATTR() call for these two attributes to not include S_IWUSR to
    allow write access as they are read-only.
    
    Signed-off-by: Damien Le Moal <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: John Garry <[email protected]>
    Reviewed-by: Johannes Thumshin <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sctp: initialize more fields in sctp_v6_from_sk() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Aug 26 14:13:14 2025 +0000

    sctp: initialize more fields in sctp_v6_from_sk()
    
    [ Upstream commit 2e8750469242cad8f01f320131fd5a6f540dbb99 ]
    
    syzbot found that sin6_scope_id was not properly initialized,
    leading to undefined behavior.
    
    Clear sin6_scope_id and sin6_flowinfo.
    
    BUG: KMSAN: uninit-value in __sctp_v6_cmp_addr+0x887/0x8c0 net/sctp/ipv6.c:649
      __sctp_v6_cmp_addr+0x887/0x8c0 net/sctp/ipv6.c:649
      sctp_inet6_cmp_addr+0x4f2/0x510 net/sctp/ipv6.c:983
      sctp_bind_addr_conflict+0x22a/0x3b0 net/sctp/bind_addr.c:390
      sctp_get_port_local+0x21eb/0x2440 net/sctp/socket.c:8452
      sctp_get_port net/sctp/socket.c:8523 [inline]
      sctp_listen_start net/sctp/socket.c:8567 [inline]
      sctp_inet_listen+0x710/0xfd0 net/sctp/socket.c:8636
      __sys_listen_socket net/socket.c:1912 [inline]
      __sys_listen net/socket.c:1927 [inline]
      __do_sys_listen net/socket.c:1932 [inline]
      __se_sys_listen net/socket.c:1930 [inline]
      __x64_sys_listen+0x343/0x4c0 net/socket.c:1930
      x64_sys_call+0x271d/0x3e20 arch/x86/include/generated/asm/syscalls_64.h:51
      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
    
    Local variable addr.i.i created at:
      sctp_get_port net/sctp/socket.c:8515 [inline]
      sctp_listen_start net/sctp/socket.c:8567 [inline]
      sctp_inet_listen+0x650/0xfd0 net/sctp/socket.c:8636
      __sys_listen_socket net/socket.c:1912 [inline]
      __sys_listen net/socket.c:1927 [inline]
      __do_sys_listen net/socket.c:1932 [inline]
      __se_sys_listen net/socket.c:1930 [inline]
      __x64_sys_listen+0x343/0x4c0 net/socket.c:1930
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Marcelo Ricardo Leitner <[email protected]>
    Acked-by: Xin Long <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
smb3 client: fix return code mapping of remap_file_range [+ + +]
Author: Steve French <[email protected]>
Date:   Sat Aug 23 21:15:59 2025 -0500

    smb3 client: fix return code mapping of remap_file_range
    
    commit 0e08fa789d39aa01923e3ba144bd808291895c3c upstream.
    
    We were returning -EOPNOTSUPP for various remap_file_range cases
    but for some of these the copy_file_range_syscall() requires -EINVAL
    to be returned (e.g. where source and target file ranges overlap when
    source and target are the same file). This fixes xfstest generic/157
    which was expecting EINVAL for that (and also e.g. for when the src
    offset is beyond end of file).
    
    Cc: [email protected]
    Acked-by: Paulo Alcantara (Red Hat) <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
smb: client: fix race with concurrent opens in rename(2) [+ + +]
Author: Paulo Alcantara <[email protected]>
Date:   Fri Aug 8 11:43:29 2025 -0300

    smb: client: fix race with concurrent opens in rename(2)
    
    [ Upstream commit d84291fc7453df7881a970716f8256273aca5747 ]
    
    Besides sending the rename request to the server, the rename process
    also involves closing any deferred close, waiting for outstanding I/O
    to complete as well as marking all existing open handles as deleted to
    prevent them from deferring closes, which increases the race window
    for potential concurrent opens on the target file.
    
    Fix this by unhashing the dentry in advance to prevent any concurrent
    opens on the target.
    
    Signed-off-by: Paulo Alcantara (Red Hat) <[email protected]>
    Reviewed-by: David Howells <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: [email protected]
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

smb: client: fix race with concurrent opens in unlink(2) [+ + +]
Author: Paulo Alcantara <[email protected]>
Date:   Fri Aug 8 12:20:17 2025 -0300

    smb: client: fix race with concurrent opens in unlink(2)
    
    [ Upstream commit 0af1561b2d60bab2a2b00720a5c7b292ecc549ec ]
    
    According to some logs reported by customers, CIFS client might end up
    reporting unlinked files as existing in stat(2) due to concurrent
    opens racing with unlink(2).
    
    Besides sending the removal request to the server, the unlink process
    could involve closing any deferred close as well as marking all
    existing open handles as deleted to prevent them from deferring
    closes, which increases the race window for potential concurrent
    opens.
    
    Fix this by unhashing the dentry in cifs_unlink() to prevent any
    subsequent opens.  Any open attempts, while we're still unlinking,
    will block on parent's i_rwsem.
    
    Reported-by: Jay Shin <[email protected]>
    Signed-off-by: Paulo Alcantara (Red Hat) <[email protected]>
    Reviewed-by: David Howells <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: [email protected]
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vhost/net: Protect ubufs with rcu read lock in vhost_net_ubuf_put() [+ + +]
Author: Nikolay Kuratov <[email protected]>
Date:   Tue Aug 5 16:09:17 2025 +0300

    vhost/net: Protect ubufs with rcu read lock in vhost_net_ubuf_put()
    
    commit dd54bcf86c91a4455b1f95cbc8e9ac91205f3193 upstream.
    
    When operating on struct vhost_net_ubuf_ref, the following execution
    sequence is theoretically possible:
    CPU0 is finalizing DMA operation                   CPU1 is doing VHOST_NET_SET_BACKEND
                                 // ubufs->refcount == 2
    vhost_net_ubuf_put()                               vhost_net_ubuf_put_wait_and_free(oldubufs)
                                                         vhost_net_ubuf_put_and_wait()
                                                           vhost_net_ubuf_put()
                                                             int r = atomic_sub_return(1, &ubufs->refcount);
                                                             // r = 1
    int r = atomic_sub_return(1, &ubufs->refcount);
    // r = 0
                                                          wait_event(ubufs->wait, !atomic_read(&ubufs->refcount));
                                                          // no wait occurs here because condition is already true
                                                        kfree(ubufs);
    if (unlikely(!r))
      wake_up(&ubufs->wait);  // use-after-free
    
    This leads to use-after-free on ubufs access. This happens because CPU1
    skips waiting for wake_up() when refcount is already zero.
    
    To prevent that use a read-side RCU critical section in vhost_net_ubuf_put(),
    as suggested by Hillf Danton. For this lock to take effect, free ubufs with
    kfree_rcu().
    
    Cc: [email protected]
    Fixes: 0ad8b480d6ee9 ("vhost: fix ref cnt checking deadlock")
    Reported-by: Andrey Ryabinin <[email protected]>
    Suggested-by: Hillf Danton <[email protected]>
    Signed-off-by: Nikolay Kuratov <[email protected]>
    Message-Id: <[email protected]>
    Signed-off-by: Michael S. Tsirkin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/microcode/AMD: Handle the case of no BIOS microcode [+ + +]
Author: Borislav Petkov (AMD) <[email protected]>
Date:   Wed Aug 20 11:58:57 2025 +0200

    x86/microcode/AMD: Handle the case of no BIOS microcode
    
    commit fcf8239ad6a5de54fa7ce18e464c6b5951b982cb upstream.
    
    Machines can be shipped without any microcode in the BIOS. Which means,
    the microcode patch revision is 0.
    
    Handle that gracefully.
    
    Fixes: 94838d230a6c ("x86/microcode/AMD: Use the family,model,stepping encoded in the patch ID")
    Reported-by: Vítek Vávra <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
xfs: do not propagate ENODATA disk errors into xattr code [+ + +]
Author: Eric Sandeen <[email protected]>
Date:   Fri Aug 22 12:55:56 2025 -0500

    xfs: do not propagate ENODATA disk errors into xattr code
    
    commit ae668cd567a6a7622bc813ee0bb61c42bed61ba7 upstream.
    
    ENODATA (aka ENOATTR) has a very specific meaning in the xfs xattr code;
    namely, that the requested attribute name could not be found.
    
    However, a medium error from disk may also return ENODATA. At best,
    this medium error may escape to userspace as "attribute not found"
    when in fact it's an IO (disk) error.
    
    At worst, we may oops in xfs_attr_leaf_get() when we do:
    
            error = xfs_attr_leaf_hasname(args, &bp);
            if (error == -ENOATTR)  {
                    xfs_trans_brelse(args->trans, bp);
                    return error;
            }
    
    because an ENODATA/ENOATTR error from disk leaves us with a null bp,
    and the xfs_trans_brelse will then null-deref it.
    
    As discussed on the list, we really need to modify the lower level
    IO functions to trap all disk errors and ensure that we don't let
    unique errors like this leak up into higher xfs functions - many
    like this should be remapped to EIO.
    
    However, this patch directly addresses a reported bug in the xattr
    code, and should be safe to backport to stable kernels. A larger-scope
    patch to handle more unique errors at lower levels can follow later.
    
    (Note, prior to 07120f1abdff we did not oops, but we did return the
    wrong error code to userspace.)
    
    Signed-off-by: Eric Sandeen <[email protected]>
    Fixes: 07120f1abdff ("xfs: Add xfs_has_attr and subroutines")
    Cc: [email protected] # v5.9+
    Reviewed-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Carlos Maiolino <[email protected]>
    [ Adjust context: removed metadata health tracking calls ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>