Changelog in Linux kernel 6.12.55

 
accel/qaic: Fix bootlog initialization ordering [+ + +]
Author: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
Date:   Tue Oct 7 13:57:50 2025 +0200

    accel/qaic: Fix bootlog initialization ordering
    
    [ Upstream commit fd6e385528d8f85993b7bfc6430576136bb14c65 ]
    
    As soon as we queue MHI buffers to receive the bootlog from the device,
    we could be receiving data. Therefore all the resources needed to
    process that data need to be setup prior to queuing the buffers.
    
    We currently initialize some of the resources after queuing the buffers
    which creates a race between the probe() and any data that comes back
    from the device. If the uninitialized resources are accessed, we could
    see page faults.
    
    Fix the init ordering to close the race.
    
    Fixes: 5f8df5c6def6 ("accel/qaic: Add bootlog debugfs")
    Signed-off-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
    Signed-off-by: Youssef Samir <youssef.abdulrahman@oss.qualcomm.com>
    Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Reviewed-by: Carl Vanderlip <carl.vanderlip@oss.qualcomm.com>
    Signed-off-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20251007115750.332169-1-youssef.abdulrahman@oss.qualcomm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

accel/qaic: Synchronize access to DBC request queue head & tail pointer [+ + +]
Author: Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
Date:   Tue Oct 7 08:18:37 2025 +0200

    accel/qaic: Synchronize access to DBC request queue head & tail pointer
    
    [ Upstream commit 52e59f7740ba23bbb664914967df9a00208ca10c ]
    
    Two threads of the same process can potential read and write parallelly to
    head and tail pointers of the same DBC request queue. This could lead to a
    race condition and corrupt the DBC request queue.
    
    Fixes: ff13be830333 ("accel/qaic: Add datapath")
    Signed-off-by: Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
    Signed-off-by: Youssef Samir <youssef.abdulrahman@oss.qualcomm.com>
    Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Reviewed-by: Carl Vanderlip <carl.vanderlip@oss.qualcomm.com>
    [jhugo: Add fixes tag]
    Signed-off-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20251007061837.206132-1-youssef.abdulrahman@oss.qualcomm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

accel/qaic: Treat remaining == 0 as error in find_and_map_user_pages() [+ + +]
Author: Youssef Samir <quic_yabdulra@quicinc.com>
Date:   Tue Oct 7 14:23:20 2025 +0200

    accel/qaic: Treat remaining == 0 as error in find_and_map_user_pages()
    
    [ Upstream commit 11f08c30a3e4157305ba692f1d44cca5fc9a8fca ]
    
    Currently, if find_and_map_user_pages() takes a DMA xfer request from the
    user with a length field set to 0, or in a rare case, the host receives
    QAIC_TRANS_DMA_XFER_CONT from the device where resources->xferred_dma_size
    is equal to the requested transaction size, the function will return 0
    before allocating an sgt or setting the fields of the dma_xfer struct.
    In that case, encode_addr_size_pairs() will try to access the sgt which
    will lead to a general protection fault.
    
    Return an EINVAL in case the user provides a zero-sized ALP, or the device
    requests continuation after all of the bytes have been transferred.
    
    Fixes: 96d3c1cadedb ("accel/qaic: Clean up integer overflow checking in map_user_pages()")
    Signed-off-by: Youssef Samir <quic_yabdulra@quicinc.com>
    Signed-off-by: Youssef Samir <youssef.abdulrahman@oss.qualcomm.com>
    Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Reviewed-by: Carl Vanderlip <carl.vanderlip@oss.qualcomm.com>
    Signed-off-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
    Link: https://lore.kernel.org/r/20251007122320.339654-1-youssef.abdulrahman@oss.qualcomm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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

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

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

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

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

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

 
arm64: cputype: Add Neoverse-V3AE definitions [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Sep 19 15:58:28 2025 +0100

    arm64: cputype: Add Neoverse-V3AE definitions
    
    commit 3bbf004c4808e2c3241e5c1ad6cc102f38a03c39 upstream.
    
    Add cputype definitions for Neoverse-V3AE. These will be used for errata
    detection in subsequent patches.
    
    These values can be found in the Neoverse-V3AE TRM:
    
      https://developer.arm.com/documentation/SDEN-2615521/9-0/
    
    ... in section A.6.1 ("MIDR_EL1, Main ID Register").
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

arm64: errata: Apply workarounds for Neoverse-V3AE [+ + +]
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Sep 19 15:58:29 2025 +0100

    arm64: errata: Apply workarounds for Neoverse-V3AE
    
    commit 0c33aa1804d101c11ba1992504f17a42233f0e11 upstream.
    
    Neoverse-V3AE is also affected by erratum #3312417, as described in its
    Software Developer Errata Notice (SDEN) document:
    
      Neoverse V3AE (MP172) SDEN v9.0, erratum 3312417
      https://developer.arm.com/documentation/SDEN-2615521/9-0/
    
    Enable the workaround for Neoverse-V3AE, and document this.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ASoC: amd/sdw_utils: avoid NULL deref when devm_kasprintf() fails [+ + +]
Author: Li Qiang <liqiang01@kylinos.cn>
Date:   Wed Oct 15 15:55:30 2025 +0800

    ASoC: amd/sdw_utils: avoid NULL deref when devm_kasprintf() fails
    
    [ Upstream commit 5726b68473f7153a7f6294185e5998b7e2a230a2 ]
    
    devm_kasprintf() may return NULL on memory allocation failure,
    but the debug message prints cpus->dai_name before checking it.
    Move the dev_dbg() call after the NULL check to prevent potential
    NULL pointer dereference.
    
    Fixes: cb8ea62e64020 ("ASoC: amd/sdw_utils: add sof based soundwire generic machine driver")
    Signed-off-by: Li Qiang <liqiang01@kylinos.cn>
    Link: https://patch.msgid.link/20251015075530.146851-1-liqiang01@kylinos.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: codecs: Fix gain setting ranges for Renesas IDT821034 codec [+ + +]
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Thu Oct 9 19:03:13 2025 +0200

    ASoC: codecs: Fix gain setting ranges for Renesas IDT821034 codec
    
    [ Upstream commit 6370a996f308ea3276030769b7482b346e7cc7c1 ]
    
    The gain ranges specified in Renesas IDT821034 codec documentation
    are [-3dB;+13dB] in the transmit path (ADC) and [-13dB;+3dB] in the
    receive path (DAC). Allthough the registers allow programming values
    outside those ranges, the signal S/N and distorsion are only
    guaranteed in the specified ranges.
    
    Set ranges to the specified ones.
    
    Fixes: e51166990e81 ("ASoC: codecs: Add support for the Renesas IDT821034 codec")
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Link: https://patch.msgid.link/2bd547194f3398e6182f770d7d6be711c702b4b2.1760029099.git.christophe.leroy@csgroup.eu
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: nau8821: Add DMI quirk to bypass jack debounce circuit [+ + +]
Author: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Date:   Fri Oct 3 21:03:26 2025 +0300

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

ASoC: nau8821: Cancel jdet_work before handling jack ejection [+ + +]
Author: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Date:   Fri Oct 3 21:03:23 2025 +0300

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

ASoC: nau8821: Generalize helper to clear IRQ status [+ + +]
Author: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Date:   Fri Oct 3 21:03:24 2025 +0300

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

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

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

btrfs: fix clearing of BTRFS_FS_RELOC_RUNNING if relocation already running [+ + +]
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Sep 24 16:10:38 2025 +0100

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

btrfs: fix incorrect readahead expansion length [+ + +]
Author: Boris Burkov <boris@bur.io>
Date:   Tue Sep 30 21:05:17 2025 -0700

    btrfs: fix incorrect readahead expansion length
    
    commit 8ab2fa69691b2913a67f3c54fbb991247b3755be upstream.
    
    The intent of btrfs_readahead_expand() was to expand to the length of
    the current compressed extent being read. However, "ram_bytes" is *not*
    that, in the case where a single physical compressed extent is used for
    multiple file extents.
    
    Consider this case with a large compressed extent C and then later two
    non-compressed extents N1 and N2 written over C, leaving C1 and C2
    pointing to offset/len pairs of C:
    
    [               C                 ]
    [ N1 ][     C1     ][ N2 ][   C2  ]
    
    In such a case, ram_bytes for both C1 and C2 is the full uncompressed
    length of C. So starting readahead in C1 will expand the readahead past
    the end of C1, past N2, and into C2. This will then expand readahead
    again, to C2_start + ram_bytes, way past EOF. First of all, this is
    totally undesirable, we don't want to read the whole file in arbitrary
    chunks of the large underlying extent if it happens to exist. Secondly,
    it results in zeroing the range past the end of C2 up to ram_bytes. This
    is particularly unpleasant with fs-verity as it can zero and set
    uptodate pages in the verity virtual space past EOF. This incorrect
    readahead behavior can lead to verity verification errors, if we iterate
    in a way that happens to do the wrong readahead.
    
    Fix this by using em->len for readahead expansion, not em->ram_bytes,
    resulting in the expected behavior of stopping readahead at the extent
    boundary.
    
    Reported-by: Max Chernoff <git@maxchernoff.ca>
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=2399898
    Fixes: 9e9ff875e417 ("btrfs: use readahead_expand() on compressed extents")
    CC: stable@vger.kernel.org # 6.17
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Boris Burkov <boris@bur.io>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix memory leak on duplicated memory in the qgroup assign ioctl [+ + +]
Author: Miquel Sabaté Solà <mssola@mssola.com>
Date:   Thu Sep 25 20:41:39 2025 +0200

    btrfs: fix memory leak on duplicated memory in the qgroup assign ioctl
    
    commit 53a4acbfc1de85fa637521ffab4f4e2ee03cbeeb upstream.
    
    On 'btrfs_ioctl_qgroup_assign' we first duplicate the argument as
    provided by the user, which is kfree'd in the end. But this was not the
    case when allocating memory for 'prealloc'. In this case, if it somehow
    failed, then the previous code would go directly into calling
    'mnt_drop_write_file', without freeing the string duplicated from the
    user space.
    
    Fixes: 4addc1ffd67a ("btrfs: qgroup: preallocate memory before adding a relation")
    CC: stable@vger.kernel.org # 6.12+
    Reviewed-by: Boris Burkov <boris@bur.io>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

btrfs: fix memory leaks when rejecting a non SINGLE data profile without an RST [+ + +]
Author: Miquel Sabaté Solà <mssola@mssola.com>
Date:   Wed Oct 8 14:18:59 2025 +0200

    btrfs: fix memory leaks when rejecting a non SINGLE data profile without an RST
    
    commit fec9b9d3ced39f16be8d7afdf81f4dd2653da319 upstream.
    
    At the end of btrfs_load_block_group_zone_info() the first thing we do
    is to ensure that if the mapping type is not a SINGLE one and there is
    no RAID stripe tree, then we return early with an error.
    
    Doing that, though, prevents the code from running the last calls from
    this function which are about freeing memory allocated during its
    run. Hence, in this case, instead of returning early, we set the ret
    value and fall through the rest of the cleanup code.
    
    Fixes: 5906333cc4af ("btrfs: zoned: don't skip block group profile checks on conventional zones")
    CC: stable@vger.kernel.org # 6.8+
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
can: gs_usb: gs_make_candev(): populate net_device->dev_port [+ + +]
Author: Celeste Liu <uwu@coelacanthus.name>
Date:   Tue Sep 30 14:53:39 2025 +0800

    can: gs_usb: gs_make_candev(): populate net_device->dev_port
    
    commit a12f0bc764da3781da2019c60826f47a6d7ed64f upstream.
    
    The gs_usb driver supports USB devices with more than 1 CAN channel.
    In old kernel before 3.15, it uses net_device->dev_id to distinguish
    different channel in userspace, which was done in commit
    acff76fa45b4 ("can: gs_usb: gs_make_candev(): set netdev->dev_id").
    But since 3.15, the correct way is populating net_device->dev_port.
    And according to documentation, if network device support multiple
    interface, lack of net_device->dev_port SHALL be treated as a bug.
    
    Fixes: acff76fa45b4 ("can: gs_usb: gs_make_candev(): set netdev->dev_id")
    Cc: stable@vger.kernel.org
    Signed-off-by: Celeste Liu <uwu@coelacanthus.name>
    Link: https://patch.msgid.link/20250930-gs-usb-populate-net_device-dev_port-v1-1-68a065de6937@coelacanthus.name
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

can: gs_usb: increase max interface to U8_MAX [+ + +]
Author: Celeste Liu <uwu@coelacanthus.name>
Date:   Tue Sep 30 19:34:28 2025 +0800

    can: gs_usb: increase max interface to U8_MAX
    
    commit 2a27f6a8fb5722223d526843040f747e9b0e8060 upstream.
    
    This issue was found by Runcheng Lu when develop HSCanT USB to CAN FD
    converter[1]. The original developers may have only 3 interfaces
    device to test so they write 3 here and wait for future change.
    
    During the HSCanT development, we actually used 4 interfaces, so the
    limitation of 3 is not enough now. But just increase one is not
    future-proofed. Since the channel index type in gs_host_frame is u8,
    just make canch[] become a flexible array with a u8 index, so it
    naturally constraint by U8_MAX and avoid statically allocate 256
    pointer for every gs_usb device.
    
    [1]: https://github.com/cherry-embedded/HSCanT-hardware
    
    Fixes: d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices")
    Reported-by: Runcheng Lu <runcheng.lu@hpmicro.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Vincent Mailhol <mailhol@kernel.org>
    Signed-off-by: Celeste Liu <uwu@coelacanthus.name>
    Link: https://patch.msgid.link/20250930-gs-usb-max-if-v5-1-863330bf6666@coelacanthus.name
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

can: m_can: add deinit callback [+ + +]
Author: Sean Nyekjaer <sean@geanix.com>
Date:   Fri Nov 22 15:52:22 2024 +0100

    can: m_can: add deinit callback
    
    [ Upstream commit baa8aaf79768b72eb7a181c476ca0291613f59e6 ]
    
    This is added in preparation for calling standby mode in the tcan4x5x
    driver or other users of m_can.
    For the tcan4x5x; If Vsup 12V, standby mode will save 7-8mA, when the
    interface is down.
    
    Signed-off-by: Sean Nyekjaer <sean@geanix.com>
    Link: https://patch.msgid.link/20241122-tcan-standby-v3-1-90bafaf5eccd@geanix.com
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Stable-dep-of: a9e30a22d6f2 ("can: m_can: fix CAN state in system PM")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

can: m_can: call deinit/init callback when going into suspend/resume [+ + +]
Author: Sean Nyekjaer <sean@geanix.com>
Date:   Fri Nov 22 15:52:24 2024 +0100

    can: m_can: call deinit/init callback when going into suspend/resume
    
    [ Upstream commit ad1ddb3bfb0c9193eb19d4788192904350c7e51a ]
    
    m_can user like the tcan4x5x device, can go into standby mode.
    Low power RX mode is enabled to allow wake on can.
    
    Signed-off-by: Sean Nyekjaer <sean@geanix.com>
    Link: https://patch.msgid.link/20241122-tcan-standby-v3-3-90bafaf5eccd@geanix.com
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Stable-dep-of: a9e30a22d6f2 ("can: m_can: fix CAN state in system PM")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

can: m_can: fix CAN state in system PM [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Aug 12 16:58:31 2025 +0200

    can: m_can: fix CAN state in system PM
    
    [ Upstream commit a9e30a22d6f23a2684c248871cad4c3061181639 ]
    
    A suspend/resume cycle on a down interface results in the interface
    coming up in Error Active state. A suspend/resume cycle on an Up
    interface will always result in Error Active state, regardless of the
    actual CAN state.
    
    During suspend, only set running interfaces to CAN_STATE_SLEEPING.
    During resume only touch the CAN state of running interfaces. For
    wakeup sources, set the CAN state depending on the Protocol Status
    Regitser (PSR), for non wakeup source interfaces m_can_start() will do
    the same.
    
    Fixes: e0d1f4816f2a ("can: m_can: add Bosch M_CAN controller support")
    Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
    Link: https://patch.msgid.link/20250929-m_can-fix-state-handling-v4-4-682b49b49d9a@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

can: m_can: m_can_chip_config(): bring up interface in correct state [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Wed Aug 6 18:24:12 2025 +0200

    can: m_can: m_can_chip_config(): bring up interface in correct state
    
    [ Upstream commit 4942c42fe1849e6d68dfb5b36ccba344a9fac016 ]
    
    In some SoCs (observed on the STM32MP15) the M_CAN IP core keeps the
    CAN state and CAN error counters over an internal reset cycle. An
    external reset is not always possible, due to the shared reset with
    the other CAN core. This caused the core not always be in Error Active
    state when bringing up the controller.
    
    Instead of always setting the CAN state to Error Active in
    m_can_chip_config(), fix this by reading and decoding the Protocol
    Status Regitser (PSR) and set the CAN state accordingly.
    
    Fixes: e0d1f4816f2a ("can: m_can: add Bosch M_CAN controller support")
    Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
    Link: https://patch.msgid.link/20250929-m_can-fix-state-handling-v4-3-682b49b49d9a@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

can: m_can: m_can_handle_state_errors(): fix CAN state transition to Error Active [+ + +]
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Wed Aug 6 16:56:15 2025 +0200

    can: m_can: m_can_handle_state_errors(): fix CAN state transition to Error Active
    
    [ Upstream commit 3d9db29b45f970d81acf61cf91a65442efbeb997 ]
    
    The CAN Error State is determined by the receive and transmit error
    counters. The CAN error counters decrease when reception/transmission
    is successful, so that a status transition back to the Error Active
    status is possible. This transition is not handled by
    m_can_handle_state_errors().
    
    Add the missing detection of the Error Active state to
    m_can_handle_state_errors() and extend the handling of this state in
    m_can_handle_state_change().
    
    Fixes: e0d1f4816f2a ("can: m_can: add Bosch M_CAN controller support")
    Fixes: cd0d83eab2e0 ("can: m_can: m_can_handle_state_change(): fix state change")
    Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
    Link: https://patch.msgid.link/20250929-m_can-fix-state-handling-v4-2-682b49b49d9a@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Stable-dep-of: 4942c42fe184 ("can: m_can: m_can_chip_config(): bring up interface in correct state")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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

    can: m_can: m_can_plat_remove(): add missing pm_runtime_disable()
    
    [ Upstream commit ba569fb07a7e9e9b71e9282e27e993ba859295c2 ]
    
    Commit 227619c3ff7c ("can: m_can: move runtime PM enable/disable to
    m_can_platform") moved the PM runtime enable from the m_can core
    driver into the m_can_platform.
    
    That patch forgot to move the pm_runtime_disable() to
    m_can_plat_remove(), so that unloading the m_can_platform driver
    causes an "Unbalanced pm_runtime_enable!" error message.
    
    Add the missing pm_runtime_disable() to m_can_plat_remove() to fix the
    problem.
    
    Cc: Patrik Flykt <patrik.flykt@linux.intel.com>
    Fixes: 227619c3ff7c ("can: m_can: move runtime PM enable/disable to m_can_platform")
    Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
    Link: https://patch.msgid.link/20250929-m_can-fix-state-handling-v4-1-682b49b49d9a@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
cdx: Fix device node reference leak in cdx_msi_domain_init [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Sat Oct 18 11:14:10 2025 -0400

    cdx: Fix device node reference leak in cdx_msi_domain_init
    
    [ Upstream commit 76254bc489d39dae9a3427f0984fe64213d20548 ]
    
    Add missing of_node_put() call to release
    the device node reference obtained via of_parse_phandle().
    
    Fixes: 0e439ba38e61 ("cdx: add MSI support for CDX bus")
    Cc: stable@vger.kernel.org
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Acked-by: Nipun Gupta <nipun.gupta@amd.com>
    Link: https://lore.kernel.org/r/20250902084933.2418264-1-linmq006@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cifs: parse_dfs_referrals: prevent oob on malformed input [+ + +]
Author: Eugene Korenevsky <ekorenevsky@aliyun.com>
Date:   Mon Oct 13 21:39:30 2025 +0300

    cifs: parse_dfs_referrals: prevent oob on malformed input
    
    commit 6447b0e355562a1ff748c4a2ffb89aae7e84d2c9 upstream.
    
    Malicious SMB server can send invalid reply to FSCTL_DFS_GET_REFERRALS
    
    - reply smaller than sizeof(struct get_dfs_referral_rsp)
    - reply with number of referrals smaller than NumberOfReferrals in the
    header
    
    Processing of such replies will cause oob.
    
    Return -EINVAL error on such replies to prevent oob-s.
    
    Signed-off-by: Eugene Korenevsky <ekorenevsky@aliyun.com>
    Cc: stable@vger.kernel.org
    Suggested-by: Nathan Chancellor <nathan@kernel.org>
    Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cpufreq: CPPC: Avoid using CPUFREQ_ETERNAL as transition delay [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Sat Oct 18 12:13:41 2025 -0400

    cpufreq: CPPC: Avoid using CPUFREQ_ETERNAL as transition delay
    
    [ Upstream commit f965d111e68f4a993cc44d487d416e3d954eea11 ]
    
    If cppc_get_transition_latency() returns CPUFREQ_ETERNAL to indicate a
    failure to retrieve the transition latency value from the platform
    firmware, the CPPC cpufreq driver will use that value (converted to
    microseconds) as the policy transition delay, but it is way too large
    for any practical use.
    
    Address this by making the driver use the cpufreq's default
    transition latency value (in microseconds) as the transition delay
    if CPUFREQ_ETERNAL is returned by cppc_get_transition_latency().
    
    Fixes: d4f3388afd48 ("cpufreq / CPPC: Set platform specific transition_delay_us")
    Cc: 5.19+ <stable@vger.kernel.org> # 5.19
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
    Reviewed-by: Jie Zhan <zhanjie9@hisilicon.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Reviewed-by: Qais Yousef <qyousef@layalina.io>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
d_alloc_parallel(): set DCACHE_PAR_LOOKUP earlier [+ + +]
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Oct 20 13:28:58 2025 -0400

    d_alloc_parallel(): set DCACHE_PAR_LOOKUP earlier
    
    [ Upstream commit e95db51c81f54dd12ea465b5127e4786f62a1095 ]
    
    Do that before new dentry is visible anywhere.  It does create
    a new possible state for dentries present in ->d_children/->d_sib -
    DCACHE_PAR_LOOKUP present, negative, unhashed, not in in-lookup
    hash chains, refcount positive.  Those are going to be skipped
    by all tree-walkers (both d_walk() callbacks in fs/dcache.c and
    explicit loops over children/sibling lists elsewhere) and
    dput() is fine with those.
    
    NOTE: dropping the final reference to a "normal" in-lookup dentry
    (in in-lookup hash) is a bug - somebody must've forgotten to
    call d_lookup_done() on it and bad things will happen.  With those
    it's OK; if/when we get around to making __dentry_kill() complain
    about such breakage, remember that predicate to check should
    *not* be just d_in_lookup(victim) but rather a combination of that
    with !hlist_bl_unhashed(&victim->d_u.d_in_lookup_hash).  Might
    be worth considering later...
    
    Reviewed-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Stable-dep-of: 56094ad3eaa2 ("vfs: Don't leak disconnected dentries on umount")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

 
dmaengine: Add missing cleanup on module unload [+ + +]
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Oct 20 10:04:22 2025 -0700

    dmaengine: Add missing cleanup on module unload
    
    Upstream commit b7cb9a034305 ("dmaengine: idxd: Fix refcount underflow
    on module unload") fixes a refcount underflow by replacing the call to
    idxd_cleanup() in the remove function with direct cleanup calls. That works
    fine upstream. However, upstream removed support for IOMMU_DEV_FEAT_IOPF,
    which is still supported in v6.12.y. The backport of commit b7cb9a034305
    into v6.12.y misses the call to disable it. This results in a warning
    backtrace when unloading and reloading the module.
    
    WARNING: CPU: 0 PID: 665849 at drivers/pci/ats.c:337 pci_reset_pri+0x4c/0x60
    ...
    RIP: 0010:pci_reset_pri+0xa7/0x130
    
    Add the missing cleanup call to fix the problem.
    
    Fixes: ce81905bec91 ("dmaengine: idxd: Fix refcount underflow on module unload")
    Cc: Yi Sun <yi.sun@intel.com>
    Cc: Shuai Xue <xueshuai@linux.alibaba.com>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Cc: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Acked-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
doc: fix seg6_flowlabel path [+ + +]
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Fri Oct 10 16:18:59 2025 +0200

    doc: fix seg6_flowlabel path
    
    [ Upstream commit 0b4b77eff5f8cd9be062783a1c1e198d46d0a753 ]
    
    This sysctl is not per interface; it's global per netns.
    
    Fixes: 292ecd9f5a94 ("doc: move seg6_flowlabel to seg6-sysctl.rst")
    Reported-by: Philippe Guibert <philippe.guibert@6wind.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/powerplay: Fix CIK shutdown temperature [+ + +]
Author: Timur Kristóf <timur.kristof@gmail.com>
Date:   Mon Oct 13 08:06:42 2025 +0200

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

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

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

 
drm/amdgpu: add ip offset support for cyan skillfish [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Jun 27 10:12:36 2025 -0400

    drm/amdgpu: add ip offset support for cyan skillfish
    
    [ Upstream commit e8529dbc75cab56fc3c57830d0fd48cbd8911e6c ]
    
    For chips that don't have IP discovery tables.
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 357d90be2c7a ("drm/amdgpu: fix handling of harvesting for ip_discovery firmware")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: add support for cyan skillfish without IP discovery [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Jun 27 10:18:46 2025 -0400

    drm/amdgpu: add support for cyan skillfish without IP discovery
    
    [ Upstream commit 9e6a5cf1a23bf575e93544ae05585659063b1c18 ]
    
    For platforms without an IP discovery table.
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Stable-dep-of: 357d90be2c7a ("drm/amdgpu: fix handling of harvesting for ip_discovery firmware")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/amdgpu: fix gfx12 mes packet status return check [+ + +]
Author: Jonathan Kim <jonathan.kim@amd.com>
Date:   Thu Oct 9 10:45:42 2025 -0400

    drm/amdgpu: fix gfx12 mes packet status return check
    
    commit d0de79f66a80eeb849033fae34bd07a69ce72235 upstream.
    
    GFX12 MES uses low 32 bits of status return for success (1 or 0)
    and high bits for debug information if low bits are 0.
    
    GFX11 MES doesn't do this so checking full 64-bit status return
    for 1 or 0 is still valid.
    
    Signed-off-by: Jonathan Kim <jonathan.kim@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amdgpu: fix handling of harvesting for ip_discovery firmware [+ + +]
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Sep 26 17:31:32 2025 -0400

    drm/amdgpu: fix handling of harvesting for ip_discovery firmware
    
    [ Upstream commit 357d90be2c7aaa526a840cddffd2b8d676fe75a6 ]
    
    Chips which use the IP discovery firmware loaded by the driver
    reported incorrect harvesting information in the ip discovery
    table in sysfs because the driver only uses the ip discovery
    firmware for populating sysfs and not for direct parsing for the
    driver itself as such, the fields that are used to print the
    harvesting info in sysfs report incorrect data for some IPs.  Populate
    the relevant fields for this case as well.
    
    Fixes: 514678da56da ("drm/amdgpu/discovery: fix fw based ip discovery")
    Acked-by: Tom St Denis <tom.stdenis@amd.com>
    Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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

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

 
drm/bridge: lt9211: Drop check for last nibble of version register [+ + +]
Author: Marek Vasut <marek.vasut@mailbox.org>
Date:   Sat Oct 11 12:59:53 2025 +0200

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

 
drm/draw: fix color truncation in drm_draw_fill24 [+ + +]
Author: Francesco Valla <francesco@valla.it>
Date:   Fri Oct 3 12:33:03 2025 +0200

    drm/draw: fix color truncation in drm_draw_fill24
    
    [ Upstream commit 095232711f23179053ca26bcf046ca121a91a465 ]
    
    The color parameter passed to drm_draw_fill24() was truncated to 16
    bits, leading to an incorrect color drawn to the target iosys_map.
    Fix this behavior, widening the parameter to 32 bits.
    
    Fixes: 31fa2c1ca0b2 ("drm/panic: Move drawing functions to drm_draw")
    
    Signed-off-by: Francesco Valla <francesco@valla.it>
    Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
    Link: https://lore.kernel.org/r/20251003-drm_draw_fill24_fix-v1-1-8fb7c1c2a893@valla.it
    Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/exynos: exynos7_drm_decon: fix uninitialized crtc reference in functions [+ + +]
Author: Kaustabh Chakraborty <kauschluss@disroot.org>
Date:   Fri Oct 17 22:05:13 2025 -0400

    drm/exynos: exynos7_drm_decon: fix uninitialized crtc reference in functions
    
    [ Upstream commit d31bbacf783daf1e71fbe5c68df93550c446bf44 ]
    
    Modify the functions to accept a pointer to struct decon_context
    instead.
    
    Signed-off-by: Kaustabh Chakraborty <kauschluss@disroot.org>
    Signed-off-by: Inki Dae <inki.dae@samsung.com>
    Stable-dep-of: e1361a4f1be9 ("drm/exynos: exynos7_drm_decon: remove ctx->suspended")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/exynos: exynos7_drm_decon: properly clear channels during bind [+ + +]
Author: Kaustabh Chakraborty <kauschluss@disroot.org>
Date:   Fri Oct 17 22:05:14 2025 -0400

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

drm/exynos: exynos7_drm_decon: remove ctx->suspended [+ + +]
Author: Kaustabh Chakraborty <kauschluss@disroot.org>
Date:   Fri Oct 17 22:05:15 2025 -0400

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

 
drm/i915/guc: Skip communication warning on reset in progress [+ + +]
Author: Zhanjun Dong <zhanjun.dong@intel.com>
Date:   Mon Sep 29 11:29:04 2025 -0400

    drm/i915/guc: Skip communication warning on reset in progress
    
    [ Upstream commit 1696b0cfcf004a3af34ffe4c57a14e837ef18144 ]
    
    GuC IRQ and tasklet handler receive just single G2H message, and let other
    messages to be received from next tasklet. During this chained tasklet
    process, if reset process started, communication will be disabled.
    Skip warning for this condition.
    
    Fixes: 65dd4ed0f4e1 ("drm/i915/guc: Don't receive all G2H messages in irq handler")
    Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15018
    Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
    Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
    Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Link: https://lore.kernel.org/r/20250929152904.269776-1-zhanjun.dong@intel.com
    (cherry picked from commit 604b5ee4a653a70979ce689dbd6a5d942eb016bf)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/msm/a6xx: Fix PDC sleep sequence [+ + +]
Author: Akhil P Oommen <akhilpo@oss.qualcomm.com>
Date:   Fri Oct 17 22:28:32 2025 -0400

    drm/msm/a6xx: Fix PDC sleep sequence
    
    [ Upstream commit f248d5d5159a88ded55329f0b1b463d0f4094228 ]
    
    Since the PDC resides out of the GPU subsystem and cannot be reset in
    case it enters bad state, utmost care must be taken to trigger the PDC
    wake/sleep routines in the correct order.
    
    The PDC wake sequence can be exercised only after a PDC sleep sequence.
    Additionally, GMU firmware should initialize a few registers before the
    KMD can trigger a PDC sleep sequence. So PDC sleep can't be done if the
    GMU firmware has not initialized. Track these dependencies using a new
    status variable and trigger PDC sleep/wake sequences appropriately.
    
    Cc: stable@vger.kernel.org
    Fixes: 4b565ca5a2cb ("drm/msm: Add A6XX device support")
    Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
    Patchwork: https://patchwork.freedesktop.org/patch/673362/
    Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/panthor: Ensure MCU is disabled on suspend [+ + +]
Author: Ketil Johnsen <ketil.johnsen@arm.com>
Date:   Wed Oct 8 12:51:11 2025 +0200

    drm/panthor: Ensure MCU is disabled on suspend
    
    [ Upstream commit e07e10ae83bdf429f59c8c149173a8c4f29c481e ]
    
    Currently the Panthor driver needs the GPU to be powered down
    between suspend and resume. If this is not done, then the
    MCU_CONTROL register will be preserved as AUTO, which again will
    cause a premature FW boot on resume. The FW will go directly into
    fatal state in this case.
    
    This case needs to be handled as there is no guarantee that the
    GPU will be powered down after the suspend callback on all platforms.
    
    The fix is to call panthor_fw_stop() in "pre-reset" path to ensure
    the MCU_CONTROL register is cleared (set DISABLE). This matches
    well with the already existing call to panthor_fw_start() from the
    "post-reset" path.
    
    Signed-off-by: Ketil Johnsen <ketil.johnsen@arm.com>
    Acked-by: Boris Brezillon <boris.brezillon@collabora.com>
    Reviewed-by: Steven Price <steven.price@arm.com>
    Fixes: 2718d91816ee ("drm/panthor: Add the FW logical block")
    Signed-off-by: Steven Price <steven.price@arm.com>
    Link: https://lore.kernel.org/r/20251008105112.4077015-1-ketil.johnsen@arm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/rockchip: vop2: use correct destination rectangle height check [+ + +]
Author: Alok Tiwari <alok.a.tiwari@oracle.com>
Date:   Sun Oct 12 07:20:01 2025 -0700

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

 
drm/sched: Fix potential double free in drm_sched_job_add_resv_dependencies [+ + +]
Author: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Date:   Wed Oct 15 09:40:15 2025 +0100

    drm/sched: Fix potential double free in drm_sched_job_add_resv_dependencies
    
    commit 5801e65206b065b0b2af032f7f1eef222aa2fd83 upstream.
    
    When adding dependencies with drm_sched_job_add_dependency(), that
    function consumes the fence reference both on success and failure, so in
    the latter case the dma_fence_put() on the error path (xarray failed to
    expand) is a double free.
    
    Interestingly this bug appears to have been present ever since
    commit ebd5f74255b9 ("drm/sched: Add dependency tracking"), since the code
    back then looked like this:
    
    drm_sched_job_add_implicit_dependencies():
    ...
           for (i = 0; i < fence_count; i++) {
                   ret = drm_sched_job_add_dependency(job, fences[i]);
                   if (ret)
                           break;
           }
    
           for (; i < fence_count; i++)
                   dma_fence_put(fences[i]);
    
    Which means for the failing 'i' the dma_fence_put was already a double
    free. Possibly there were no users at that time, or the test cases were
    insufficient to hit it.
    
    The bug was then only noticed and fixed after
    commit 9c2ba265352a ("drm/scheduler: use new iterator in drm_sched_job_add_implicit_dependencies v2")
    landed, with its fixup of
    commit 4eaf02d6076c ("drm/scheduler: fix drm_sched_job_add_implicit_dependencies").
    
    At that point it was a slightly different flavour of a double free, which
    commit 963d0b356935 ("drm/scheduler: fix drm_sched_job_add_implicit_dependencies harder")
    noticed and attempted to fix.
    
    But it only moved the double free from happening inside the
    drm_sched_job_add_dependency(), when releasing the reference not yet
    obtained, to the caller, when releasing the reference already released by
    the former in the failure case.
    
    As such it is not easy to identify the right target for the fixes tag so
    lets keep it simple and just continue the chain.
    
    While fixing we also improve the comment and explain the reason for taking
    the reference and not dropping it.
    
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
    Fixes: 963d0b356935 ("drm/scheduler: fix drm_sched_job_add_implicit_dependencies harder")
    Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
    Closes: https://lore.kernel.org/dri-devel/aNFbXq8OeYl3QSdm@stanley.mountain/
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Rob Clark <robdclark@chromium.org>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Matthew Brost <matthew.brost@intel.com>
    Cc: Danilo Krummrich <dakr@kernel.org>
    Cc: Philipp Stanner <phasta@kernel.org>
    Cc: Christian König <ckoenig.leichtzumerken@gmail.com>
    Cc: dri-devel@lists.freedesktop.org
    Cc: stable@vger.kernel.org # v5.16+
    Signed-off-by: Philipp Stanner <phasta@kernel.org>
    Link: https://lore.kernel.org/r/20251015084015.6273-1-tvrtko.ursulin@igalia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/xe/guc: Check GuC running state before deregistering exec queue [+ + +]
Author: Shuicheng Lin <shuicheng.lin@intel.com>
Date:   Fri Oct 10 17:25:29 2025 +0000

    drm/xe/guc: Check GuC running state before deregistering exec queue
    
    commit 9f64b3cd051b825de0a2a9f145c8e003200cedd5 upstream.
    
    In normal operation, a registered exec queue is disabled and
    deregistered through the GuC, and freed only after the GuC confirms
    completion. However, if the driver is forced to unbind while the exec
    queue is still running, the user may call exec_destroy() after the GuC
    has already been stopped and CT communication disabled.
    
    In this case, the driver cannot receive a response from the GuC,
    preventing proper cleanup of exec queue resources. Fix this by directly
    releasing the resources when GuC is not running.
    
    Here is the failure dmesg log:
    "
    [  468.089581] ---[ end trace 0000000000000000 ]---
    [  468.089608] pci 0000:03:00.0: [drm] *ERROR* GT0: GUC ID manager unclean (1/65535)
    [  468.090558] pci 0000:03:00.0: [drm] GT0:     total 65535
    [  468.090562] pci 0000:03:00.0: [drm] GT0:     used 1
    [  468.090564] pci 0000:03:00.0: [drm] GT0:     range 1..1 (1)
    [  468.092716] ------------[ cut here ]------------
    [  468.092719] WARNING: CPU: 14 PID: 4775 at drivers/gpu/drm/xe/xe_ttm_vram_mgr.c:298 ttm_vram_mgr_fini+0xf8/0x130 [xe]
    "
    
    v2: use xe_uc_fw_is_running() instead of xe_guc_ct_enabled().
        As CT may go down and come back during VF migration.
    
    Fixes: dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
    Cc: stable@vger.kernel.org
    Cc: Matthew Brost <matthew.brost@intel.com>
    Signed-off-by: Shuicheng Lin <shuicheng.lin@intel.com>
    Reviewed-by: Matthew Brost <matthew.brost@intel.com>
    Signed-off-by: Matthew Brost <matthew.brost@intel.com>
    Link: https://lore.kernel.org/r/20251010172529.2967639-2-shuicheng.lin@intel.com
    (cherry picked from commit 9b42321a02c50a12b2beb6ae9469606257fbecea)
    Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
ext4: detect invalid INLINE_DATA + EXTENTS flag combination [+ + +]
Author: Deepanshu Kartikey <kartikey406@gmail.com>
Date:   Tue Sep 30 16:58:10 2025 +0530

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

ext4: wait for ongoing I/O to complete before freeing blocks [+ + +]
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Tue Sep 16 17:33:37 2025 +0800

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

 
f2fs: fix wrong block mapping for multi-devices [+ + +]
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Tue Oct 7 03:32:30 2025 +0000

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

 
hfsplus: fix slab-out-of-bounds read in hfsplus_strcasecmp() [+ + +]
Author: Viacheslav Dubeyko <slava@dubeyko.com>
Date:   Fri Sep 19 12:12:44 2025 -0700

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

 
HID: hid-input: only ignore 0 battery events for digitizers [+ + +]
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Tue Oct 14 21:28:44 2025 -0700

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

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

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

HID: multitouch: fix sticky fingers [+ + +]
Author: Benjamin Tissoires <bentiss@kernel.org>
Date:   Wed Oct 8 16:06:58 2025 +0200

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

 
iio: imu: inv_icm42600: Avoid configuring if already pm_runtime suspended [+ + +]
Author: Sean Nyekjaer <sean@geanix.com>
Date:   Mon Oct 20 09:08:10 2025 -0400

    iio: imu: inv_icm42600: Avoid configuring if already pm_runtime suspended
    
    [ Upstream commit 466f7a2fef2a4e426f809f79845a1ec1aeb558f4 ]
    
    Do as in suspend, skip resume configuration steps if the device is already
    pm_runtime suspended. This avoids reconfiguring a device that is already
    in the correct low-power state and ensures that pm_runtime handles the
    power state transitions properly.
    
    Fixes: 31c24c1e93c3 ("iio: imu: inv_icm42600: add core of new inv_icm42600 driver")
    Signed-off-by: Sean Nyekjaer <sean@geanix.com>
    Link: https://patch.msgid.link/20250901-icm42pmreg-v3-3-ef1336246960@geanix.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    [ removed apex/wakeup variable declarations ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

iio: imu: inv_icm42600: Simplify pm_runtime setup [+ + +]
Author: Sean Nyekjaer <sean@geanix.com>
Date:   Mon Oct 20 09:02:39 2025 -0400

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

 
ipv4: adopt dst_dev, skb_dst_dev and skb_dst_dev_net[_rcu] [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Oct 20 11:44:05 2025 -0400

    ipv4: adopt dst_dev, skb_dst_dev and skb_dst_dev_net[_rcu]
    
    [ Upstream commit a74fc62eec155ca5a6da8ff3856f3dc87fe24558 ]
    
    Use the new helpers as a first step to deal with
    potential dst->dev races.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
    Link: https://patch.msgid.link/20250630121934.3399505-8-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 833d4313bc1e ("mptcp: reset blackhole on success with non-loopback ifaces")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
irqdomain: cdx: Switch to of_fwnode_handle() [+ + +]
Author: Jiri Slaby (SUSE) <jirislaby@kernel.org>
Date:   Sat Oct 18 11:14:09 2025 -0400

    irqdomain: cdx: Switch to of_fwnode_handle()
    
    [ Upstream commit 2a87a55f2281a1096d9e77ac6309b9128c107d97 ]
    
    of_node_to_fwnode() is irqdomain's reimplementation of the "officially"
    defined of_fwnode_handle(). The former is in the process of being
    removed, so use the latter instead.
    
    Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
    Cc: Nipun Gupta <nipun.gupta@amd.com>
    Cc: Nikhil Agarwal <nikhil.agarwal@amd.com>
    Acked-by: Nipun Gupta <nipun.gupta@amd.com>
    Link: https://lore.kernel.org/r/20250415104734.106849-1-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stable-dep-of: 76254bc489d3 ("cdx: Fix device node reference leak in cdx_msi_domain_init")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ixgbevf: Add support for Intel(R) E610 device [+ + +]
Author: Piotr Kwapulinski <piotr.kwapulinski@intel.com>
Date:   Mon Oct 20 13:28:39 2025 -0400

    ixgbevf: Add support for Intel(R) E610 device
    
    [ Upstream commit 4c44b450c69b676955c2790dcf467c1f969d80f1 ]
    
    Add support for Intel(R) E610 Series of network devices. The E610
    is based on X550 but adds firmware managed link, enhanced security
    capabilities and support for updated server manageability
    
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: Piotr Kwapulinski <piotr.kwapulinski@intel.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Stable-dep-of: a7075f501bd3 ("ixgbevf: fix mailbox API compatibility by negotiating supported features")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ixgbevf: fix getting link speed data for E610 devices [+ + +]
Author: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Date:   Mon Oct 20 13:28:40 2025 -0400

    ixgbevf: fix getting link speed data for E610 devices
    
    [ Upstream commit 53f0eb62b4d23d40686f2dd51776b8220f2887bb ]
    
    E610 adapters no longer use the VFLINKS register to read PF's link
    speed and linkup state. As a result VF driver cannot get actual link
    state and it incorrectly reports 10G which is the default option.
    It leads to a situation where even 1G adapters print 10G as actual
    link speed. The same happens when PF driver set speed different than 10G.
    
    Add new mailbox operation to let the VF driver request a PF driver
    to provide actual link data. Update the mailbox api to v1.6.
    
    Incorporate both ways of getting link status within the legacy
    ixgbe_check_mac_link_vf() function.
    
    Fixes: 4c44b450c69b ("ixgbevf: Add support for Intel(R) E610 device")
    Co-developed-by: Andrzej Wilczynski <andrzejx.wilczynski@intel.com>
    Signed-off-by: Andrzej Wilczynski <andrzejx.wilczynski@intel.com>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/20251009-jk-iwl-net-2025-10-01-v3-2-ef32a425b92a@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: a7075f501bd3 ("ixgbevf: fix mailbox API compatibility by negotiating supported features")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ixgbevf: fix mailbox API compatibility by negotiating supported features [+ + +]
Author: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Date:   Mon Oct 20 13:28:41 2025 -0400

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

 
jbd2: ensure that all ongoing I/O complete before freeing blocks [+ + +]
Author: Zhang Yi <yi.zhang@huawei.com>
Date:   Tue Sep 16 17:33:36 2025 +0800

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

 
ksmbd: fix recursive locking in RPC handle list access [+ + +]
Author: Marios Makassikis <mmakassikis@freebox.fr>
Date:   Wed Oct 15 09:25:46 2025 +0200

    ksmbd: fix recursive locking in RPC handle list access
    
    [ Upstream commit 88f170814fea74911ceab798a43cbd7c5599bed4 ]
    
    Since commit 305853cce3794 ("ksmbd: Fix race condition in RPC handle list
    access"), ksmbd_session_rpc_method() attempts to lock sess->rpc_lock.
    
    This causes hung connections / tasks when a client attempts to open
    a named pipe. Using Samba's rpcclient tool:
    
     $ rpcclient //192.168.1.254 -U user%password
     $ rpcclient $> srvinfo
     <connection hung here>
    
    Kernel side:
      "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      task:kworker/0:0 state:D stack:0 pid:5021 tgid:5021 ppid:2 flags:0x00200000
      Workqueue: ksmbd-io handle_ksmbd_work
      Call trace:
      __schedule from schedule+0x3c/0x58
      schedule from schedule_preempt_disabled+0xc/0x10
      schedule_preempt_disabled from rwsem_down_read_slowpath+0x1b0/0x1d8
      rwsem_down_read_slowpath from down_read+0x28/0x30
      down_read from ksmbd_session_rpc_method+0x18/0x3c
      ksmbd_session_rpc_method from ksmbd_rpc_open+0x34/0x68
      ksmbd_rpc_open from ksmbd_session_rpc_open+0x194/0x228
      ksmbd_session_rpc_open from create_smb2_pipe+0x8c/0x2c8
      create_smb2_pipe from smb2_open+0x10c/0x27ac
      smb2_open from handle_ksmbd_work+0x238/0x3dc
      handle_ksmbd_work from process_scheduled_works+0x160/0x25c
      process_scheduled_works from worker_thread+0x16c/0x1e8
      worker_thread from kthread+0xa8/0xb8
      kthread from ret_from_fork+0x14/0x38
      Exception stack(0x8529ffb0 to 0x8529fff8)
    
    The task deadlocks because the lock is already held:
      ksmbd_session_rpc_open
        down_write(&sess->rpc_lock)
        ksmbd_rpc_open
          ksmbd_session_rpc_method
            down_read(&sess->rpc_lock)   <-- deadlock
    
    Adjust ksmbd_session_rpc_method() callers to take the lock when necessary.
    
    Fixes: 305853cce3794 ("ksmbd: Fix race condition in RPC handle list access")
    Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
    Acked-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Linux: Linux 6.12.55 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Oct 23 16:20:48 2025 +0200

    Linux 6.12.55
    
    Link: https://lore.kernel.org/r/20251021195035.953989698@linuxfoundation.org
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Link: https://lore.kernel.org/r/20251022060141.370358070@linuxfoundation.org
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Dileep Malepu <dileep.debian@gmail.com>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
md/raid0: Handle bio_split() errors [+ + +]
Author: John Garry <john.g.garry@oracle.com>
Date:   Mon Oct 20 09:06:46 2025 -0400

    md/raid0: Handle bio_split() errors
    
    [ Upstream commit 74538fdac3e85aae55eb4ed786478ed2384cb85d ]
    
    Add proper bio_split() error handling. For any error, set bi_status, end
    the bio, and return.
    
    Reviewed-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: John Garry <john.g.garry@oracle.com>
    Link: https://lore.kernel.org/r/20241111112150.3756529-5-john.g.garry@oracle.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 22f166218f73 ("md: fix mssing blktrace bio split events")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
md/raid10: Handle bio_split() errors [+ + +]
Author: John Garry <john.g.garry@oracle.com>
Date:   Mon Oct 20 09:06:48 2025 -0400

    md/raid10: Handle bio_split() errors
    
    [ Upstream commit 4cf58d9529097328b669e3c8693ed21e3a041903 ]
    
    Add proper bio_split() error handling. For any error, call
    raid_end_bio_io() and return. Except for discard, where we end the bio
    directly.
    
    Reviewed-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: John Garry <john.g.garry@oracle.com>
    Link: https://lore.kernel.org/r/20241111112150.3756529-7-john.g.garry@oracle.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 22f166218f73 ("md: fix mssing blktrace bio split events")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
md/raid1: Handle bio_split() errors [+ + +]
Author: John Garry <john.g.garry@oracle.com>
Date:   Mon Oct 20 09:06:47 2025 -0400

    md/raid1: Handle bio_split() errors
    
    [ Upstream commit b1a7ad8b5c4fa28325ee7b369a2d545d3e16ccde ]
    
    Add proper bio_split() error handling. For any error, call
    raid_end_bio_io() and return.
    
    For the case of an in the write path, we need to undo the increment in
    the rdev pending count and NULLify the r1_bio->bios[] pointers.
    
    For read path failure, we need to undo rdev pending count increment from
    the earlier read_balance() call.
    
    Reviewed-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: John Garry <john.g.garry@oracle.com>
    Link: https://lore.kernel.org/r/20241111112150.3756529-6-john.g.garry@oracle.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Stable-dep-of: 22f166218f73 ("md: fix mssing blktrace bio split events")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
md: fix mssing blktrace bio split events [+ + +]
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Mon Oct 20 09:06:49 2025 -0400

    md: fix mssing blktrace bio split events
    
    [ Upstream commit 22f166218f7313e8fe2d19213b5f4b3265f8c39e ]
    
    If bio is split by internal handling like chunksize or badblocks, the
    corresponding trace_block_split() is missing, resulting in blktrace
    inability to catch BIO split events and making it harder to analyze the
    BIO sequence.
    
    Cc: stable@vger.kernel.org
    Fixes: 4b1faf931650 ("block: Kill bio_pair_split()")
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
media: nxp: imx8-isi: Drop unused argument to mxc_isi_channel_chain() [+ + +]
Author: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date:   Fri Oct 17 19:19:13 2025 -0400

    media: nxp: imx8-isi: Drop unused argument to mxc_isi_channel_chain()
    
    [ Upstream commit 9a21ffeade25cbf310f5db39a1f9932695dd41bb ]
    
    The bypass argument to the mxc_isi_channel_chain() function is unused.
    Drop it.
    
    Link: https://lore.kernel.org/r/20250813225501.20762-1-laurent.pinchart@ideasonboard.com
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    Stable-dep-of: 178aa3360220 ("media: nxp: imx8-isi: m2m: Fix streaming cleanup on release")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: nxp: imx8-isi: m2m: Fix streaming cleanup on release [+ + +]
Author: Guoniu Zhou <guoniu.zhou@nxp.com>
Date:   Fri Oct 17 19:19:14 2025 -0400

    media: nxp: imx8-isi: m2m: Fix streaming cleanup on release
    
    [ Upstream commit 178aa3360220231dd91e7dbc2eb984525886c9c1 ]
    
    If streamon/streamoff calls are imbalanced, such as when exiting an
    application with Ctrl+C when streaming, the m2m usage_count will never
    reach zero and the ISI channel won't be freed. Besides from that, if the
    input line width is more than 2K, it will trigger a WARN_ON():
    
    [ 59.222120] ------------[ cut here ]------------
    [ 59.226758] WARNING: drivers/media/platform/nxp/imx8-isi/imx8-isi-hw.c:631 at mxc_isi_channel_chain+0xa4/0x120, CPU#4: v4l2-ctl/654
    [ 59.238569] Modules linked in: ap1302
    [ 59.242231] CPU: 4 UID: 0 PID: 654 Comm: v4l2-ctl Not tainted 6.16.0-rc4-next-20250704-06511-gff0e002d480a-dirty #258 PREEMPT
    [ 59.253597] Hardware name: NXP i.MX95 15X15 board (DT)
    [ 59.258720] pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [ 59.265669] pc : mxc_isi_channel_chain+0xa4/0x120
    [ 59.270358] lr : mxc_isi_channel_chain+0x44/0x120
    [ 59.275047] sp : ffff8000848c3b40
    [ 59.278348] x29: ffff8000848c3b40 x28: ffff0000859b4c98 x27: ffff800081939f00
    [ 59.285472] x26: 000000000000000a x25: ffff0000859b4cb8 x24: 0000000000000001
    [ 59.292597] x23: ffff0000816f4760 x22: ffff0000816f4258 x21: ffff000084ceb780
    [ 59.299720] x20: ffff000084342ff8 x19: ffff000084340000 x18: 0000000000000000
    [ 59.306845] x17: 0000000000000000 x16: 0000000000000000 x15: 0000ffffdb369e1c
    [ 59.313969] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
    [ 59.321093] x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000000
    [ 59.328217] x8 : ffff8000848c3d48 x7 : ffff800081930b30 x6 : ffff800081930b30
    [ 59.335340] x5 : ffff0000859b6000 x4 : ffff80008193ae80 x3 : ffff800081022420
    [ 59.342464] x2 : ffff0000852f6900 x1 : 0000000000000001 x0 : ffff000084341000
    [ 59.349590] Call trace:
    [ 59.352025]  mxc_isi_channel_chain+0xa4/0x120 (P)
    [ 59.356722]  mxc_isi_m2m_streamon+0x160/0x20c
    [ 59.361072]  v4l_streamon+0x24/0x30
    [ 59.364556]  __video_do_ioctl+0x40c/0x4a0
    [ 59.368560]  video_usercopy+0x2bc/0x690
    [ 59.372382]  video_ioctl2+0x18/0x24
    [ 59.375857]  v4l2_ioctl+0x40/0x60
    [ 59.379168]  __arm64_sys_ioctl+0xac/0x104
    [ 59.383172]  invoke_syscall+0x48/0x104
    [ 59.386916]  el0_svc_common.constprop.0+0xc0/0xe0
    [ 59.391613]  do_el0_svc+0x1c/0x28
    [ 59.394915]  el0_svc+0x34/0xf4
    [ 59.397966]  el0t_64_sync_handler+0xa0/0xe4
    [ 59.402143]  el0t_64_sync+0x198/0x19c
    [ 59.405801] ---[ end trace 0000000000000000 ]---
    
    Address this issue by moving the streaming preparation and cleanup to
    the vb2 .prepare_streaming() and .unprepare_streaming() operations. This
    also simplifies the driver by allowing direct usage of the
    v4l2_m2m_ioctl_streamon() and v4l2_m2m_ioctl_streamoff() helpers.
    
    Fixes: cf21f328fcaf ("media: nxp: Add i.MX8 ISI driver")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20250821135123.29462-1-laurent.pinchart@ideasonboard.com
    Signed-off-by: Guoniu Zhou <guoniu.zhou@nxp.com>
    Co-developed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Tested-by: Guoniu Zhou <guoniu.zhou@nxp.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

 
mptcp: Call dst_release() in mptcp_active_enable(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Mon Oct 20 11:44:07 2025 -0400

    mptcp: Call dst_release() in mptcp_active_enable().
    
    [ Upstream commit 108a86c71c93ff28087994e6107bc99ebe336629 ]
    
    mptcp_active_enable() calls sk_dst_get(), which returns dst with its
    refcount bumped, but forgot dst_release().
    
    Let's add missing dst_release().
    
    Cc: stable@vger.kernel.org
    Fixes: 27069e7cb3d1 ("mptcp: disable active MPTCP in case of blackhole")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250916214758.650211-7-kuniyu@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 833d4313bc1e ("mptcp: reset blackhole on success with non-loopback ifaces")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: reset blackhole on success with non-loopback ifaces [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Mon Oct 20 11:44:09 2025 -0400

    mptcp: reset blackhole on success with non-loopback ifaces
    
    [ Upstream commit 833d4313bc1e9e194814917d23e8874d6b651649 ]
    
    When a first MPTCP connection gets successfully established after a
    blackhole period, 'active_disable_times' was supposed to be reset when
    this connection was done via any non-loopback interfaces.
    
    Unfortunately, the opposite condition was checked: only reset when the
    connection was established via a loopback interface. Fixing this by
    simply looking at the opposite.
    
    This is similar to what is done with TCP FastOpen, see
    tcp_fastopen_active_disable_ofo_check().
    
    This patch is a follow-up of a previous discussion linked to commit
    893c49a78d9f ("mptcp: Use __sk_dst_get() and dst_dev_rcu() in
    mptcp_active_enable()."), see [1].
    
    Fixes: 27069e7cb3d1 ("mptcp: disable active MPTCP in case of blackhole")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/4209a283-8822-47bd-95b7-87e96d9b7ea3@kernel.org [1]
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
    Link: https://patch.msgid.link/20250918-net-next-mptcp-blackhole-reset-loopback-v1-1-bf5818326639@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: Use __sk_dst_get() and dst_dev_rcu() in mptcp_active_enable(). [+ + +]
Author: Kuniyuki Iwashima <kuniyu@google.com>
Date:   Mon Oct 20 11:44:08 2025 -0400

    mptcp: Use __sk_dst_get() and dst_dev_rcu() in mptcp_active_enable().
    
    [ Upstream commit 893c49a78d9f85e4b8081b908fb7c407d018106a ]
    
    mptcp_active_enable() is called from subflow_finish_connect(),
    which is icsk->icsk_af_ops->sk_rx_dst_set() and it's not always
    under RCU.
    
    Using sk_dst_get(sk)->dev could trigger UAF.
    
    Let's use __sk_dst_get() and dst_dev_rcu().
    
    Fixes: 27069e7cb3d1 ("mptcp: disable active MPTCP in case of blackhole")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250916214758.650211-8-kuniyu@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 833d4313bc1e ("mptcp: reset blackhole on success with non-loopback ifaces")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/ip6_tunnel: Prevent perpetual tunnel growth [+ + +]
Author: Dmitry Safonov <0x7f454c46@gmail.com>
Date:   Thu Oct 9 16:02:19 2025 +0100

    net/ip6_tunnel: Prevent perpetual tunnel growth
    
    [ Upstream commit 21f4d45eba0b2dcae5dbc9e5e0ad08735c993f16 ]
    
    Similarly to ipv4 tunnel, ipv6 version updates dev->needed_headroom, too.
    While ipv4 tunnel headroom adjustment growth was limited in
    commit 5ae1e9922bbd ("net: ip_tunnel: prevent perpetual headroom growth"),
    ipv6 tunnel yet increases the headroom without any ceiling.
    
    Reflect ipv4 tunnel headroom adjustment limit on ipv6 version.
    
    Credits to Francesco Ruggeri, who was originally debugging this issue
    and wrote local Arista-specific patch and a reproducer.
    
    Fixes: 8eb30be0352d ("ipv6: Create ip6_tnl_xmit")
    Cc: Florian Westphal <fw@strlen.de>
    Cc: Francesco Ruggeri <fruggeri05@gmail.com>
    Signed-off-by: Dmitry Safonov <dima@arista.com>
    Link: https://patch.msgid.link/20251009-ip6_tunnel-headroom-v2-1-8e4dbd8f7e35@arista.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: Add locking to protect skb->dev access in ip_output [+ + +]
Author: Sharath Chandra Vurukala <quic_sharathv@quicinc.com>
Date:   Mon Oct 20 11:44:06 2025 -0400

    net: Add locking to protect skb->dev access in ip_output
    
    [ Upstream commit 1dbf1d590d10a6d1978e8184f8dfe20af22d680a ]
    
    In ip_output() skb->dev is updated from the skb_dst(skb)->dev
    this can become invalid when the interface is unregistered and freed,
    
    Introduced new skb_dst_dev_rcu() function to be used instead of
    skb_dst_dev() within rcu_locks in ip_output.This will ensure that
    all the skb's associated with the dev being deregistered will
    be transnmitted out first, before freeing the dev.
    
    Given that ip_output() is called within an rcu_read_lock()
    critical section or from a bottom-half context, it is safe to introduce
    an RCU read-side critical section within it.
    
    Multiple panic call stacks were observed when UL traffic was run
    in concurrency with device deregistration from different functions,
    pasting one sample for reference.
    
    [496733.627565][T13385] Call trace:
    [496733.627570][T13385] bpf_prog_ce7c9180c3b128ea_cgroupskb_egres+0x24c/0x7f0
    [496733.627581][T13385] __cgroup_bpf_run_filter_skb+0x128/0x498
    [496733.627595][T13385] ip_finish_output+0xa4/0xf4
    [496733.627605][T13385] ip_output+0x100/0x1a0
    [496733.627613][T13385] ip_send_skb+0x68/0x100
    [496733.627618][T13385] udp_send_skb+0x1c4/0x384
    [496733.627625][T13385] udp_sendmsg+0x7b0/0x898
    [496733.627631][T13385] inet_sendmsg+0x5c/0x7c
    [496733.627639][T13385] __sys_sendto+0x174/0x1e4
    [496733.627647][T13385] __arm64_sys_sendto+0x28/0x3c
    [496733.627653][T13385] invoke_syscall+0x58/0x11c
    [496733.627662][T13385] el0_svc_common+0x88/0xf4
    [496733.627669][T13385] do_el0_svc+0x2c/0xb0
    [496733.627676][T13385] el0_svc+0x2c/0xa4
    [496733.627683][T13385] el0t_64_sync_handler+0x68/0xb4
    [496733.627689][T13385] el0t_64_sync+0x1a4/0x1a8
    
    Changes in v3:
    - Replaced WARN_ON() with  WARN_ON_ONCE(), as suggested by Willem de Bruijn.
    - Dropped legacy lines mistakenly pulled in from an outdated branch.
    
    Changes in v2:
    - Addressed review comments from Eric Dumazet
    - Used READ_ONCE() to prevent potential load/store tearing
    - Added skb_dst_dev_rcu() and used along with rcu_read_lock() in ip_output
    
    Signed-off-by: Sharath Chandra Vurukala <quic_sharathv@quicinc.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20250730105118.GA26100@hu-sharathv-hyd.qualcomm.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 833d4313bc1e ("mptcp: reset blackhole on success with non-loopback ifaces")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: dlink: handle dma_map_single() failure properly [+ + +]
Author: Yeounsu Moon <yyyynoom@gmail.com>
Date:   Fri Oct 10 00:57:16 2025 +0900

    net: dlink: handle dma_map_single() failure properly
    
    [ Upstream commit 65946eac6d888d50ae527c4e5c237dbe5cc3a2f2 ]
    
    There is no error handling for `dma_map_single()` failures.
    
    Add error handling by checking `dma_mapping_error()` and freeing
    the `skb` using `dev_kfree_skb()` (process context) when it fails.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Yeounsu Moon <yyyynoom@gmail.com>
    Tested-on: D-Link DGE-550T Rev-A3
    Suggested-by: Simon Horman <horms@kernel.org>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dst: add four helpers to annotate data-races around dst->dev [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Oct 20 11:44:04 2025 -0400

    net: dst: add four helpers to annotate data-races around dst->dev
    
    [ Upstream commit 88fe14253e181878c2ddb51a298ae8c468a63010 ]
    
    dst->dev is read locklessly in many contexts,
    and written in dst_dev_put().
    
    Fixing all the races is going to need many changes.
    
    We probably will have to add full RCU protection.
    
    Add three helpers to ease this painful process.
    
    static inline struct net_device *dst_dev(const struct dst_entry *dst)
    {
           return READ_ONCE(dst->dev);
    }
    
    static inline struct net_device *skb_dst_dev(const struct sk_buff *skb)
    {
           return dst_dev(skb_dst(skb));
    }
    
    static inline struct net *skb_dst_dev_net(const struct sk_buff *skb)
    {
           return dev_net(skb_dst_dev(skb));
    }
    
    static inline struct net *skb_dst_dev_net_rcu(const struct sk_buff *skb)
    {
           return dev_net_rcu(skb_dst_dev(skb));
    }
    
    Fixes: 4a6ce2b6f2ec ("net: introduce a new function dst_dev_put()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
    Link: https://patch.msgid.link/20250630121934.3399505-7-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 833d4313bc1e ("mptcp: reset blackhole on success with non-loopback ifaces")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: usb: lan78xx: Add error handling to lan78xx_init_mac_address [+ + +]
Author: Oleksij Rempel <o.rempel@pengutronix.de>
Date:   Mon Dec 9 14:07:42 2024 +0100

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

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

    net: usb: lan78xx: fix use of improperly initialized dev->chipid in lan78xx_reset
    
    [ Upstream commit 8d93ff40d49d70e05c82a74beae31f883fe0eaf8 ]
    
    dev->chipid is used in lan78xx_init_mac_address before it's initialized:
    
    lan78xx_reset() {
        lan78xx_init_mac_address()
            lan78xx_read_eeprom()
                lan78xx_read_raw_eeprom() <- dev->chipid is used here
    
        dev->chipid = ... <- dev->chipid is initialized correctly here
    }
    
    Reorder initialization so that dev->chipid is set before calling
    lan78xx_init_mac_address().
    
    Fixes: a0db7d10b76e ("lan78xx: Add to handle mux control per chip id")
    Signed-off-by: I Viswanath <viswanathiyyappan@gmail.com>
    Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
    Reviewed-by: Khalid Aziz <khalid@kernel.org>
    Link: https://patch.msgid.link/20251013181648.35153-1-viswanathiyyappan@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
netdevsim: set the carrier when the device goes up [+ + +]
Author: Breno Leitao <leitao@debian.org>
Date:   Tue Oct 14 02:17:25 2025 -0700

    netdevsim: set the carrier when the device goes up
    
    [ Upstream commit 1a8fed52f7be14e45785e8e54d0d0b50fc17dbd8 ]
    
    Bringing a linked netdevsim device down and then up causes communication
    failure because both interfaces lack carrier. Basically a ifdown/ifup on
    the interface make the link broken.
    
    Commit 3762ec05a9fbda ("netdevsim: add NAPI support") added supported
    for NAPI, calling netif_carrier_off() in nsim_stop(). This patch
    re-enables the carrier symmetrically on nsim_open(), in case the device
    is linked and the peer is up.
    
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Fixes: 3762ec05a9fbda ("netdevsim: add NAPI support")
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://patch.msgid.link/20251014-netdevsim_fix-v2-1-53b40590dae1@debian.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
NFSD: Define a proc_layoutcommit for the FlexFiles layout type [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Mon Oct 20 16:33:43 2025 -0400

    NFSD: Define a proc_layoutcommit for the FlexFiles layout type
    
    [ Upstream commit 4b47a8601b71ad98833b447d465592d847b4dc77 ]
    
    Avoid a crash if a pNFS client should happen to send a LAYOUTCOMMIT
    operation on a FlexFiles layout.
    
    Reported-by: Robert Morris <rtm@csail.mit.edu>
    Closes: https://lore.kernel.org/linux-nfs/152f99b2-ba35-4dec-93a9-4690e625dccd@oracle.com/T/#t
    Cc: Thomas Haynes <loghyr@hammerspace.com>
    Cc: stable@vger.kernel.org
    Fixes: 9b9960a0ca47 ("nfsd: Add a super simple flex file server")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nfsd: Drop dprintk in blocklayout xdr functions [+ + +]
Author: Sergey Bashirov <sergeybashirov@gmail.com>
Date:   Mon Oct 20 08:53:00 2025 -0400

    nfsd: Drop dprintk in blocklayout xdr functions
    
    [ Upstream commit e339967eecf1305557f7c697e1bc10b5cc495454 ]
    
    Minor clean up. Instead of dprintk there are appropriate error codes.
    
    Signed-off-by: Sergey Bashirov <sergeybashirov@gmail.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Stable-dep-of: d68886bae76a ("NFSD: Fix last write offset handling in layoutcommit")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
NFSD: Fix last write offset handling in layoutcommit [+ + +]
Author: Sergey Bashirov <sergeybashirov@gmail.com>
Date:   Mon Oct 20 08:53:04 2025 -0400

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

NFSD: Implement large extent array support in pNFS [+ + +]
Author: Sergey Bashirov <sergeybashirov@gmail.com>
Date:   Mon Oct 20 08:53:03 2025 -0400

    NFSD: Implement large extent array support in pNFS
    
    [ Upstream commit f963cf2b91a30b5614c514f3ad53ca124cb65280 ]
    
    When pNFS client in the block or scsi layout mode sends layoutcommit
    to MDS, a variable length array of modified extents is supplied within
    the request. This patch allows the server to accept such extent arrays
    if they do not fit within single memory page.
    
    The issue can be reproduced when writing to a 1GB file using FIO with
    O_DIRECT, 4K block and large I/O depth without preallocation of the
    file. In this case, the server returns NFSERR_BADXDR to the client.
    
    Co-developed-by: Konstantin Evtushenko <koevtushenko@yandex.com>
    Signed-off-by: Konstantin Evtushenko <koevtushenko@yandex.com>
    Signed-off-by: Sergey Bashirov <sergeybashirov@gmail.com>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Stable-dep-of: d68886bae76a ("NFSD: Fix last write offset handling in layoutcommit")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

NFSD: Minor cleanup in layoutcommit processing [+ + +]
Author: Sergey Bashirov <sergeybashirov@gmail.com>
Date:   Mon Oct 20 08:53:02 2025 -0400

    NFSD: Minor cleanup in layoutcommit processing
    
    [ Upstream commit 274365a51d88658fb51cca637ba579034e90a799 ]
    
    Remove dprintk in nfsd4_layoutcommit. These are not needed
    in day to day usage, and the information is also available
    in Wireshark when capturing NFS traffic.
    
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sergey Bashirov <sergeybashirov@gmail.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Stable-dep-of: d68886bae76a ("NFSD: Fix last write offset handling in layoutcommit")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

NFSD: Rework encoding and decoding of nfsd4_deviceid [+ + +]
Author: Sergey Bashirov <sergeybashirov@gmail.com>
Date:   Mon Oct 20 08:53:01 2025 -0400

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

 
nfsd: Use correct error code when decoding extents [+ + +]
Author: Sergey Bashirov <sergeybashirov@gmail.com>
Date:   Mon Oct 20 08:52:59 2025 -0400

    nfsd: Use correct error code when decoding extents
    
    [ Upstream commit 26d05e1c37d276905bc921384b5a75158fca284b ]
    
    Update error codes in decoding functions of block and scsi layout
    drivers to match the core nfsd code. NFS4ERR_EINVAL means that the
    server was able to decode the request, but the decoded values are
    invalid. Use NFS4ERR_BADXDR instead to indicate a decoding error.
    And ENOMEM is changed to nfs code NFS4ERR_DELAY.
    
    Signed-off-by: Sergey Bashirov <sergeybashirov@gmail.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Stable-dep-of: d68886bae76a ("NFSD: Fix last write offset handling in layoutcommit")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvme-multipath: Skip nr_active increments in RETRY disposition [+ + +]
Author: Amit Chaudhary <achaudhary@purestorage.com>
Date:   Fri Sep 26 12:08:22 2025 -0700

    nvme-multipath: Skip nr_active increments in RETRY disposition
    
    [ Upstream commit bb642e2d300ee27dcede65cda7ffc47a7047bd69 ]
    
    For queue-depth I/O policy, this patch fixes unbalanced I/Os across
    nvme multipaths.
    
    Issue Description:
    
    The RETRY disposition incorrectly increments ns->ctrl->nr_active
    counter and reinitializes iostat start-time. In such cases nr_active
    counter never goes back to zero until that path disconnects and
    reconnects.
    
    Such a path is not chosen for new I/Os if multiple RETRY cases on a given
    a path cause its queue-depth counter to be artificially higher compared
    to other paths. This leads to unbalanced I/Os across paths.
    
    The patch skips incrementing nr_active if NVME_MPATH_CNT_ACTIVE is already
    set. And it skips restarting io stats if NVME_MPATH_IO_STATS is already set.
    
    base-commit: e989a3da2d371a4b6597ee8dee5c72e407b4db7a
    Fixes: d4d957b53d91eeb ("nvme-multipath: support io stats on the mpath device")
    Signed-off-by: Amit Chaudhary <achaudhary@purestorage.com>
    Reviewed-by: Randy Jennings <randyj@purestorage.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme/tcp: handle tls partially sent records in write_space() [+ + +]
Author: Wilfred Mallawa <wilfred.mallawa@wdc.com>
Date:   Fri Oct 10 17:19:42 2025 +1000

    nvme/tcp: handle tls partially sent records in write_space()
    
    [ Upstream commit 5a869d017793399fd1d2609ff27e900534173eb3 ]
    
    With TLS enabled, records that are encrypted and appended to TLS TX
    list can fail to see a retry if the underlying TCP socket is busy, for
    example, hitting an EAGAIN from tcp_sendmsg_locked(). This is not known
    to the NVMe TCP driver, as the TLS layer successfully generated a record.
    
    Typically, the TLS write_space() callback would ensure such records are
    retried, but in the NVMe TCP Host driver, write_space() invokes
    nvme_tcp_write_space(). This causes a partially sent record in the TLS TX
    list to timeout after not being retried.
    
    This patch fixes the above by calling queue->write_space(), which calls
    into the TLS layer to retry any pending records.
    
    Fixes: be8e82caa685 ("nvme-tcp: enable TLS handshake upcall")
    Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
padata: Reset next CPU when reorder sequence wraps around [+ + +]
Author: Xiao Liang <shaw.leon@gmail.com>
Date:   Mon Oct 20 11:37:02 2025 -0400

    padata: Reset next CPU when reorder sequence wraps around
    
    [ Upstream commit 501302d5cee0d8e8ec2c4a5919c37e0df9abc99b ]
    
    When seq_nr wraps around, the next reorder job with seq 0 is hashed to
    the first CPU in padata_do_serial(). Correspondingly, need reset pd->cpu
    to the first one when pd->processed wraps around. Otherwise, if the
    number of used CPUs is not a power of 2, padata_find_next() will be
    checking a wrong list, hence deadlock.
    
    Fixes: 6fc4dbcf0276 ("padata: Replace delayed timer with immediate workqueue in padata_reorder")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Xiao Liang <shaw.leon@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [ relocated fix to padata_find_next() using pd->processed and pd->cpu structure fields ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
PCI: Add PCI_VDEVICE_SUB helper macro [+ + +]
Author: Piotr Kwapulinski <piotr.kwapulinski@intel.com>
Date:   Mon Oct 20 13:28:38 2025 -0400

    PCI: Add PCI_VDEVICE_SUB helper macro
    
    [ Upstream commit 208fff3f567e2a3c3e7e4788845e90245c3891b4 ]
    
    PCI_VDEVICE_SUB generates the pci_device_id struct layout for
    the specific PCI device/subdevice. Private data may follow the
    output.
    
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Signed-off-by: Piotr Kwapulinski <piotr.kwapulinski@intel.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Stable-dep-of: a7075f501bd3 ("ixgbevf: fix mailbox API compatibility by negotiating supported features")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
perf/core: Fix address filter match with backing files [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Oct 13 10:22:42 2025 +0300

    perf/core: Fix address filter match with backing files
    
    commit ebfc8542ad62d066771e46c8aa30f5624b89cad8 upstream.
    
    It was reported that Intel PT address filters do not work in Docker
    containers.  That relates to the use of overlayfs.
    
    overlayfs records the backing file in struct vm_area_struct vm_file,
    instead of the user file that the user mmapped.  In order for an address
    filter to match, it must compare to the user file inode.  There is an
    existing helper file_user_inode() for that situation.
    
    Use file_user_inode() instead of file_inode() to get the inode for address
    filter matching.
    
    Example:
    
      Setup:
    
        # cd /root
        # mkdir test ; cd test ; mkdir lower upper work merged
        # cp `which cat` lower
        # mount -t overlay overlay -olowerdir=lower,upperdir=upper,workdir=work merged
        # perf record --buildid-mmap -e intel_pt//u --filter 'filter * @ /root/test/merged/cat' -- /root/test/merged/cat /proc/self/maps
        ...
        55d61d246000-55d61d2e1000 r-xp 00018000 00:1a 3418                       /root/test/merged/cat
        ...
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.015 MB perf.data ]
        # perf buildid-cache --add /root/test/merged/cat
    
      Before:
    
        Address filter does not match so there are no control flow packets
    
        # perf script --itrace=e
        # perf script --itrace=b | wc -l
        0
        # perf script -D | grep 'TIP.PGE' | wc -l
        0
        #
    
      After:
    
        Address filter does match so there are control flow packets
    
        # perf script --itrace=e
        # perf script --itrace=b | wc -l
        235
        # perf script -D | grep 'TIP.PGE' | wc -l
        57
        #
    
    With respect to stable kernels, overlayfs mmap function ovl_mmap() was
    added in v4.19 but file_user_inode() was not added until v6.8 and never
    back-ported to stable kernels.  FMODE_BACKING that it depends on was added
    in v6.5.  This issue has gone largely unnoticed, so back-porting before
    v6.8 is probably not worth it, so put 6.8 as the stable kernel prerequisite
    version, although in practice the next long term kernel is 6.12.
    
    Closes: https://lore.kernel.org/linux-perf-users/aBCwoq7w8ohBRQCh@fremen.lan
    Reported-by: Edd Barrett <edd@theunixzoo.co.uk>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Amir Goldstein <amir73il@gmail.com>
    Cc: stable@vger.kernel.org # 6.8
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

perf/core: Fix MMAP event path names with backing files [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Oct 13 10:22:43 2025 +0300

    perf/core: Fix MMAP event path names with backing files
    
    commit 8818f507a9391019a3ec7c57b1a32e4b386e48a5 upstream.
    
    Some file systems like FUSE-based ones or overlayfs may record the backing
    file in struct vm_area_struct vm_file, instead of the user file that the
    user mmapped.
    
    Since commit def3ae83da02f ("fs: store real path instead of fake path in
    backing file f_path"), file_path() no longer returns the user file path
    when applied to a backing file.  There is an existing helper
    file_user_path() for that situation.
    
    Use file_user_path() instead of file_path() to get the path for MMAP
    and MMAP2 events.
    
    Example:
    
      Setup:
    
        # cd /root
        # mkdir test ; cd test ; mkdir lower upper work merged
        # cp `which cat` lower
        # mount -t overlay overlay -olowerdir=lower,upperdir=upper,workdir=work merged
        # perf record -e intel_pt//u -- /root/test/merged/cat /proc/self/maps
        ...
        55b0ba399000-55b0ba434000 r-xp 00018000 00:1a 3419                       /root/test/merged/cat
        ...
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.060 MB perf.data ]
        #
    
      Before:
    
        File name is wrong (/cat), so decoding fails:
    
        # perf script --no-itrace --show-mmap-events
                 cat     367 [016]   100.491492: PERF_RECORD_MMAP2 367/367: [0x55b0ba399000(0x9b000) @ 0x18000 00:02 3419 489959280]: r-xp /cat
        ...
        # perf script --itrace=e | wc -l
        Warning:
        19 instruction trace errors
        19
        #
    
      After:
    
        File name is correct (/root/test/merged/cat), so decoding is ok:
    
        # perf script --no-itrace --show-mmap-events
                     cat     364 [016]    72.153006: PERF_RECORD_MMAP2 364/364: [0x55ce4003d000(0x9b000) @ 0x18000 00:02 3419 3132534314]: r-xp /root/test/merged/cat
        # perf script --itrace=e
        # perf script --itrace=e | wc -l
        0
        #
    
    Fixes: def3ae83da02f ("fs: store real path instead of fake path in backing file f_path")
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Amir Goldstein <amir73il@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

perf/core: Fix MMAP2 event device with backing files [+ + +]
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Mon Oct 13 10:22:44 2025 +0300

    perf/core: Fix MMAP2 event device with backing files
    
    commit fa4f4bae893fbce8a3edfff1ab7ece0c01dc1328 upstream.
    
    Some file systems like FUSE-based ones or overlayfs may record the backing
    file in struct vm_area_struct vm_file, instead of the user file that the
    user mmapped.
    
    That causes perf to misreport the device major/minor numbers of the file
    system of the file, and the generation of the file, and potentially other
    inode details.  There is an existing helper file_user_inode() for that
    situation.
    
    Use file_user_inode() instead of file_inode() to get the inode for MMAP2
    events.
    
    Example:
    
      Setup:
    
        # cd /root
        # mkdir test ; cd test ; mkdir lower upper work merged
        # cp `which cat` lower
        # mount -t overlay overlay -olowerdir=lower,upperdir=upper,workdir=work merged
        # perf record -e cycles:u -- /root/test/merged/cat /proc/self/maps
        ...
        55b2c91d0000-55b2c926b000 r-xp 00018000 00:1a 3419                       /root/test/merged/cat
        ...
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.004 MB perf.data (5 samples) ]
        #
        # stat /root/test/merged/cat
          File: /root/test/merged/cat
          Size: 1127792         Blocks: 2208       IO Block: 4096   regular file
        Device: 0,26    Inode: 3419        Links: 1
        Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
        Access: 2025-09-08 12:23:59.453309624 +0000
        Modify: 2025-09-08 12:23:59.454309624 +0000
        Change: 2025-09-08 12:23:59.454309624 +0000
         Birth: 2025-09-08 12:23:59.453309624 +0000
    
      Before:
    
        Device reported 00:02 differs from stat output and /proc/self/maps
    
        # perf script --show-mmap-events | grep /root/test/merged/cat
                 cat     377 [-01]   243.078558: PERF_RECORD_MMAP2 377/377: [0x55b2c91d0000(0x9b000) @ 0x18000 00:02 3419 2068525940]: r-xp /root/test/merged/cat
    
      After:
    
        Device reported 00:1a is the same as stat output and /proc/self/maps
    
        # perf script --show-mmap-events | grep /root/test/merged/cat
                 cat     362 [-01]   127.755167: PERF_RECORD_MMAP2 362/362: [0x55ba6e781000(0x9b000) @ 0x18000 00:1a 3419 0]: r-xp /root/test/merged/cat
    
    With respect to stable kernels, overlayfs mmap function ovl_mmap() was
    added in v4.19 but file_user_inode() was not added until v6.8 and never
    back-ported to stable kernels.  FMODE_BACKING that it depends on was added
    in v6.5.  This issue has gone largely unnoticed, so back-porting before
    v6.8 is probably not worth it, so put 6.8 as the stable kernel prerequisite
    version, although in practice the next long term kernel is 6.12.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Amir Goldstein <amir73il@gmail.com>
    Cc: stable@vger.kernel.org # 6.8
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
phy: cadence: cdns-dphy: Fix PLL lock and O_CMN_READY polling [+ + +]
Author: Devarsh Thakkar <devarsht@ti.com>
Date:   Mon Oct 20 08:59:06 2025 -0400

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

phy: cadence: cdns-dphy: Update calibration wait time for startup state machine [+ + +]
Author: Devarsh Thakkar <devarsht@ti.com>
Date:   Tue Oct 21 12:43:33 2025 -0400

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

phy: cdns-dphy: Store hs_clk_rate and return it [+ + +]
Author: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Date:   Mon Oct 20 08:59:05 2025 -0400

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

 
PM: runtime: Add new devm functions [+ + +]
Author: Bence Csókás <bence98@sch.bme.hu>
Date:   Mon Oct 20 09:02:38 2025 -0400

    PM: runtime: Add new devm functions
    
    [ Upstream commit 73db799bf5efc5a04654bb3ff6c9bf63a0dfa473 ]
    
    Add `devm_pm_runtime_set_active_enabled()` and
    `devm_pm_runtime_get_noresume()` for simplifying
    common cases in drivers.
    
    Signed-off-by: Bence Csókás <csokas.bence@prolan.hu>
    Link: https://patch.msgid.link/20250327195928.680771-3-csokas.bence@prolan.hu
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Stable-dep-of: 0792c1984a45 ("iio: imu: inv_icm42600: Simplify pm_runtime setup")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
r8152: add error handling in rtl8152_driver_init [+ + +]
Author: Yi Cong <yicong@kylinos.cn>
Date:   Sat Oct 11 16:24:15 2025 +0800

    r8152: add error handling in rtl8152_driver_init
    
    commit 75527d61d60d493d1eb064f335071a20ca581f54 upstream.
    
    rtl8152_driver_init() is missing the error handling.
    When rtl8152_driver registration fails, rtl8152_cfgselector_driver
    should be deregistered.
    
    Fixes: ec51fbd1b8a2 ("r8152: add USB device driver for config selection")
    Cc: stable@vger.kernel.org
    Signed-off-by: Yi Cong <yicong@kylinos.cn>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20251011082415.580740-1-yicongsrfy@163.com
    [pabeni@redhat.com: clarified the commit message]
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

    r8169: fix packet truncation after S4 resume on RTL8168H/RTL8111H
    
    [ Upstream commit 70f92ab97042f243e1c8da1c457ff56b9b3e49f1 ]
    
    After resume from S4 (hibernate), RTL8168H/RTL8111H truncates incoming
    packets. Packet captures show messages like "IP truncated-ip - 146 bytes
    missing!".
    
    The issue is caused by RxConfig not being properly re-initialized after
    resume. Re-initializing the RxConfig register before the chip
    re-initialization sequence avoids the truncation and restores correct
    packet reception.
    
    This follows the same pattern as commit ef9da46ddef0 ("r8169: fix data
    corruption issue on RTL8402").
    
    Fixes: 6e1d0b898818 ("r8169:add support for RTL8168H and RTL8107E")
    Signed-off-by: Linmao Li <lilinmao@kylinos.cn>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://patch.msgid.link/20251009122549.3955845-1-lilinmao@kylinos.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Revert "io_uring/rw: drop -EOPNOTSUPP check in __io_complete_rw_common()" [+ + +]
Author: Jens Axboe <axboe@kernel.dk>
Date:   Mon Oct 13 12:05:31 2025 -0600

    Revert "io_uring/rw: drop -EOPNOTSUPP check in __io_complete_rw_common()"
    
    Commit 927069c4ac2cd1a37efa468596fb5b8f86db9df0 upstream.
    
    This reverts commit 90bfb28d5fa8127a113a140c9791ea0b40ab156a.
    
    Kevin reports that this commit causes an issue for him with LVM
    snapshots, most likely because of turning off NOWAIT support while a
    snapshot is being created. This makes -EOPNOTSUPP bubble back through
    the completion handler, where io_uring read/write handling should just
    retry it.
    
    Reinstate the previous check removed by the referenced commit.
    
    Cc: stable@vger.kernel.org
    Fixes: 90bfb28d5fa8 ("io_uring/rw: drop -EOPNOTSUPP check in __io_complete_rw_common()")
    Reported-by: Salvatore Bonaccorso <carnil@debian.org>
    Reported-by: Kevin Lumik <kevin@xf.ee>
    Link: https://lore.kernel.org/io-uring/cceb723c-051b-4de2-9a4c-4aa82e1619ee@kernel.dk/
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
riscv: kprobes: Fix probe address validation [+ + +]
Author: Fabian Vogt <fvogt@suse.de>
Date:   Wed Sep 10 17:25:13 2025 +0200

    riscv: kprobes: Fix probe address validation
    
    [ Upstream commit 9e68bd803fac49274fde914466fd3b07c4d602c8 ]
    
    When adding a kprobe such as "p:probe/tcp_sendmsg _text+15392192",
    arch_check_kprobe would start iterating all instructions starting from
    _text until the probed address. Not only is this very inefficient, but
    literal values in there (e.g. left by function patching) are
    misinterpreted in a way that causes a desync.
    
    Fix this by doing it like x86: start the iteration at the closest
    preceding symbol instead of the given starting point.
    
    Fixes: 87f48c7ccc73 ("riscv: kprobe: Fixup kernel panic when probing an illegal position")
    Signed-off-by: Fabian Vogt <fvogt@suse.de>
    Signed-off-by: Marvin Friedrich <marvin.friedrich@suse.com>
    Acked-by: Guo Ren <guoren@kernel.org>
    Link: https://lore.kernel.org/r/6191817.lOV4Wx5bFT@fvogt-thinkpad
    Signed-off-by: Paul Walmsley <pjw@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
rust: cfi: only 64-bit arm and x86 support CFI_CLANG [+ + +]
Author: Conor Dooley <conor.dooley@microchip.com>
Date:   Mon Sep 8 14:12:35 2025 +0100

    rust: cfi: only 64-bit arm and x86 support CFI_CLANG
    
    commit 812258ff4166bcd41c7d44707e0591f9ae32ac8c upstream.
    
    The kernel uses the standard rustc targets for non-x86 targets, and out
    of those only 64-bit arm's target has kcfi support enabled. For x86, the
    custom 64-bit target enables kcfi.
    
    The HAVE_CFI_ICALL_NORMALIZE_INTEGERS_RUSTC config option that allows
    CFI_CLANG to be used in combination with RUST does not check whether the
    rustc target supports kcfi. This breaks the build on riscv (and
    presumably 32-bit arm) when CFI_CLANG and RUST are enabled at the same
    time.
    
    Ordinarily, a rustc-option check would be used to detect target support
    but unfortunately rustc-option filters out the target for reasons given
    in commit 46e24a545cdb4 ("rust: kasan/kbuild: fix missing flags on first
    build"). As a result, if the host supports kcfi but the target does not,
    e.g. when building for riscv on x86_64, the build would remain broken.
    
    Instead, make HAVE_CFI_ICALL_NORMALIZE_INTEGERS_RUSTC depend on the only
    two architectures where the target used supports it to fix the build.
    
    CC: stable@vger.kernel.org
    Fixes: ca627e636551e ("rust: cfi: add support for CFI_CLANG with Rust")
    Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
    Acked-by: Miguel Ojeda <ojeda@kernel.org>
    Reviewed-by: Alice Ryhl <aliceryhl@google.com>
    Link: https://lore.kernel.org/r/20250908-distill-lint-1ae78bcf777c@spud
    Signed-off-by: Paul Walmsley <pjw@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
sched/fair: Fix pelt lost idle time detection [+ + +]
Author: Vincent Guittot <vincent.guittot@linaro.org>
Date:   Wed Oct 8 15:12:14 2025 +0200

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

 
selftests/bpf: make arg_parsing.c more robust to crashes [+ + +]
Author: Andrii Nakryiko <andrii@kernel.org>
Date:   Tue Oct 14 13:20:37 2025 -0700

    selftests/bpf: make arg_parsing.c more robust to crashes
    
    [ Upstream commit e603a342cf7ecd64ef8f36207dfe1caacb9e2583 ]
    
    We started getting a crash in BPF CI, which seems to originate from
    test_parse_test_list_file() test and is happening at this line:
    
      ASSERT_OK(strcmp("test_with_spaces", set.tests[0].name), "test 0 name");
    
    One way we can crash there is if set.cnt zero, which is checked for with
    ASSERT_EQ() above, but we proceed after this regardless of the outcome.
    Instead of crashing, we should bail out with test failure early.
    
    Similarly, if parse_test_list_file() fails, we shouldn't be even looking
    at set, so bail even earlier if ASSERT_OK() fails.
    
    Fixes: 64276f01dce8 ("selftests/bpf: Test_progs can read test lists from file")
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Tested-by: Ihor Solodrai <ihor.solodrai@linux.dev>
    Link: https://lore.kernel.org/r/20251014202037.72922-1-andrii@kernel.org
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
selftests: arg_parsing: Ensure data is flushed to disk before reading. [+ + +]
Author: Xing Guo <higuoxing@gmail.com>
Date:   Thu Oct 16 11:53:30 2025 +0800

    selftests: arg_parsing: Ensure data is flushed to disk before reading.
    
    [ Upstream commit 0c1999ed33722f85476a248186d6e0eb2bf3dd2a ]
    
    test_parse_test_list_file writes some data to
    /tmp/bpf_arg_parsing_test.XXXXXX and parse_test_list_file() will read
    the data back.  However, after writing data to that file, we forget to
    call fsync() and it's causing testing failure in my laptop.  This patch
    helps fix it by adding the missing fsync() call.
    
    Fixes: 64276f01dce8 ("selftests/bpf: Test_progs can read test lists from file")
    Signed-off-by: Xing Guo <higuoxing@gmail.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20251016035330.3217145-1-higuoxing@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
slab: reset slab->obj_ext when freeing and it is OBJEXTS_ALLOC_FAIL [+ + +]
Author: Hao Ge <gehao@kylinos.cn>
Date:   Wed Oct 15 22:16:42 2025 +0800

    slab: reset slab->obj_ext when freeing and it is OBJEXTS_ALLOC_FAIL
    
    commit 86f54f9b6c17d6567c69e3a6fed52fdf5d7dbe93 upstream.
    
    If obj_exts allocation failed, slab->obj_exts is set to OBJEXTS_ALLOC_FAIL,
    But we do not clear it when freeing the slab. Since OBJEXTS_ALLOC_FAIL and
    MEMCG_DATA_OBJEXTS currently share the same bit position, during the
    release of the associated folio, a VM_BUG_ON_FOLIO() check in
    folio_memcg_kmem() is triggered because the OBJEXTS_ALLOC_FAIL flag was
    not cleared, causing it to be interpreted as a kmem folio (non-slab)
    with MEMCG_OBJEXTS_DATA flag set, which is invalid because
    MEMCG_OBJEXTS_DATA is supposed to be set only on slabs.
    
    Another problem that predates sharing the OBJEXTS_ALLOC_FAIL and
    MEMCG_DATA_OBJEXTS bits is that on configurations with
    is_check_pages_enabled(), the non-cleared bit in page->memcg_data will
    trigger a free_page_is_bad() failure "page still charged to cgroup"
    
    When freeing a slab, we clear slab->obj_exts if the obj_ext array has
    been successfully allocated. So let's clear it also when the allocation
    has failed.
    
    Fixes: 09c46563ff6d ("codetag: debug: introduce OBJEXTS_ALLOC_FAIL to mark failed slab_ext allocations")
    Fixes: 7612833192d5 ("slab: Reuse first bit for OBJEXTS_ALLOC_FAIL")
    Link: https://lore.kernel.org/all/20251015141642.700170-1-hao.ge@linux.dev/
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hao Ge <gehao@kylinos.cn>
    Reviewed-by: Suren Baghdasaryan <surenb@google.com>
    Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
smb: client: Fix refcount leak for cifs_sb_tlink [+ + +]
Author: Shuhao Fu <sfual@cse.ust.hk>
Date:   Thu Oct 16 02:52:55 2025 +0000

    smb: client: Fix refcount leak for cifs_sb_tlink
    
    commit c2b77f42205ef485a647f62082c442c1cd69d3fc upstream.
    
    Fix three refcount inconsistency issues related to `cifs_sb_tlink`.
    
    Comments for `cifs_sb_tlink` state that `cifs_put_tlink()` needs to be
    called after successful calls to `cifs_sb_tlink()`. Three calls fail to
    update refcount accordingly, leading to possible resource leaks.
    
    Fixes: 8ceb98437946 ("CIFS: Move rename to ops struct")
    Fixes: 2f1afe25997f ("cifs: Use smb 2 - 3 and cifsacl mount options getacl functions")
    Fixes: 366ed846df60 ("cifs: Use smb 2 - 3 and cifsacl mount options setacl function")
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuhao Fu <sfual@cse.ust.hk>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
tcp: cache RTAX_QUICKACK metric in a hot cache line [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Oct 20 11:44:03 2025 -0400

    tcp: cache RTAX_QUICKACK metric in a hot cache line
    
    [ Upstream commit 15492700ac41459b54a6683490adcee350ab11e3 ]
    
    tcp_in_quickack_mode() is called from input path for small packets.
    
    It calls __sk_dst_get() which reads sk->sk_dst_cache which has been
    put in sock_read_tx group (for good reasons).
    
    Then dst_metric(dst, RTAX_QUICKACK) also needs extra cache line misses.
    
    Cache RTAX_QUICKACK in icsk->icsk_ack.dst_quick_ack to no longer pull
    these cache lines for the cases a delayed ACK is scheduled.
    
    After this patch TCP receive path does not longer access sock_read_tx
    group.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
    Reviewed-by: Neal Cardwell <ncardwell@google.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://patch.msgid.link/20250312083907.1931644-1-edumazet@google.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Stable-dep-of: 833d4313bc1e ("mptcp: reset blackhole on success with non-loopback ifaces")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

tcp: convert to dev_net_rcu() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Oct 20 11:44:02 2025 -0400

    tcp: convert to dev_net_rcu()
    
    [ Upstream commit e7b9ecce562ca6a1de32c56c597fa45e08c44ec0 ]
    
    TCP uses of dev_net() are under RCU protection, change them
    to dev_net_rcu() to get LOCKDEP support.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Link: https://patch.msgid.link/20250301201424.2046477-4-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Stable-dep-of: 833d4313bc1e ("mptcp: reset blackhole on success with non-loopback ifaces")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

tcp: fix tcp_tso_should_defer() vs large RTT [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Oct 11 11:57:42 2025 +0000

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

 
tg3: prevent use of uninitialized remote_adv and local_adv variables [+ + +]
Author: Alexey Simakov <bigalex934@gmail.com>
Date:   Tue Oct 14 19:47:38 2025 +0300

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

 
tls: always set record_type in tls_process_cmsg [+ + +]
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Tue Oct 14 11:16:58 2025 +0200

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

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

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

tls: trim encrypted message to match the plaintext on short splice [+ + +]
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Tue Oct 14 11:16:56 2025 +0200

    tls: trim encrypted message to match the plaintext on short splice
    
    [ Upstream commit ce5af41e3234425a40974696682163edfd21128c ]
    
    During tls_sw_sendmsg_locked, we pre-allocate the encrypted message
    for the size we're expecting to send during the current iteration, but
    we may end up sending less, for example when splicing: if we're
    getting the data from small fragments of memory, we may fill up all
    the slots in the skmsg with less data than expected.
    
    In this case, we need to trim the encrypted message to only the length
    we actually need, to avoid pushing uninitialized bytes down the
    underlying TCP socket.
    
    Fixes: fe1e81d4f73b ("tls/sw: Support MSG_SPLICE_PAGES")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Link: https://patch.msgid.link/66a0ae99c9efc15f88e9e56c1f58f902f442ce86.1760432043.git.sd@queasysnail.net
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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

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

tls: wait for pending async decryptions if tls_strp_msg_hold fails [+ + +]
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Tue Oct 14 11:16:59 2025 +0200

    tls: wait for pending async decryptions if tls_strp_msg_hold fails
    
    [ Upstream commit b8a6ff84abbcbbc445463de58704686011edc8e1 ]
    
    Async decryption calls tls_strp_msg_hold to create a clone of the
    input skb to hold references to the memory it uses. If we fail to
    allocate that clone, proceeding with async decryption can lead to
    various issues (UAF on the skb, writing into userspace memory after
    the recv() call has returned).
    
    In this case, wait for all pending decryption requests.
    
    Fixes: 84c61fe1a75b ("tls: rx: do not use the standard strparser")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Link: https://patch.msgid.link/b9fe61dcc07dab15da9b35cf4c7d86382a98caf2.1760432043.git.sd@queasysnail.net
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
usb: gadget: f_acm: Refactor bind path to use __free() [+ + +]
Author: Kuen-Han Tsai <khtsai@google.com>
Date:   Fri Oct 17 20:29:27 2025 -0400

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

usb: gadget: f_ecm: Refactor bind path to use __free() [+ + +]
Author: Kuen-Han Tsai <khtsai@google.com>
Date:   Fri Oct 17 20:52:36 2025 -0400

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

usb: gadget: f_ncm: Refactor bind path to use __free() [+ + +]
Author: Kuen-Han Tsai <khtsai@google.com>
Date:   Fri Oct 17 19:58:26 2025 -0400

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

usb: gadget: f_rndis: Refactor bind path to use __free() [+ + +]
Author: Kuen-Han Tsai <khtsai@google.com>
Date:   Fri Oct 17 22:03:50 2025 -0400

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

usb: gadget: Introduce free_usb_request helper [+ + +]
Author: Kuen-Han Tsai <khtsai@google.com>
Date:   Fri Oct 17 19:58:25 2025 -0400

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

usb: gadget: Store endpoint pointer in usb_request [+ + +]
Author: Kuen-Han Tsai <khtsai@google.com>
Date:   Fri Oct 17 19:58:24 2025 -0400

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

 
vfs: Don't leak disconnected dentries on umount [+ + +]
Author: Jan Kara <jack@suse.cz>
Date:   Mon Oct 20 13:28:59 2025 -0400

    vfs: Don't leak disconnected dentries on umount
    
    [ Upstream commit 56094ad3eaa21e6621396cc33811d8f72847a834 ]
    
    When user calls open_by_handle_at() on some inode that is not cached, we
    will create disconnected dentry for it. If such dentry is a directory,
    exportfs_decode_fh_raw() will then try to connect this dentry to the
    dentry tree through reconnect_path(). It may happen for various reasons
    (such as corrupted fs or race with rename) that the call to
    lookup_one_unlocked() in reconnect_one() will fail to find the dentry we
    are trying to reconnect and instead create a new dentry under the
    parent. Now this dentry will not be marked as disconnected although the
    parent still may well be disconnected (at least in case this
    inconsistency happened because the fs is corrupted and .. doesn't point
    to the real parent directory). This creates inconsistency in
    disconnected flags but AFAICS it was mostly harmless. At least until
    commit f1ee616214cb ("VFS: don't keep disconnected dentries on d_anon")
    which removed adding of most disconnected dentries to sb->s_anon list.
    Thus after this commit cleanup of disconnected dentries implicitely
    relies on the fact that dput() will immediately reclaim such dentries.
    However when some leaf dentry isn't marked as disconnected, as in the
    scenario described above, the reclaim doesn't happen and the dentries
    are "leaked". Memory reclaim can eventually reclaim them but otherwise
    they stay in memory and if umount comes first, we hit infamous "Busy
    inodes after unmount" bug. Make sure all dentries created under a
    disconnected parent are marked as disconnected as well.
    
    Reported-by: syzbot+1d79ebe5383fc016cf07@syzkaller.appspotmail.com
    Fixes: f1ee616214cb ("VFS: don't keep disconnected dentries on d_anon")
    CC: stable@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: rtw89: avoid possible TX wait initialization race [+ + +]
Author: Fedor Pchelkin <pchelkin@ispras.ru>
Date:   Mon Oct 20 11:47:33 2025 -0400

    wifi: rtw89: avoid possible TX wait initialization race
    
    [ Upstream commit c24248ed78f33ea299ea61d105355ba47157d49f ]
    
    The value of skb_data->wait indicates whether skb is passed on to the
    core mac80211 stack or released by the driver itself.  Make sure that by
    the time skb is added to txwd queue and becomes visible to the completing
    side, it has already allocated and initialized TX wait related data (in
    case it's needed).
    
    This is found by code review and addresses a possible race scenario
    described below:
    
          Waiting thread                          Completing thread
    
    rtw89_core_send_nullfunc()
      rtw89_core_tx_write_link()
        ...
        rtw89_pci_txwd_submit()
          skb_data->wait = NULL
          /* add skb to the queue */
          skb_queue_tail(&txwd->queue, skb)
    
      /* another thread (e.g. rtw89_ops_tx) performs TX kick off for the same queue */
    
                                                rtw89_pci_napi_poll()
                                                ...
                                                  rtw89_pci_release_txwd_skb()
                                                    /* get skb from the queue */
                                                    skb_unlink(skb, &txwd->queue)
                                                    rtw89_pci_tx_status()
                                                      rtw89_core_tx_wait_complete()
                                                      /* use incorrect skb_data->wait */
      rtw89_core_tx_kick_off_and_wait()
      /* assign skb_data->wait but too late */
    
    Found by Linux Verification Center (linuxtesting.org).
    
    Fixes: 1ae5ca615285 ("wifi: rtw89: add function to wait for completion of TX skbs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
    Acked-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20250919210852.823912-3-pchelkin@ispras.ru
    [ adapted rtw89_core_tx_write_link() modifications to rtw89_core_tx_write() ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/resctrl: Fix miscount of bandwidth event when reactivating previously unavailable RMID [+ + +]
Author: Babu Moger <babu.moger@amd.com>
Date:   Mon Oct 20 12:38:53 2025 -0400

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

x86/resctrl: Refactor resctrl_arch_rmid_read() [+ + +]
Author: Babu Moger <babu.moger@amd.com>
Date:   Mon Oct 20 12:38:52 2025 -0400

    x86/resctrl: Refactor resctrl_arch_rmid_read()
    
    [ Upstream commit 7c9ac605e202c4668e441fc8146a993577131ca1 ]
    
    resctrl_arch_rmid_read() adjusts the value obtained from MSR_IA32_QM_CTR to
    account for the overflow for MBM events and apply counter scaling for all the
    events. This logic is common to both reading an RMID and reading a hardware
    counter directly.
    
    Refactor the hardware value adjustment logic into get_corrected_val() to
    prepare for support of reading a hardware counter.
    
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
    Link: https://lore.kernel.org/cover.1757108044.git.babu.moger@amd.com
    Stable-dep-of: 15292f1b4c55 ("x86/resctrl: Fix miscount of bandwidth event when reactivating previously unavailable RMID")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xfs: fix log CRC mismatches between i386 and other architectures [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Oct 20 08:43:58 2025 -0400

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

xfs: rename the old_crc variable in xlog_recover_process [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Mon Oct 20 08:43:57 2025 -0400

    xfs: rename the old_crc variable in xlog_recover_process
    
    [ Upstream commit 0b737f4ac1d3ec093347241df74bbf5f54a7e16c ]
    
    old_crc is a very misleading name.  Rename it to expected_crc as that
    described the usage much better.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Carlos Maiolino <cem@kernel.org>
    Stable-dep-of: e747883c7d73 ("xfs: fix log CRC mismatches between i386 and other architectures")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: use deferred intent items for reaping crosslinked blocks [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Mon Oct 20 11:49:51 2025 -0400

    xfs: use deferred intent items for reaping crosslinked blocks
    
    [ Upstream commit cd32a0c0dcdf634f2e0e71f41c272e19dece6264 ]
    
    When we're removing rmap records for crosslinked blocks, use deferred
    intent items so that we can try to free/unmap as many of the old data
    structure's blocks as we can in the same transaction as the commit.
    
    Cc: <stable@vger.kernel.org> # v6.6
    Fixes: 1c7ce115e52106 ("xfs: reap large AG metadata extents when possible")
    Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    [ adapted xfs_refcount_free_cow_extent() and xfs_rmap_free_extent() ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>