Changelog in Linux kernel 5.10.246

 
ACPI: debug: fix signedness issues in read/write helpers [+ + +]
Author: Amir Mohammad Jahangirzad <[email protected]>
Date:   Tue Sep 23 05:01:13 2025 +0330

    ACPI: debug: fix signedness issues in read/write helpers
    
    commit 496f9372eae14775e0524e83e952814691fe850a upstream.
    
    In the ACPI debugger interface, the helper functions for read and write
    operations use "int" as the length parameter data type. When a large
    "size_t count" is passed from the file operations, this cast to "int"
    results in truncation and a negative value due to signed integer
    representation.
    
    Logically, this negative number propagates to the min() calculation,
    where it is selected over the positive buffer space value, leading to
    unexpected behavior. Subsequently, when this negative value is used in
    copy_to_user() or copy_from_user(), it is interpreted as a large positive
    value due to the unsigned nature of the size parameter in these functions,
    causing the copy operations to attempt handling sizes far beyond the
    intended buffer limits.
    
    Address the issue by:
     - Changing the length parameters in acpi_aml_read_user() and
       acpi_aml_write_user() from "int" to "size_t", aligning with the
       expected unsigned size semantics.
     - Updating return types and local variables in acpi_aml_read() and
       acpi_aml_write() to "ssize_t" for consistency with kernel file
       operation conventions.
     - Using "size_t" for the "n" variable to ensure calculations remain
       unsigned.
     - Using min_t() for circ_count_to_end() and circ_space_to_end() to
       ensure type-safe comparisons and prevent integer overflow.
    
    Signed-off-by: Amir Mohammad Jahangirzad <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Changelog tweaks, local variable definitions ordering adjustments ]
    Fixes: 8cfb0cdf07e2 ("ACPI / debugger: Add IO interface to access debugger functionalities")
    Cc: 4.5+ <[email protected]> # 4.5+
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ACPI: NFIT: Fix incorrect ndr_desc being reportedin dev_err message [+ + +]
Author: Colin Ian King <[email protected]>
Date:   Tue Sep 2 12:45:18 2025 +0100

    ACPI: NFIT: Fix incorrect ndr_desc being reportedin dev_err message
    
    [ Upstream commit d1a599a8136b16522b5afebd122395524496d549 ]
    
    There appears to be a cut-n-paste error with the incorrect field
    ndr_desc->numa_node being reported for the target node. Fix this by
    using ndr_desc->target_node instead.
    
    Fixes: f060db99374e ("ACPI: NFIT: Use fallback node id when numa info in NFIT table is incorrect")
    Signed-off-by: Colin Ian King <[email protected]>
    Reviewed-by: Ira Weiny <[email protected]>
    Signed-off-by: Ira Weiny <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: processor: idle: Fix memory leak when register cpuidle device failed [+ + +]
Author: Huisong Li <[email protected]>
Date:   Mon Jul 28 15:06:11 2025 +0800

    ACPI: processor: idle: Fix memory leak when register cpuidle device failed
    
    [ Upstream commit 11b3de1c03fa9f3b5d17e6d48050bc98b3704420 ]
    
    The cpuidle device's memory is leaked when cpuidle device registration
    fails in acpi_processor_power_init().  Free it as appropriate.
    
    Fixes: 3d339dcbb56d ("cpuidle / ACPI : move cpuidle_device field out of the acpi_processor_power structure")
    Signed-off-by: Huisong Li <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Changed the order of the new statements, added empty line after if () ]
    [ rjw: Changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: TAD: Add missing sysfs_remove_group() for ACPI_TAD_RT [+ + +]
Author: Daniel Tang <[email protected]>
Date:   Thu Aug 28 01:38:14 2025 -0400

    ACPI: TAD: Add missing sysfs_remove_group() for ACPI_TAD_RT
    
    commit 4aac453deca0d9c61df18d968f8864c3ae7d3d8d upstream.
    
    Previously, after `rmmod acpi_tad`, `modprobe acpi_tad` would fail
    with this dmesg:
    
    sysfs: cannot create duplicate filename '/devices/platform/ACPI000E:00/time'
    Call Trace:
     <TASK>
     dump_stack_lvl+0x6c/0x90
     dump_stack+0x10/0x20
     sysfs_warn_dup+0x8b/0xa0
     sysfs_add_file_mode_ns+0x122/0x130
     internal_create_group+0x1dd/0x4c0
     sysfs_create_group+0x13/0x20
     acpi_tad_probe+0x147/0x1f0 [acpi_tad]
     platform_probe+0x42/0xb0
     </TASK>
    acpi-tad ACPI000E:00: probe with driver acpi-tad failed with error -17
    
    Fixes: 3230b2b3c1ab ("ACPI: TAD: Add low-level support for real time capability")
    Signed-off-by: Daniel Tang <[email protected]>
    Reviewed-by: Mika Westerberg <[email protected]>
    Link: https://patch.msgid.link/2881298.hMirdbgypa@daniel-desktop3
    Cc: 5.2+ <[email protected]> # 5.2+
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

ALSA: lx_core: use int type to store negative error codes [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Thu Aug 28 16:13:10 2025 +0800

    ALSA: lx_core: use int type to store negative error codes
    
    [ Upstream commit 4ef353d546cda466fc39b7daca558d7bcec21c09 ]
    
    Change the 'ret' variable from u16 to int to store negative error codes or
    zero returned by lx_message_send_atomic().
    
    Storing the negative error codes in unsigned type, doesn't cause an issue
    at runtime but it's ugly as pants. Additionally, assigning negative error
    codes to unsigned type may trigger a GCC warning when the -Wsign-conversion
    flag is enabled.
    
    No effect on runtime.
    
    Fixes: 02bec4904508 ("ALSA: lx6464es - driver for the digigram lx6464es interface")
    Signed-off-by: Qianfeng Rong <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

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

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

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

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

arm64: dts: mediatek: mt8516-pumpkin: Fix machine compatible [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Thu Jul 24 10:39:14 2025 +0200

    arm64: dts: mediatek: mt8516-pumpkin: Fix machine compatible
    
    [ Upstream commit ffe6a5d1dd4d4d8af0779526cf4e40522647b25f ]
    
    This devicetree contained only the SoC compatible but lacked the
    machine specific one: add a "mediatek,mt8516-pumpkin" compatible
    to the list to fix dtbs_check warnings.
    
    Fixes: 9983822c8cf9 ("arm64: dts: mediatek: add pumpkin board dts")
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Reviewed-by: Fei Shao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Matthias Brugger <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: msm8916: Add missing MDSS reset [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Mon Sep 15 15:28:30 2025 +0200

    arm64: dts: qcom: msm8916: Add missing MDSS reset
    
    commit 99b78773c2ae55dcc01025f94eae8ce9700ae985 upstream.
    
    On most MSM8916 devices (aside from the DragonBoard 410c), the bootloader
    already initializes the display to show the boot splash screen. In this
    situation, MDSS is already configured and left running when starting Linux.
    To avoid side effects from the bootloader configuration, the MDSS reset can
    be specified in the device tree to start again with a clean hardware state.
    
    The reset for MDSS is currently missing in msm8916.dtsi, which causes
    errors when the MDSS driver tries to re-initialize the registers:
    
     dsi_err_worker: status=6
     dsi_err_worker: status=6
     dsi_err_worker: status=6
     ...
    
    It turns out that we have always indirectly worked around this by building
    the MDSS driver as a module. Before v6.17, the power domain was temporarily
    turned off until the module was loaded, long enough to clear the register
    contents. In v6.17, power domains are not turned off during boot until
    sync_state() happens, so this is no longer working. Even before v6.17 this
    resulted in broken behavior, but notably only when the MDSS driver was
    built-in instead of a module.
    
    Cc: [email protected]
    Fixes: 305410ffd1b2 ("arm64: dts: msm8916: Add display support")
    Signed-off-by: Stephan Gerhold <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: dts: qcom: sdm845: Fix slimbam num-channels/ees [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Thu Oct 16 20:11:02 2025 -0400

    arm64: dts: qcom: sdm845: Fix slimbam num-channels/ees
    
    [ Upstream commit 316294bb6695a43a9181973ecd4e6fb3e576a9f7 ]
    
    Reading the hardware registers of the &slimbam on RB3 reveals that the BAM
    supports only 23 pipes (channels) and supports 4 EEs instead of 2. This
    hasn't caused problems so far since nothing is using the extra channels,
    but attempting to use them would lead to crashes.
    
    The bam_dma driver might warn in the future if the num-channels in the DT
    are wrong, so correct the properties in the DT to avoid future regressions.
    
    Cc: [email protected]
    Fixes: 27ca1de07dc3 ("arm64: dts: qcom: sdm845: add slimbus nodes")
    Signed-off-by: Stephan Gerhold <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

arm64: mte: Do not flag the zero page as PG_mte_tagged [+ + +]
Author: Catalin Marinas <[email protected]>
Date:   Fri Oct 17 09:14:53 2025 -0400

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

 
ARM: OMAP2+: pm33xx-core: ix device node reference leaks in amx3_idle_init [+ + +]
Author: Miaoqian Lin <[email protected]>
Date:   Tue Sep 2 15:59:43 2025 +0800

    ARM: OMAP2+: pm33xx-core: ix device node reference leaks in amx3_idle_init
    
    commit 74139a64e8cedb6d971c78d5d17384efeced1725 upstream.
    
    Add missing of_node_put() calls to release
    device node references obtained via of_parse_phandle().
    
    Fixes: 06ee7a950b6a ("ARM: OMAP2+: pm33xx-core: Add cpuidle_ops for am335x/am437x")
    Cc: [email protected]
    Signed-off-by: Miaoqian Lin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kevin Hilman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ASoC: codecs: wcd934x: Simplify with dev_err_probe [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Mon Oct 13 15:42:17 2025 -0400

    ASoC: codecs: wcd934x: Simplify with dev_err_probe
    
    [ Upstream commit fa92f4294283cc7d1f29151420be9e9336182518 ]
    
    Replace dev_err() in probe() path with dev_err_probe() to:
    1. Make code a bit simpler and easier to read,
    2. Do not print messages on deferred probe.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: 4e65bda8273c ("ASoC: wcd934x: fix error handling in wcd934x_codec_parse_data()")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: Intel: bytcht_es8316: Fix invalid quirk input mapping [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Tue Sep 2 19:18:19 2025 +0200

    ASoC: Intel: bytcht_es8316: Fix invalid quirk input mapping
    
    [ Upstream commit b20eb0e8de383116f1e1470d74da2a3c83c4e345 ]
    
    When an invalid value is passed via quirk option, currently
    bytcht_es8316 driver just ignores and leaves as is, which may lead to
    unepxected results like OOB access.
    
    This patch adds the sanity check and corrects the input mapping to the
    certain default value if an invalid value is passed.
    
    Fixes: 249d2fc9e55c ("ASoC: Intel: bytcht_es8316: Set card long_name based on quirks")
    Signed-off-by: Takashi Iwai <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: bytcr_rt5640: Fix invalid quirk input mapping [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Tue Sep 2 19:18:20 2025 +0200

    ASoC: Intel: bytcr_rt5640: Fix invalid quirk input mapping
    
    [ Upstream commit fba404e4b4af4f4f747bb0e41e9fff7d03c7bcc0 ]
    
    When an invalid value is passed via quirk option, currently
    bytcr_rt5640 driver only shows an error message but leaves as is.
    This may lead to unepxected results like OOB access.
    
    This patch corrects the input mapping to the certain default value if
    an invalid value is passed.
    
    Fixes: 063422ca2a9d ("ASoC: Intel: bytcr_rt5640: Set card long_name based on quirks")
    Signed-off-by: Takashi Iwai <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: bytcr_rt5651: Fix invalid quirk input mapping [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Tue Sep 2 19:18:21 2025 +0200

    ASoC: Intel: bytcr_rt5651: Fix invalid quirk input mapping
    
    [ Upstream commit 4336efb59ef364e691ef829a73d9dbd4d5ed7c7b ]
    
    When an invalid value is passed via quirk option, currently
    bytcr_rt5640 driver just ignores and leaves as is, which may lead to
    unepxected results like OOB access.
    
    This patch adds the sanity check and corrects the input mapping to the
    certain default value if an invalid value is passed.
    
    Fixes: 64484ccee7af ("ASoC: Intel: bytcr_rt5651: Set card long_name based on quirks")
    Signed-off-by: Takashi Iwai <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: wcd934x: fix error handling in wcd934x_codec_parse_data() [+ + +]
Author: Ma Ke <[email protected]>
Date:   Mon Oct 13 15:42:18 2025 -0400

    ASoC: wcd934x: fix error handling in wcd934x_codec_parse_data()
    
    [ Upstream commit 4e65bda8273c938039403144730923e77916a3d7 ]
    
    wcd934x_codec_parse_data() contains a device reference count leak in
    of_slim_get_device() where device_find_child() increases the reference
    count of the device but this reference is not properly decreased in
    the success path. Add put_device() in wcd934x_codec_parse_data() and
    add devm_add_action_or_reset() in the probe function, which ensures
    that the reference count of the device is correctly managed.
    
    Memory leak in regmap_init_slimbus() as the allocated regmap is not
    released when the device is removed. Using devm_regmap_init_slimbus()
    instead of regmap_init_slimbus() to ensure automatic regmap cleanup on
    device removal.
    
    Calling path: of_slim_get_device() -> of_find_slim_device() ->
    device_find_child(). As comment of device_find_child() says, 'NOTE:
    you will need to drop the reference with put_device() after use.'.
    
    Found by code review.
    
    Cc: [email protected]
    Fixes: a61f3b4f476e ("ASoC: wcd934x: add support to wcd9340/wcd9341 codec")
    Signed-off-by: Ma Ke <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
blk-crypto: fix missing blktrace bio split events [+ + +]
Author: Yu Kuai <[email protected]>
Date:   Sat Oct 18 12:14:33 2025 -0400

    blk-crypto: fix missing blktrace bio split events
    
    [ Upstream commit 06d712d297649f48ebf1381d19bd24e942813b37 ]
    
    trace_block_split() is missing, resulting in blktrace inability to catch
    BIO split events and making it harder to analyze the BIO sequence.
    
    Cc: [email protected]
    Fixes: 488f6682c832 ("block: blk-crypto-fallback for Inline Encryption")
    Signed-off-by: Yu Kuai <[email protected]>
    Reviewed-by: Bart Van Assche <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    [ added queue parameter to trace_block_split() call ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
blk-mq: check kobject state_in_sysfs before deleting in blk_mq_unregister_hctx [+ + +]
Author: Li Nan <[email protected]>
Date:   Tue Aug 26 16:48:54 2025 +0800

    blk-mq: check kobject state_in_sysfs before deleting in blk_mq_unregister_hctx
    
    [ Upstream commit 4c7ef92f6d4d08a27d676e4c348f4e2922cab3ed ]
    
    In __blk_mq_update_nr_hw_queues() the return value of
    blk_mq_sysfs_register_hctxs() is not checked. If sysfs creation for hctx
    fails, later changing the number of hw_queues or removing disk will
    trigger the following warning:
    
      kernfs: can not remove 'nr_tags', no directory
      WARNING: CPU: 2 PID: 637 at fs/kernfs/dir.c:1707 kernfs_remove_by_name_ns+0x13f/0x160
      Call Trace:
       remove_files.isra.1+0x38/0xb0
       sysfs_remove_group+0x4d/0x100
       sysfs_remove_groups+0x31/0x60
       __kobject_del+0x23/0xf0
       kobject_del+0x17/0x40
       blk_mq_unregister_hctx+0x5d/0x80
       blk_mq_sysfs_unregister_hctxs+0x94/0xd0
       blk_mq_update_nr_hw_queues+0x124/0x760
       nullb_update_nr_hw_queues+0x71/0xf0 [null_blk]
       nullb_device_submit_queues_store+0x92/0x120 [null_blk]
    
    kobjct_del() was called unconditionally even if sysfs creation failed.
    Fix it by checkig the kobject creation statusbefore deleting it.
    
    Fixes: 477e19dedc9d ("blk-mq: adjust debugfs and sysfs register when updating nr_hw_queues")
    Signed-off-by: Li Nan <[email protected]>
    Reviewed-by: Yu Kuai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
block: use int to store blk_stack_limits() return value [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Tue Sep 2 21:09:30 2025 +0800

    block: use int to store blk_stack_limits() return value
    
    [ Upstream commit b0b4518c992eb5f316c6e40ff186cbb7a5009518 ]
    
    Change the 'ret' variable in blk_stack_limits() from unsigned int to int,
    as it needs to store negative value -1.
    
    Storing the negative error codes in unsigned type, or performing equality
    comparisons (e.g., ret == -1), doesn't cause an issue at runtime [1] but
    can be confusing.  Additionally, assigning negative error codes to unsigned
    type may trigger a GCC warning when the -Wsign-conversion flag is enabled.
    
    No effect on runtime.
    
    Link: https://lore.kernel.org/all/x3wogjf6vgpkisdhg3abzrx7v7zktmdnfmqeih5kosszmagqfs@oh3qxrgzkikf/ #1
    Signed-off-by: Qianfeng Rong <[email protected]>
    Reviewed-by: John Garry <[email protected]>
    Fixes: fe0b393f2c0a ("block: Correct handling of bottom device misaligment")
    Reviewed-by: Bart Van Assche <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: MGMT: Fix not exposing debug UUID on MGMT_OP_READ_EXP_FEATURES_INFO [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Wed Aug 20 08:50:12 2025 -0400

    Bluetooth: MGMT: Fix not exposing debug UUID on MGMT_OP_READ_EXP_FEATURES_INFO
    
    [ Upstream commit 79e562a52adea4afa0601a15964498fae66c823c ]
    
    The debug UUID was only getting set if MGMT_OP_READ_EXP_FEATURES_INFO
    was not called with a specific index which breaks the likes of
    bluetoothd since it only invokes MGMT_OP_READ_EXP_FEATURES_INFO when an
    adapter is plugged, so instead of depending hdev not to be set just
    enable the UUID on any index like it was done with iso_sock_uuid.
    
    Fixes: e625e50ceee1 ("Bluetooth: Introduce debug feature when dynamic debug is disabled")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: Explicitly check accesses to bpf_sock_addr [+ + +]
Author: Paul Chaignon <[email protected]>
Date:   Wed Sep 17 10:08:00 2025 +0200

    bpf: Explicitly check accesses to bpf_sock_addr
    
    [ Upstream commit 6fabca2fc94d33cdf7ec102058983b086293395f ]
    
    Syzkaller found a kernel warning on the following sock_addr program:
    
        0: r0 = 0
        1: r2 = *(u32 *)(r1 +60)
        2: exit
    
    which triggers:
    
        verifier bug: error during ctx access conversion (0)
    
    This is happening because offset 60 in bpf_sock_addr corresponds to an
    implicit padding of 4 bytes, right after msg_src_ip4. Access to this
    padding isn't rejected in sock_addr_is_valid_access and it thus later
    fails to convert the access.
    
    This patch fixes it by explicitly checking the various fields of
    bpf_sock_addr in sock_addr_is_valid_access.
    
    I checked the other ctx structures and is_valid_access functions and
    didn't find any other similar cases. Other cases of (properly handled)
    padding are covered in new tests in a subsequent patch.
    
    Fixes: 1cedee13d25a ("bpf: Hooks for sys_sendmsg")
    Reported-by: [email protected]
    Signed-off-by: Paul Chaignon <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Acked-by: Eduard Zingerman <[email protected]>
    Acked-by: Daniel Borkmann <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=136ca59d411f92e821b7
    Link: https://lore.kernel.org/bpf/b58609d9490649e76e584b0361da0abd3c2c1779.1758094761.git.paul.chaignon@gmail.com
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Fix metadata_dst leak __bpf_redirect_neigh_v{4,6} [+ + +]
Author: Daniel Borkmann <[email protected]>
Date:   Fri Oct 3 09:34:18 2025 +0200

    bpf: Fix metadata_dst leak __bpf_redirect_neigh_v{4,6}
    
    [ Upstream commit 23f3770e1a53e6c7a553135011f547209e141e72 ]
    
    Cilium has a BPF egress gateway feature which forces outgoing K8s Pod
    traffic to pass through dedicated egress gateways which then SNAT the
    traffic in order to interact with stable IPs outside the cluster.
    
    The traffic is directed to the gateway via vxlan tunnel in collect md
    mode. A recent BPF change utilized the bpf_redirect_neigh() helper to
    forward packets after the arrival and decap on vxlan, which turned out
    over time that the kmalloc-256 slab usage in kernel was ever-increasing.
    
    The issue was that vxlan allocates the metadata_dst object and attaches
    it through a fake dst entry to the skb. The latter was never released
    though given bpf_redirect_neigh() was merely setting the new dst entry
    via skb_dst_set() without dropping an existing one first.
    
    Fixes: b4ab31414970 ("bpf: Add redirect_neigh helper as redirect drop-in")
    Reported-by: Yusuke Suzuki <[email protected]>
    Reported-by: Julian Wiedmann <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Cc: Martin KaFai Lau <[email protected]>
    Cc: Jakub Kicinski <[email protected]>
    Cc: Jordan Rife <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Reviewed-by: Jordan Rife <[email protected]>
    Reviewed-by: Jakub Kicinski <[email protected]>
    Reviewed-by: Martin KaFai Lau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: avoid potential out-of-bounds in btrfs_encode_fh() [+ + +]
Author: Anderson Nascimento <[email protected]>
Date:   Sat Oct 18 12:01:58 2025 -0400

    btrfs: avoid potential out-of-bounds in btrfs_encode_fh()
    
    [ Upstream commit dff4f9ff5d7f289e4545cc936362e01ed3252742 ]
    
    The function btrfs_encode_fh() does not properly account for the three
    cases it handles.
    
    Before writing to the file handle (fh), the function only returns to the
    user BTRFS_FID_SIZE_NON_CONNECTABLE (5 dwords, 20 bytes) or
    BTRFS_FID_SIZE_CONNECTABLE (8 dwords, 32 bytes).
    
    However, when a parent exists and the root ID of the parent and the
    inode are different, the function writes BTRFS_FID_SIZE_CONNECTABLE_ROOT
    (10 dwords, 40 bytes).
    
    If *max_len is not large enough, this write goes out of bounds because
    BTRFS_FID_SIZE_CONNECTABLE_ROOT is greater than
    BTRFS_FID_SIZE_CONNECTABLE originally returned.
    
    This results in an 8-byte out-of-bounds write at
    fid->parent_root_objectid = parent_root_id.
    
    A previous attempt to fix this issue was made but was lost.
    
    https://lore.kernel.org/all/[email protected]/
    
    Although this issue does not seem to be easily triggerable, it is a
    potential memory corruption bug that should be fixed. This patch
    resolves the issue by ensuring the function returns the appropriate size
    for all three cases and validates that *max_len is large enough before
    writing any data.
    
    Fixes: be6e8dc0ba84 ("NFS support for btrfs - v3")
    CC: [email protected] # 3.0+
    Signed-off-by: Anderson Nascimento <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    [ replaced btrfs_root_id() calls with direct ->root->root_key.objectid access ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: remove duplicated in_range() macro [+ + +]
Author: Johannes Thumshirn <[email protected]>
Date:   Fri Oct 17 09:04:54 2025 +0000

    btrfs: remove duplicated in_range() macro
    
    [ Upstream commit cea628008fc8c6c9c7b53902f6659e040f33c790 ]
    
    The in_range() macro is defined twice in btrfs' source, once in ctree.h
    and once in misc.h.
    
    Remove the definition in ctree.h and include misc.h in the files depending
    on it.
    
    Signed-off-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
bus: fsl-mc: Check return value of platform_get_resource() [+ + +]
Author: Salah Triki <[email protected]>
Date:   Mon Aug 25 10:34:35 2025 +0100

    bus: fsl-mc: Check return value of platform_get_resource()
    
    commit 25f526507b8ccc6ac3a43bc094d09b1f9b0b90ae upstream.
    
    platform_get_resource() returns NULL in case of failure, so check its
    return value and propagate the error in order to prevent NULL pointer
    dereference.
    
    Fixes: 6305166c8771 ("bus: fsl-mc: Add ACPI support for fsl-mc")
    Cc: [email protected]
    Signed-off-by: Salah Triki <[email protected]>
    Acked-by: Ioana Ciornei <[email protected]>
    Link: https://lore.kernel.org/r/aKwuK6TRr5XNYQ8u@pc
    Signed-off-by: Christophe Leroy <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

bus: mhi: host: Do not use uninitialized 'dev' pointer in mhi_init_irq_setup() [+ + +]
Author: Adam Xue <[email protected]>
Date:   Sat Oct 18 10:54:52 2025 -0400

    bus: mhi: host: Do not use uninitialized 'dev' pointer in mhi_init_irq_setup()
    
    [ Upstream commit d0856a6dff57f95cc5d2d74e50880f01697d0cc4 ]
    
    In mhi_init_irq_setup, the device pointer used for dev_err() was not
    initialized. Use the pointer from mhi_cntrl instead.
    
    Fixes: b0fc0167f254 ("bus: mhi: core: Allow shared IRQ for event rings")
    Fixes: 3000f85b8f47 ("bus: mhi: core: Add support for basic PM operations")
    Signed-off-by: Adam Xue <[email protected]>
    [mani: reworded subject/description and CCed stable]
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Reviewed-by: Krishna Chaitanya Chundru <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
clk: at91: peripheral: fix return value [+ + +]
Author: Brian Masney <[email protected]>
Date:   Mon Aug 11 11:17:53 2025 -0400

    clk: at91: peripheral: fix return value
    
    [ Upstream commit 47b13635dabc14f1c2fdcaa5468b47ddadbdd1b5 ]
    
    determine_rate() is expected to return an error code, or 0 on success.
    clk_sam9x5_peripheral_determine_rate() has a branch that returns the
    parent rate on a certain case. This is the behavior of round_rate(),
    so let's go ahead and fix this by setting req->rate.
    
    Fixes: b4c115c76184f ("clk: at91: clk-peripheral: add support for changeable parent rate")
    Reviewed-by: Alexander Sverdlin <[email protected]>
    Acked-by: Nicolas Ferre <[email protected]>
    Signed-off-by: Brian Masney <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: nxp: Fix pll0 rate check condition in LPC18xx CGU driver [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Sun Jul 6 13:11:55 2025 -0700

    clk: nxp: Fix pll0 rate check condition in LPC18xx CGU driver
    
    [ Upstream commit 1624dead9a4d288a594fdf19735ebfe4bb567cb8 ]
    
    The conditional check for the PLL0 multiplier 'm' used a logical AND
    instead of OR, making the range check ineffective. This patch replaces
    && with || to correctly reject invalid values of 'm' that are either
    less than or equal to 0 or greater than LPC18XX_PLL0_MSEL_MAX.
    
    This ensures proper bounds checking during clk rate setting and rounding.
    
    Fixes: b04e0b8fd544 ("clk: add lpc18xx cgu clk driver")
    Signed-off-by: Alok Tiwari <[email protected]>
    [[email protected]: 'm' is unsigned so remove < condition]
    Signed-off-by: Stephen Boyd <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: nxp: lpc18xx-cgu: convert from round_rate() to determine_rate() [+ + +]
Author: Brian Masney <[email protected]>
Date:   Mon Aug 11 11:18:29 2025 -0400

    clk: nxp: lpc18xx-cgu: convert from round_rate() to determine_rate()
    
    [ Upstream commit b46a3d323a5b7942e65025254c13801d0f475f02 ]
    
    The round_rate() clk ops is deprecated, so migrate this driver from
    round_rate() to determine_rate() using the Coccinelle semantic patch
    on the cover letter of this series.
    
    Signed-off-by: Brian Masney <[email protected]>
    Stable-dep-of: 1624dead9a4d ("clk: nxp: Fix pll0 rate check condition in LPC18xx CGU driver")
    Signed-off-by: Sasha Levin <[email protected]>

 
clocksource/drivers/clps711x: Fix resource leaks in error paths [+ + +]
Author: Zhen Ni <[email protected]>
Date:   Thu Aug 14 20:33:24 2025 +0800

    clocksource/drivers/clps711x: Fix resource leaks in error paths
    
    commit cd32e596f02fc981674573402c1138f616df1728 upstream.
    
    The current implementation of clps711x_timer_init() has multiple error
    paths that directly return without releasing the base I/O memory mapped
    via of_iomap(). Fix of_iomap leaks in error paths.
    
    Fixes: 04410efbb6bc ("clocksource/drivers/clps711x: Convert init function to return error")
    Fixes: 2a6a8e2d9004 ("clocksource/drivers/clps711x: Remove board support")
    Signed-off-by: Zhen Ni <[email protected]>
    Signed-off-by: Daniel Lezcano <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
copy_sighand: Handle architectures where sizeof(unsigned long) < sizeof(u64) [+ + +]
Author: Simon Schuster <[email protected]>
Date:   Mon Sep 1 15:09:50 2025 +0200

    copy_sighand: Handle architectures where sizeof(unsigned long) < sizeof(u64)
    
    commit 04ff48239f46e8b493571e260bd0e6c3a6400371 upstream.
    
    With the introduction of clone3 in commit 7f192e3cd316 ("fork: add
    clone3") the effective bit width of clone_flags on all architectures was
    increased from 32-bit to 64-bit. However, the signature of the copy_*
    helper functions (e.g., copy_sighand) used by copy_process was not
    adapted.
    
    As such, they truncate the flags on any 32-bit architectures that
    supports clone3 (arc, arm, csky, m68k, microblaze, mips32, openrisc,
    parisc32, powerpc32, riscv32, x86-32 and xtensa).
    
    For copy_sighand with CLONE_CLEAR_SIGHAND being an actual u64
    constant, this triggers an observable bug in kernel selftest
    clone3_clear_sighand:
    
            if (clone_flags & CLONE_CLEAR_SIGHAND)
    
    in function copy_sighand within fork.c will always fail given:
    
            unsigned long /* == uint32_t */ clone_flags
            #define CLONE_CLEAR_SIGHAND 0x100000000ULL
    
    This commit fixes the bug by always passing clone_flags to copy_sighand
    via their declared u64 type, invariant of architecture-dependent integer
    sizes.
    
    Fixes: b612e5df4587 ("clone3: add CLONE_CLEAR_SIGHAND")
    Cc: [email protected] # linux-5.5+
    Signed-off-by: Simon Schuster <[email protected]>
    Link: https://lore.kernel.org/20250901-nios2-implement-clone3-v2-1-53fcf5577d57@siemens-energy.com
    Acked-by: David Hildenbrand <[email protected]>
    Reviewed-by: Lorenzo Stoakes <[email protected]>
    Reviewed-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cpufreq: intel_pstate: Fix object lifecycle issue in update_qos_request() [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Fri Sep 5 15:52:03 2025 +0200

    cpufreq: intel_pstate: Fix object lifecycle issue in update_qos_request()
    
    commit 69e5d50fcf4093fb3f9f41c4f931f12c2ca8c467 upstream.
    
    The cpufreq_cpu_put() call in update_qos_request() takes place too early
    because the latter subsequently calls freq_qos_update_request() that
    indirectly accesses the policy object in question through the QoS request
    object passed to it.
    
    Fortunately, update_qos_request() is called under intel_pstate_driver_lock,
    so this issue does not matter for changing the intel_pstate operation
    mode, but it theoretically can cause a crash to occur on CPU device hot
    removal (which currently can only happen in virt, but it is formally
    supported nevertheless).
    
    Address this issue by modifying update_qos_request() to drop the
    reference to the policy later.
    
    Fixes: da5c504c7aae ("cpufreq: intel_pstate: Implement QoS supported freq constraints")
    Cc: 5.4+ <[email protected]> # 5.4+
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Reviewed-by: Zihuan Zhang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cramfs: Verify inode mode when loading from disk [+ + +]
Author: Tetsuo Handa <[email protected]>
Date:   Sat Aug 30 19:01:01 2025 +0900

    cramfs: Verify inode mode when loading from disk
    
    [ Upstream commit 7f9d34b0a7cb93d678ee7207f0634dbf79e47fe5 ]
    
    The inode mode loaded from corrupted disk can be invalid. Do like what
    commit 0a9e74051313 ("isofs: Verify inode mode when loading from disk")
    does.
    
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=895c23f6917da440ed0d
    Signed-off-by: Tetsuo Handa <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Acked-by: Nicolas Pitre <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
crypto: atmel - Fix dma_unmap_sg() direction [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Wed Sep 3 10:34:46 2025 +0200

    crypto: atmel - Fix dma_unmap_sg() direction
    
    commit f5d643156ef62216955c119216d2f3815bd51cb1 upstream.
    
    It seems like everywhere in this file, dd->in_sg is mapped with
    DMA_TO_DEVICE and dd->out_sg is mapped with DMA_FROM_DEVICE.
    
    Fixes: 13802005d8f2 ("crypto: atmel - add Atmel DES/TDES driver")
    Cc: <[email protected]>
    Signed-off-by: Thomas Fourier <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

crypto: essiv - Check ssize for decryption and in-place encryption [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Wed Oct 8 15:54:20 2025 +0800

    crypto: essiv - Check ssize for decryption and in-place encryption
    
    [ Upstream commit 6bb73db6948c2de23e407fe1b7ef94bf02b7529f ]
    
    Move the ssize check to the start in essiv_aead_crypt so that
    it's also checked for decryption and in-place encryption.
    
    Reported-by: Muhammad Alifa Ramdhan <[email protected]>
    Fixes: be1eb7f78aa8 ("crypto: essiv - create wrapper template for ESSIV generation")
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: rng - Ensure set_ent is always present [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Thu Oct 2 17:45:39 2025 +0800

    crypto: rng - Ensure set_ent is always present
    
    commit c0d36727bf39bb16ef0a67ed608e279535ebf0da upstream.
    
    Ensure that set_ent is always set since only drbg provides it.
    
    Fixes: 77ebdabe8de7 ("crypto: af_alg - add extra parameters for DRBG interface")
    Reported-by: Yiqi Sun <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

crypto: rockchip - Fix dma_unmap_sg() nents value [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Mon Oct 20 12:23:42 2025 -0400

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

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

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

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

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

 
dm-integrity: limit MAX_TAG_SIZE to 255 [+ + +]
Author: Mikulas Patocka <[email protected]>
Date:   Mon Sep 8 15:52:02 2025 +0200

    dm-integrity: limit MAX_TAG_SIZE to 255
    
    [ Upstream commit 77b8e6fbf9848d651f5cb7508f18ad0971f3ffdb ]
    
    MAX_TAG_SIZE was 0x1a8 and it may be truncated in the "bi->metadata_size
    = ic->tag_size" assignment. We need to limit it to 255.
    
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm: fix NULL pointer dereference in __dm_suspend() [+ + +]
Author: Zheng Qixing <[email protected]>
Date:   Mon Oct 13 23:03:34 2025 -0400

    dm: fix NULL pointer dereference in __dm_suspend()
    
    [ Upstream commit 8d33a030c566e1f105cd5bf27f37940b6367f3be ]
    
    There is a race condition between dm device suspend and table load that
    can lead to null pointer dereference. The issue occurs when suspend is
    invoked before table load completes:
    
    BUG: kernel NULL pointer dereference, address: 0000000000000054
    Oops: 0000 [#1] PREEMPT SMP PTI
    CPU: 6 PID: 6798 Comm: dmsetup Not tainted 6.6.0-g7e52f5f0ca9b #62
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.1-2.fc37 04/01/2014
    RIP: 0010:blk_mq_wait_quiesce_done+0x0/0x50
    Call Trace:
      <TASK>
      blk_mq_quiesce_queue+0x2c/0x50
      dm_stop_queue+0xd/0x20
      __dm_suspend+0x130/0x330
      dm_suspend+0x11a/0x180
      dev_suspend+0x27e/0x560
      ctl_ioctl+0x4cf/0x850
      dm_ctl_ioctl+0xd/0x20
      vfs_ioctl+0x1d/0x50
      __se_sys_ioctl+0x9b/0xc0
      __x64_sys_ioctl+0x19/0x30
      x64_sys_call+0x2c4a/0x4620
      do_syscall_64+0x9e/0x1b0
    
    The issue can be triggered as below:
    
    T1                                              T2
    dm_suspend                                      table_load
    __dm_suspend                                    dm_setup_md_queue
                                                    dm_mq_init_request_queue
                                                    blk_mq_init_allocated_queue
                                                    => q->mq_ops = set->ops; (1)
    dm_stop_queue / dm_wait_for_completion
    => q->tag_set NULL pointer!     (2)
                                                    => q->tag_set = set; (3)
    
    Fix this by checking if a valid table (map) exists before performing
    request-based suspend and waiting for target I/O. When map is NULL,
    skip these table-dependent suspend steps.
    
    Even when map is NULL, no I/O can reach any target because there is
    no table loaded; I/O submitted in this state will fail early in the
    DM layer. Skipping the table-dependent suspend logic in this case
    is safe and avoids NULL pointer dereferences.
    
    Fixes: c4576aed8d85 ("dm: fix request-based dm's use of dm_wait_for_completion")
    Cc: [email protected]
    Signed-off-by: Zheng Qixing <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    [ omitted DMF_QUEUE_STOPPED flag setting and braces absent in 5.15 ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Documentation: trace: historgram-design: Separate sched_waking histogram section heading and the following diagram [+ + +]
Author: Bagas Sanjaya <[email protected]>
Date:   Tue Sep 16 12:42:01 2025 +0700

    Documentation: trace: historgram-design: Separate sched_waking histogram section heading and the following diagram
    
    [ Upstream commit 8c716e87ea33519920811338100d6d8a7fb32456 ]
    
    Section heading for sched_waking histogram is shown as normal paragraph
    instead due to codeblock marker for the following diagram being in the
    same line as the section underline. Separate them.
    
    Fixes: daceabf1b494 ("tracing/doc: Fix ascii-art in histogram-design.rst")
    Reviewed-by: Tom Zanussi <[email protected]>
    Reviewed-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Bagas Sanjaya <[email protected]>
    Acked-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Jonathan Corbet <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
driver core/PM: Set power.no_callbacks along with power.no_pm [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Thu Aug 28 12:59:24 2025 +0200

    driver core/PM: Set power.no_callbacks along with power.no_pm
    
    commit c2ce2453413d429e302659abc5ace634e873f6f5 upstream.
    
    Devices with power.no_pm set are not expected to need any power
    management at all, so modify device_set_pm_not_required() to set
    power.no_callbacks for them too in case runtime PM will be enabled
    for any of them (which in principle may be done for convenience if
    such a device participates in a dependency chain).
    
    Since device_set_pm_not_required() must be called before device_add()
    or it would not have any effect, it can update power.no_callbacks
    without locking, unlike pm_runtime_no_callbacks() that can be called
    after registering the target device.
    
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Cc: stable <[email protected]>
    Reviewed-by: Sudeep Holla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drivers/base/node: fix double free in register_one_node() [+ + +]
Author: Donet Tom <[email protected]>
Date:   Thu Sep 18 11:11:44 2025 +0530

    drivers/base/node: fix double free in register_one_node()
    
    [ Upstream commit 0efdedfa537eb534c251a5b4794caaf72cc55869 ]
    
    When device_register() fails in register_node(), it calls
    put_device(&node->dev).  This triggers node_device_release(), which calls
    kfree(to_node(dev)), thereby freeing the entire node structure.
    
    As a result, when register_node() returns an error, the node memory has
    already been freed.  Calling kfree(node) again in register_one_node()
    leads to a double free.
    
    This patch removes the redundant kfree(node) from register_one_node() to
    prevent the double free.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 786eb990cfb7 ("drivers/base/node: handle error properly in register_one_node()")
    Signed-off-by: Donet Tom <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Acked-by: Oscar Salvador <[email protected]>
    Cc: Alison Schofield <[email protected]>
    Cc: Chris Mason <[email protected]>
    Cc: Danilo Krummrich <[email protected]>
    Cc: Dave Jiang <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Hiroyouki Kamezawa <[email protected]>
    Cc: Joanthan Cameron <[email protected]>
    Cc: "Ritesh Harjani (IBM)" <[email protected]>
    Cc: Yury Norov (NVIDIA) <[email protected]>
    Cc: Zi Yan <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drivers/base/node: handle error properly in register_one_node() [+ + +]
Author: Donet Tom <[email protected]>
Date:   Fri Aug 22 14:18:45 2025 +0530

    drivers/base/node: handle error properly in register_one_node()
    
    [ Upstream commit 786eb990cfb78aab94eb74fb32a030e14723a620 ]
    
    If register_node() returns an error, it is not handled correctly.
    The function will proceed further and try to register CPUs under the
    node, which is not correct.
    
    So, in this patch, if register_node() returns an error, we return
    immediately from the function.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 76b67ed9dce6 ("[PATCH] node hotplug: register cpu: remove node struct")
    Signed-off-by: Donet Tom <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Cc: Alison Schofield <[email protected]>
    Cc: Danilo Krummrich <[email protected]>
    Cc: Dave Jiang <[email protected]>
    Cc: Donet Tom <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Hiroyouki Kamezawa <[email protected]>
    Cc: Joanthan Cameron <[email protected]>
    Cc: Oscar Salvador <[email protected]>
    Cc: "Ritesh Harjani (IBM)" <[email protected]>
    Cc: Yury Norov (NVIDIA) <[email protected]>
    Cc: Zi Yan <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display: Add missing DCE6 SCL_HORZ_FILTER_INIT* SRIs [+ + +]
Author: Timur KristĂłf <[email protected]>
Date:   Thu Sep 25 20:45:22 2025 +0200

    drm/amd/display: Add missing DCE6 SCL_HORZ_FILTER_INIT* SRIs
    
    [ Upstream commit d60f9c45d1bff7e20ecd57492ef7a5e33c94a37c ]
    
    Without these, it's impossible to program these registers.
    
    Fixes: 102b2f587ac8 ("drm/amd/display: dce_transform: DCE6 Scaling Horizontal Filter Init (v2)")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur KristĂłf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Fix potential null dereference [+ + +]
Author: Igor Artemiev <[email protected]>
Date:   Mon Apr 3 16:10:37 2023 +0300

    drm/amd/display: Fix potential null dereference
    
    commit 52f1783ff4146344342422c1cd94fcb4ce39b6fe upstream.
    
    The adev->dm.dc pointer can be NULL and dereferenced in amdgpu_dm_fini()
    without checking.
    
    Add a NULL pointer check before calling dc_dmub_srv_destroy().
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 9a71c7d31734 ("drm/amd/display: Register DMUB service with DC")
    Signed-off-by: Igor Artemiev <[email protected]>
    Signed-off-by: Hamza Mahfooz <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Eslam Khafagy <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/amd/display: Properly clear SCL_*_FILTER_CONTROL on DCE6 [+ + +]
Author: Timur KristĂłf <[email protected]>
Date:   Thu Sep 25 20:45:23 2025 +0200

    drm/amd/display: Properly clear SCL_*_FILTER_CONTROL on DCE6
    
    [ Upstream commit c0aa7cf49dd6cb302fe28e7183992b772cb7420c ]
    
    Previously, the code would set a bit field which didn't exist
    on DCE6 so it would be effectively a no-op.
    
    Fixes: b70aaf5586f2 ("drm/amd/display: dce_transform: add DCE6 specific macros,functions")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur KristĂłf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Properly disable scaling on DCE6 [+ + +]
Author: Timur KristĂłf <[email protected]>
Date:   Thu Sep 25 20:45:24 2025 +0200

    drm/amd/display: Properly disable scaling on DCE6
    
    [ Upstream commit a7dc87f3448bea5ebe054f14e861074b9c289c65 ]
    
    SCL_SCALER_ENABLE can be used to enable/disable the scaler
    on DCE6. Program it to 0 when scaling isn't used, 1 when used.
    Additionally, clear some other registers when scaling is
    disabled and program the SCL_UPDATE register as recommended.
    
    This fixes visible glitches for users whose BIOS sets up a
    mode with scaling at boot, which DC was unable to clean up.
    
    Fixes: b70aaf5586f2 ("drm/amd/display: dce_transform: add DCE6 specific macros,functions")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur KristĂłf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Remove redundant safeguards for dmub-srv destroy() [+ + +]
Author: Roman Li <[email protected]>
Date:   Mon May 10 11:29:29 2021 -0400

    drm/amd/display: Remove redundant safeguards for dmub-srv destroy()
    
    commit 3beac533b8daa18358dabbe5059c417d192b2a93 upstream.
    
    [Why]
    dc_dmub_srv_destroy() has internal null-check and null assignment.
    No need to duplicate them externally.
    
    [How]
    Remove redundant safeguards.
    
    Signed-off-by: Lang Yu <[email protected]>
    Signed-off-by: Roman Li <[email protected]>
    Reviewed-by: Nicholas Kazlauskas <[email protected]>
    Acked-by: Qingqing Zhuo <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Eslam Khafagy <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
drm/amdgpu: Add additional DCE6 SCL registers [+ + +]
Author: Alex Deucher <[email protected]>
Date:   Thu Sep 25 20:45:21 2025 +0200

    drm/amdgpu: Add additional DCE6 SCL registers
    
    [ Upstream commit 507296328b36ffd00ec1f4fde5b8acafb7222ec7 ]
    
    Fixes: 102b2f587ac8 ("drm/amd/display: dce_transform: DCE6 Scaling Horizontal Filter Init (v2)")
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: Power up UVD 3 for FW validation (v2) [+ + +]
Author: Timur KristĂłf <[email protected]>
Date:   Thu Aug 28 17:11:03 2025 +0200

    drm/amdgpu: Power up UVD 3 for FW validation (v2)
    
    [ Upstream commit c661219cd7be75bb5599b525f16a455a058eb516 ]
    
    Unlike later versions, UVD 3 has firmware validation.
    For this to work, the UVD should be powered up correctly.
    
    When DPM is enabled and the display clock is off,
    the SMU may choose a power state which doesn't power
    the UVD, which can result in failure to initialize UVD.
    
    v2:
    Add code comments to explain about the UVD power state
    and how UVD clock is turned on/off.
    
    Fixes: b38f3e80ecec ("drm amdgpu: SI UVD v3_1 (v2)")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur KristĂłf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amdgpu: use atomic functions with memory barriers for vm fault info [+ + +]
Author: Gui-Dong Han <[email protected]>
Date:   Tue Oct 21 09:34:32 2025 -0400

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

 
drm/exynos: exynos7_drm_decon: remove ctx->suspended [+ + +]
Author: Kaustabh Chakraborty <[email protected]>
Date:   Sat Oct 18 09:51:55 2025 -0400

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

 
drm/nouveau: fix bad ret code in nouveau_bo_move_prep [+ + +]
Author: Shuhao Fu <[email protected]>
Date:   Wed Oct 8 00:17:09 2025 +0800

    drm/nouveau: fix bad ret code in nouveau_bo_move_prep
    
    commit e4bea919584ff292c9156cf7d641a2ab3cbe27b0 upstream.
    
    In `nouveau_bo_move_prep`, if `nouveau_mem_map` fails, an error code
    should be returned. Currently, it returns zero even if vmm addr is not
    correctly mapped.
    
    Cc: [email protected]
    Reviewed-by: Petr Vorel <[email protected]>
    Signed-off-by: Shuhao Fu <[email protected]>
    Fixes: 9ce523cc3bf2 ("drm/nouveau: separate buffer object backing memory from nvkm structures")
    Signed-off-by: Danilo Krummrich <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/radeon/r600_cs: clean up of dead code in r600_cs [+ + +]
Author: Brahmajit Das <[email protected]>
Date:   Mon Aug 11 14:51:25 2025 +0530

    drm/radeon/r600_cs: clean up of dead code in r600_cs
    
    [ Upstream commit 260dcf5b06d519bcf27a5dfdb5c626821a55c170 ]
    
    GCC 16 enables -Werror=unused-but-set-variable= which results in build
    error with the following message.
    
    drivers/gpu/drm/radeon/r600_cs.c: In function ‘r600_texture_size’:
    drivers/gpu/drm/radeon/r600_cs.c:1411:29: error: variable ‘level’ set but not used [-Werror=unused-but-set-variable=]
     1411 |         unsigned offset, i, level;
          |                             ^~~~~
    cc1: all warnings being treated as errors
    make[6]: *** [scripts/Makefile.build:287: drivers/gpu/drm/radeon/r600_cs.o] Error 1
    
    level although is set, but in never used in the function
    r600_texture_size. Thus resulting in dead code and this error getting
    triggered.
    
    Fixes: 60b212f8ddcd ("drm/radeon: overhaul texture checking. (v3)")
    Acked-by: Christian König <[email protected]>
    Signed-off-by: Brahmajit Das <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/vmwgfx: Fix Use-after-free in validation [+ + +]
Author: Ian Forbes <[email protected]>
Date:   Fri Sep 26 14:54:25 2025 -0500

    drm/vmwgfx: Fix Use-after-free in validation
    
    [ Upstream commit dfe1323ab3c8a4dd5625ebfdba44dc47df84512a ]
    
    Nodes stored in the validation duplicates hashtable come from an arena
    allocator that is cleared at the end of vmw_execbuf_process. All nodes
    are expected to be cleared in vmw_validation_drop_ht but this node escaped
    because its resource was destroyed prematurely.
    
    Fixes: 64ad2abfe9a6 ("drm/vmwgfx: Adapt validation code for reference-free lookups")
    Reported-by: Kuzey Arda Bulut <[email protected]>
    Signed-off-by: Ian Forbes <[email protected]>
    Reviewed-by: Zack Rusin <[email protected]>
    Signed-off-by: Zack Rusin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

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

    exec: Fix incorrect type for ret
    
    [ Upstream commit 5e088248375d171b80c643051e77ade6b97bc386 ]
    
    In the setup_arg_pages(), ret is declared as an unsigned long.
    The ret might take a negative value. Therefore, its type should
    be changed to int.
    
    Signed-off-by: Xichao Zhao <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

ext4: correctly handle queries for metadata mappings [+ + +]
Author: Ojaswin Mujoo <[email protected]>
Date:   Fri Sep 5 13:44:46 2025 +0530

    ext4: correctly handle queries for metadata mappings
    
    commit 46c22a8bb4cb03211da1100d7ee4a2005bf77c70 upstream.
    
    Currently, our handling of metadata is _ambiguous_ in some scenarios,
    that is, we end up returning unknown if the range only covers the
    mapping partially.
    
    For example, in the following case:
    
    $ xfs_io -c fsmap -d
    
      0: 254:16 [0..7]: static fs metadata 8
      1: 254:16 [8..15]: special 102:1 8
      2: 254:16 [16..5127]: special 102:2 5112
      3: 254:16 [5128..5255]: special 102:3 128
      4: 254:16 [5256..5383]: special 102:4 128
      5: 254:16 [5384..70919]: inodes 65536
      6: 254:16 [70920..70967]: unknown 48
      ...
    
    $ xfs_io -c fsmap -d 24 33
    
      0: 254:16 [24..39]: unknown 16  <--- incomplete reporting
    
    $ xfs_io -c fsmap -d 24 33  (With patch)
    
        0: 254:16 [16..5127]: special 102:2 5112
    
    This is because earlier in ext4_getfsmap_meta_helper, we end up ignoring
    any extent that starts before our queried range, but overlaps it. While
    the man page [1] is a bit ambiguous on this, this fix makes the output
    make more sense since we are anyways returning an "unknown" extent. This
    is also consistent to how XFS does it:
    
    $ xfs_io -c fsmap -d
    
      ...
      6: 254:16 [104..127]: free space 24
      7: 254:16 [128..191]: inodes 64
      ...
    
    $ xfs_io -c fsmap -d 137 150
    
      0: 254:16 [128..191]: inodes 64   <-- full extent returned
    
     [1] https://man7.org/linux/man-pages/man2/ioctl_getfsmap.2.html
    
    Reported-by: Ritesh Harjani (IBM) <[email protected]>
    Cc: [email protected]
    Signed-off-by: Ojaswin Mujoo <[email protected]>
    Message-ID: <023f37e35ee280cd9baac0296cbadcbe10995cab.1757058211.git.ojaswin@linux.ibm.com>
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

ext4: guard against EA inode refcount underflow in xattr update [+ + +]
Author: Ahmet Eray Karadag <[email protected]>
Date:   Sat Sep 20 05:13:43 2025 +0300

    ext4: guard against EA inode refcount underflow in xattr update
    
    commit 57295e835408d8d425bef58da5253465db3d6888 upstream.
    
    syzkaller found a path where ext4_xattr_inode_update_ref() reads an EA
    inode refcount that is already <= 0 and then applies ref_change (often
    -1). That lets the refcount underflow and we proceed with a bogus value,
    triggering errors like:
    
      EXT4-fs error: EA inode <n> ref underflow: ref_count=-1 ref_change=-1
      EXT4-fs warning: ea_inode dec ref err=-117
    
    Make the invariant explicit: if the current refcount is non-positive,
    treat this as on-disk corruption, emit ext4_error_inode(), and fail the
    operation with -EFSCORRUPTED instead of updating the refcount. Delete the
    WARN_ONCE() as negative refcounts are now impossible; keep error reporting
    in ext4_error_inode().
    
    This prevents the underflow and the follow-on orphan/cleanup churn.
    
    Reported-by: [email protected]
    Fixes: https://syzbot.org/bug?extid=0be4f339a8218d2a5bb1
    Cc: [email protected]
    Co-developed-by: Albin Babu Varghese <[email protected]>
    Signed-off-by: Albin Babu Varghese <[email protected]>
    Signed-off-by: Ahmet Eray Karadag <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ext4: increase i_disksize to offset + len in ext4_update_disksize_before_punch() [+ + +]
Author: Yongjian Sun <[email protected]>
Date:   Thu Sep 11 21:30:24 2025 +0800

    ext4: increase i_disksize to offset + len in ext4_update_disksize_before_punch()
    
    commit 9d80eaa1a1d37539224982b76c9ceeee736510b9 upstream.
    
    After running a stress test combined with fault injection,
    we performed fsck -a followed by fsck -fn on the filesystem
    image. During the second pass, fsck -fn reported:
    
    Inode 131512, end of extent exceeds allowed value
            (logical block 405, physical block 1180540, len 2)
    
    This inode was not in the orphan list. Analysis revealed the
    following call chain that leads to the inconsistency:
    
                                 ext4_da_write_end()
                                  //does not update i_disksize
                                 ext4_punch_hole()
                                  //truncate folio, keep size
    ext4_page_mkwrite()
     ext4_block_page_mkwrite()
      ext4_block_write_begin()
        ext4_get_block()
         //insert written extent without update i_disksize
    journal commit
    echo 1 > /sys/block/xxx/device/delete
    
    da-write path updates i_size but does not update i_disksize. Then
    ext4_punch_hole truncates the da-folio yet still leaves i_disksize
    unchanged(in the ext4_update_disksize_before_punch function, the
    condition offset + len < size is met). Then ext4_page_mkwrite sees
    ext4_nonda_switch return 1 and takes the nodioread_nolock path, the
    folio about to be written has just been punched out, and it’s offset
    sits beyond the current i_disksize. This may result in a written
    extent being inserted, but again does not update i_disksize. If the
    journal gets committed and then the block device is yanked, we might
    run into this. It should be noted that replacing ext4_punch_hole with
    ext4_zero_range in the call sequence may also trigger this issue, as
    neither will update i_disksize under these circumstances.
    
    To fix this, we can modify ext4_update_disksize_before_punch to
    increase i_disksize to min(i_size, offset + len) when both i_size and
    (offset + len) are greater than i_disksize.
    
    Cc: [email protected]
    Signed-off-by: Yongjian Sun <[email protected]>
    Reviewed-by: Zhang Yi <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Reviewed-by: Baokun Li <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Theodore Ts'o <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
filelock: add FL_RECLAIM to show_fl_flags() macro [+ + +]
Author: Jeff Layton <[email protected]>
Date:   Wed Sep 3 11:23:33 2025 -0400

    filelock: add FL_RECLAIM to show_fl_flags() macro
    
    [ Upstream commit c593b9d6c446510684da400833f9d632651942f0 ]
    
    Show the FL_RECLAIM flag symbolically in tracepoints.
    
    Fixes: bb0a55bb7148 ("nfs: don't allow reexport reclaims")
    Signed-off-by: Jeff Layton <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
firmware: meson_sm: fix device leak at probe [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Fri Jul 25 09:40:19 2025 +0200

    firmware: meson_sm: fix device leak at probe
    
    commit 8ece3173f87df03935906d0c612c2aeda9db92ca upstream.
    
    Make sure to drop the reference to the secure monitor device taken by
    of_find_device_by_node() when looking up its driver data on behalf of
    other drivers (e.g. during probe).
    
    Note that holding a reference to the platform device does not prevent
    its driver data from going away so there is no point in keeping the
    reference after the helper returns.
    
    Fixes: 8cde3c2153e8 ("firmware: meson_sm: Rework driver as a proper platform driver")
    Cc: [email protected]      # 5.5
    Cc: Carlo Caione <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Acked-by: Martin Blumenstingl <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Neil Armstrong <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fs: Add 'initramfs_options' to set initramfs mount options [+ + +]
Author: Lichen Liu <[email protected]>
Date:   Fri Aug 15 20:14:59 2025 +0800

    fs: Add 'initramfs_options' to set initramfs mount options
    
    [ Upstream commit 278033a225e13ec21900f0a92b8351658f5377f2 ]
    
    When CONFIG_TMPFS is enabled, the initial root filesystem is a tmpfs.
    By default, a tmpfs mount is limited to using 50% of the available RAM
    for its content. This can be problematic in memory-constrained
    environments, particularly during a kdump capture.
    
    In a kdump scenario, the capture kernel boots with a limited amount of
    memory specified by the 'crashkernel' parameter. If the initramfs is
    large, it may fail to unpack into the tmpfs rootfs due to insufficient
    space. This is because to get X MB of usable space in tmpfs, 2*X MB of
    memory must be available for the mount. This leads to an OOM failure
    during the early boot process, preventing a successful crash dump.
    
    This patch introduces a new kernel command-line parameter,
    initramfs_options, which allows passing specific mount options directly
    to the rootfs when it is first mounted. This gives users control over
    the rootfs behavior.
    
    For example, a user can now specify initramfs_options=size=75% to allow
    the tmpfs to use up to 75% of the available memory. This can
    significantly reduce the memory pressure for kdump.
    
    Consider a practical example:
    
    To unpack a 48MB initramfs, the tmpfs needs 48MB of usable space. With
    the default 50% limit, this requires a memory pool of 96MB to be
    available for the tmpfs mount. The total memory requirement is therefore
    approximately: 16MB (vmlinuz) + 48MB (loaded initramfs) + 48MB (unpacked
    kernel) + 96MB (for tmpfs) + 12MB (runtime overhead) ≈ 220MB.
    
    By using initramfs_options=size=75%, the memory pool required for the
    48MB tmpfs is reduced to 48MB / 0.75 = 64MB. This reduces the total
    memory requirement by 32MB (96MB - 64MB), allowing the kdump to succeed
    with a smaller crashkernel size, such as 192MB.
    
    An alternative approach of reusing the existing rootflags parameter was
    considered. However, a new, dedicated initramfs_options parameter was
    chosen to avoid altering the current behavior of rootflags (which
    applies to the final root filesystem) and to prevent any potential
    regressions.
    
    Also add documentation for the new kernel parameter "initramfs_options"
    
    This approach is inspired by prior discussions and patches on the topic.
    Ref: https://www.lightofdawn.org/blog/?viewDetailed=00128
    Ref: https://landley.net/notes-2015.html#01-01-2015
    Ref: https://lkml.org/lkml/2021/6/29/783
    Ref: https://www.kernel.org/doc/html/latest/filesystems/ramfs-rootfs-initramfs.html#what-is-rootfs
    
    Signed-off-by: Lichen Liu <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Tested-by: Rob Landley <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fs: always return zero on success from replace_fd() [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Tue Aug 5 14:38:08 2025 +0200

    fs: always return zero on success from replace_fd()
    
    commit 708c04a5c2b78e22f56e2350de41feba74dfccd9 upstream.
    
    replace_fd() returns the number of the new file descriptor through the
    return value of do_dup2(). However its callers never care about the
    specific returned number. In fact the caller in receive_fd_replace() treats
    any non-zero return value as an error and therefore never calls
    __receive_sock() for most file descriptors, which is a bug.
    
    To fix the bug in receive_fd_replace() and to avoid the same issue
    happening in future callers, signal success through a plain zero.
    
    Suggested-by: Al Viro <[email protected]>
    Link: https://lore.kernel.org/lkml/20250801220215.GS222315@ZenIV/
    Fixes: 173817151b15 ("fs: Expand __receive_fd() to accept existing fd")
    Fixes: 42eb0d54c08a ("fs: split receive_fd_replace from __receive_fd")
    Cc: [email protected]
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

fs: udf: fix OOB read in lengthAllocDescs handling [+ + +]
Author: Larshin Sergey <[email protected]>
Date:   Mon Oct 13 16:41:24 2025 -0400

    fs: udf: fix OOB read in lengthAllocDescs handling
    
    [ Upstream commit 3bd5e45c2ce30e239d596becd5db720f7eb83c99 ]
    
    When parsing Allocation Extent Descriptor, lengthAllocDescs comes from
    on-disk data and must be validated against the block size. Crafted or
    corrupted images may set lengthAllocDescs so that the total descriptor
    length (sizeof(allocExtDesc) + lengthAllocDescs) exceeds the buffer,
    leading udf_update_tag() to call crc_itu_t() on out-of-bounds memory and
    trigger a KASAN use-after-free read.
    
    BUG: KASAN: use-after-free in crc_itu_t+0x1d5/0x2b0 lib/crc-itu-t.c:60
    Read of size 1 at addr ffff888041e7d000 by task syz-executor317/5309
    
    CPU: 0 UID: 0 PID: 5309 Comm: syz-executor317 Not tainted 6.12.0-rc4-syzkaller-00261-g850925a8133c #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:377 [inline]
     print_report+0x169/0x550 mm/kasan/report.c:488
     kasan_report+0x143/0x180 mm/kasan/report.c:601
     crc_itu_t+0x1d5/0x2b0 lib/crc-itu-t.c:60
     udf_update_tag+0x70/0x6a0 fs/udf/misc.c:261
     udf_write_aext+0x4d8/0x7b0 fs/udf/inode.c:2179
     extent_trunc+0x2f7/0x4a0 fs/udf/truncate.c:46
     udf_truncate_tail_extent+0x527/0x7e0 fs/udf/truncate.c:106
     udf_release_file+0xc1/0x120 fs/udf/file.c:185
     __fput+0x23f/0x880 fs/file_table.c:431
     task_work_run+0x24f/0x310 kernel/task_work.c:239
     exit_task_work include/linux/task_work.h:43 [inline]
     do_exit+0xa2f/0x28e0 kernel/exit.c:939
     do_group_exit+0x207/0x2c0 kernel/exit.c:1088
     __do_sys_exit_group kernel/exit.c:1099 [inline]
     __se_sys_exit_group kernel/exit.c:1097 [inline]
     __x64_sys_exit_group+0x3f/0x40 kernel/exit.c:1097
     x64_sys_call+0x2634/0x2640 arch/x86/include/generated/asm/syscalls_64.h:232
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
     </TASK>
    
    Validate the computed total length against epos->bh->b_size.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=8743fca924afed42f93e
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: [email protected]
    
    Signed-off-by: Larshin Sergey <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jan Kara <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fscontext: do not consume log entries when returning -EMSGSIZE [+ + +]
Author: Aleksa Sarai <[email protected]>
Date:   Wed Oct 15 14:44:27 2025 -0400

    fscontext: do not consume log entries when returning -EMSGSIZE
    
    [ Upstream commit 72d271a7baa7062cb27e774ac37c5459c6d20e22 ]
    
    Userspace generally expects APIs that return -EMSGSIZE to allow for them
    to adjust their buffer size and retry the operation. However, the
    fscontext log would previously clear the message even in the -EMSGSIZE
    case.
    
    Given that it is very cheap for us to check whether the buffer is too
    small before we remove the message from the ring buffer, let's just do
    that instead. While we're at it, refactor some fscontext_read() into a
    separate helper to make the ring buffer logic a bit easier to read.
    
    Fixes: 007ec26cdc9f ("vfs: Implement logging through fs_context")
    Cc: David Howells <[email protected]>
    Cc: [email protected] # v5.2+
    Signed-off-by: Aleksa Sarai <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
fsdax: Fix infinite loop in dax_iomap_rw() [+ + +]
Author: Li Jinlin <[email protected]>
Date:   Mon Jul 25 11:20:50 2022 +0800

    fsdax: Fix infinite loop in dax_iomap_rw()
    
    commit 17d9c15c9b9e7fb285f7ac5367dfb5f00ff575e3 upstream.
    
    I got an infinite loop and a WARNING report when executing a tail command
    in virtiofs.
    
      WARNING: CPU: 10 PID: 964 at fs/iomap/iter.c:34 iomap_iter+0x3a2/0x3d0
      Modules linked in:
      CPU: 10 PID: 964 Comm: tail Not tainted 5.19.0-rc7
      Call Trace:
      <TASK>
      dax_iomap_rw+0xea/0x620
      ? __this_cpu_preempt_check+0x13/0x20
      fuse_dax_read_iter+0x47/0x80
      fuse_file_read_iter+0xae/0xd0
      new_sync_read+0xfe/0x180
      ? 0xffffffff81000000
      vfs_read+0x14d/0x1a0
      ksys_read+0x6d/0xf0
      __x64_sys_read+0x1a/0x20
      do_syscall_64+0x3b/0x90
      entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    The tail command will call read() with a count of 0. In this case,
    iomap_iter() will report this WARNING, and always return 1 which casuing
    the infinite loop in dax_iomap_rw().
    
    Fixing by checking count whether is 0 in dax_iomap_rw().
    
    Fixes: ca289e0b95af ("fsdax: switch dax_iomap_rw to use iomap_iter")
    Signed-off-by: Li Jinlin <[email protected]>
    Reviewed-by: Darrick J. Wong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dan Williams <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

fsdax: switch dax_iomap_rw to use iomap_iter [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Tue Aug 10 18:33:13 2021 -0700

    fsdax: switch dax_iomap_rw to use iomap_iter
    
    [ Upstream commit ca289e0b95afa973d204c77a4ad5c37e06145fbf ]
    
    Switch the dax_iomap_rw implementation to use iomap_iter.
    
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Darrick J. Wong <[email protected]>
    Stable-dep-of: 154d1e7ad9e5 ("dax: skip read lock assertion for read-only filesystems")
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
gpio: wcd934x: mark the GPIO controller as sleeping [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Wed Sep 24 16:51:29 2025 +0200

    gpio: wcd934x: mark the GPIO controller as sleeping
    
    [ Upstream commit b5f8aa8d4bde0cf3e4595af5a536da337e5f1c78 ]
    
    The slimbus regmap passed to the GPIO driver down from MFD does not use
    fast_io. This means a mutex is used for locking and thus this GPIO chip
    must not be used in atomic context. Change the can_sleep switch in
    struct gpio_chip to true.
    
    Fixes: 59c324683400 ("gpio: wcd934x: Add support to wcd934x gpio controller")
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gpio: wcd934x: Remove duplicate assignment of of_gpio_n_cells [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Fri Jan 13 20:26:18 2023 +0200

    gpio: wcd934x: Remove duplicate assignment of of_gpio_n_cells
    
    [ Upstream commit a060dc6620c13435b78e92cd2ebdbb6d11af237a ]
    
    The of_gpio_n_cells default is 2 when ->of_xlate() callback is
    not defined. No need to assign it explicitly in the driver.
    
    Signed-off-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Stable-dep-of: b5f8aa8d4bde ("gpio: wcd934x: mark the GPIO controller as sleeping")
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 
hid: fix I2C read buffer overflow in raw_event() for mcp2221 [+ + +]
Author: Arnaud Lecomte <[email protected]>
Date:   Sat Jul 26 23:09:31 2025 +0100

    hid: fix I2C read buffer overflow in raw_event() for mcp2221
    
    commit b56cc41a3ae7323aa3c6165f93c32e020538b6d2 upstream.
    
    As reported by syzbot, mcp2221_raw_event lacked
    validation of incoming I2C read data sizes, risking buffer
    overflows in mcp->rxbuf during multi-part transfers.
    As highlighted in the DS20005565B spec, p44, we have:
    "The number of read-back data bytes to follow in this packet:
    from 0 to a maximum of 60 bytes of read-back bytes."
    This patch enforces we don't exceed this limit.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=52c1a7d3e5b361ccd346
    Tested-by: [email protected]
    Signed-off-by: Arnaud Lecomte <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Romain Sioen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
hwrng: ks-sa - fix division by zero in ks_sa_rng_init [+ + +]
Author: Nishanth Menon <[email protected]>
Date:   Fri Sep 19 08:20:02 2025 -0500

    hwrng: ks-sa - fix division by zero in ks_sa_rng_init
    
    [ Upstream commit 612b1dfeb414dfa780a6316014ceddf9a74ff5c0 ]
    
    Fix division by zero in ks_sa_rng_init caused by missing clock
    pointer initialization. The clk_get_rate() call is performed on
    an uninitialized clk pointer, resulting in division by zero when
    calculating delay values.
    
    Add clock initialization code before using the clock.
    
    Fixes: 6d01d8511dce ("hwrng: ks-sa - Add minimum sleep time before ready-polling")
    Signed-off-by: Nishanth Menon <[email protected]>
    
     drivers/char/hw_random/ks-sa-rng.c | 7 +++++++
     1 file changed, 7 insertions(+)
    Reviewed-by: Alexander Sverdlin <[email protected]>
    
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i2c: designware: Add disabling clocks when probe fails [+ + +]
Author: Kunihiko Hayashi <[email protected]>
Date:   Thu Jul 24 13:22:11 2025 +0900

    i2c: designware: Add disabling clocks when probe fails
    
    [ Upstream commit c149841b069ccc6e480b00e11f35a57b5d88c7bb ]
    
    After an error occurs during probing state, dw_i2c_plat_pm_cleanup() is
    called. However, this function doesn't disable clocks and the clock-enable
    count keeps increasing. Should disable these clocks explicitly.
    
    Fixes: 7272194ed391f ("i2c-designware: add minimal support for runtime PM")
    Co-developed-by: Kohei Ito <[email protected]>
    Signed-off-by: Kohei Ito <[email protected]>
    Signed-off-by: Kunihiko Hayashi <[email protected]>
    Acked-by: Jarkko Nikula <[email protected]>
    Signed-off-by: Wolfram Sang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i2c: mediatek: fix potential incorrect use of I2C_MASTER_WRRD [+ + +]
Author: Leilk.Liu <[email protected]>
Date:   Sat Sep 6 16:24:06 2025 +0800

    i2c: mediatek: fix potential incorrect use of I2C_MASTER_WRRD
    
    [ Upstream commit b492183652808e0f389272bf63dc836241b287ff ]
    
    The old IC does not support the I2C_MASTER_WRRD (write-then-read)
    function, but the current code’s handling of i2c->auto_restart may
    potentially lead to entering the I2C_MASTER_WRRD software flow,
    resulting in unexpected bugs.
    
    Instead of repurposing the auto_restart flag, add a separate flag
    to signal I2C_MASTER_WRRD operations.
    
    Also fix handling of msgs. If the operation (i2c->op) is
    I2C_MASTER_WRRD, then the msgs pointer is incremented by 2.
    For all other operations, msgs is simply incremented by 1.
    
    Fixes: b2ed11e224a2 ("I2C: mediatek: Add driver for MediaTek MT8173 I2C controller")
    Signed-off-by: Leilk.Liu <[email protected]>
    Suggested-by: Chen-Yu Tsai <[email protected]>
    Reviewed-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: Wolfram Sang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
IB/sa: Fix sa_local_svc_timeout_ms read race [+ + +]
Author: Vlad Dumitrescu <[email protected]>
Date:   Tue Sep 16 19:31:12 2025 +0300

    IB/sa: Fix sa_local_svc_timeout_ms read race
    
    [ Upstream commit 1428cd764cd708d53a072a2f208d87014bfe05bc ]
    
    When computing the delta, the sa_local_svc_timeout_ms is read without
    ib_nl_request_lock held. Though unlikely in practice, this can cause
    a race condition if multiple local service threads are managing the
    timeout.
    
    Fixes: 2ca546b92a02 ("IB/sa: Route SA pathrecord query through netlink")
    Signed-off-by: Vlad Dumitrescu <[email protected]>
    Reviewed-by: Mark Zhang <[email protected]>
    Signed-off-by: Edward Srouji <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iio: consumers: Fix offset handling in iio_convert_raw_to_processed() [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Sun Aug 31 12:48:21 2025 +0200

    iio: consumers: Fix offset handling in iio_convert_raw_to_processed()
    
    [ Upstream commit 33f5c69c4daff39c010b3ea6da8ebab285f4277b ]
    
    Fix iio_convert_raw_to_processed() offset handling for channels without
    a scale attribute.
    
    The offset has been applied to the raw64 value not to the original raw
    value. Use the raw64 value so that the offset is taken into account.
    
    Fixes: 14b457fdde38 ("iio: inkern: apply consumer scale when no channel scale is available")
    Cc: Liam Beguin <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: dac: ad5360: use int type to store negative error codes [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Mon Sep 1 21:57:25 2025 +0800

    iio: dac: ad5360: use int type to store negative error codes
    
    commit f9381ece76de999a2065d5b4fdd87fa17883978c upstream.
    
    Change the 'ret' variable in ad5360_update_ctrl() from unsigned int to
    int, as it needs to store either negative error codes or zero returned
    by ad5360_write_unlocked().
    
    Fixes: a3e2940c24d3 ("staging:iio:dac: Add AD5360 driver")
    Signed-off-by: Qianfeng Rong <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: dac: ad5421: use int type to store negative error codes [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Mon Sep 1 21:57:26 2025 +0800

    iio: dac: ad5421: use int type to store negative error codes
    
    commit 3379c900320954d768ed9903691fb2520926bbe3 upstream.
    
    Change the 'ret' variable in ad5421_update_ctrl() from unsigned int to
    int, as it needs to store either negative error codes or zero returned
    by ad5421_write_unlocked().
    
    Fixes: 5691b23489db ("staging:iio:dac: Add AD5421 driver")
    Signed-off-by: Qianfeng Rong <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: frequency: adf4350: Fix ADF4350_REG3_12BIT_CLKDIV_MODE [+ + +]
Author: Michael Hennerich <[email protected]>
Date:   Fri Aug 29 12:25:43 2025 +0100

    iio: frequency: adf4350: Fix ADF4350_REG3_12BIT_CLKDIV_MODE
    
    commit 1d8fdabe19267338f29b58f968499e5b55e6a3b6 upstream.
    
    The clk div bits (2 bits wide) do not start in bit 16 but in bit 15. Fix it
    accordingly.
    
    Fixes: e31166f0fd48 ("iio: frequency: New driver for Analog Devices ADF4350/ADF4351 Wideband Synthesizers")
    Signed-off-by: Michael Hennerich <[email protected]>
    Signed-off-by: Nuno SĂĄ <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: frequency: adf4350: Fix prescaler usage. [+ + +]
Author: Michael Hennerich <[email protected]>
Date:   Fri Aug 29 12:25:42 2025 +0100

    iio: frequency: adf4350: Fix prescaler usage.
    
    commit 33d7ecbf69aa7dd4145e3b77962bcb8759eede3d upstream.
    
    The ADF4350/1 features a programmable dual-modulus prescaler of 4/5 or 8/9.
    When set to 4/5, the maximum RF frequency allowed is 3 GHz.
    Therefore, when operating the ADF4351 above 3 GHz, this must be set to 8/9.
    In this context not the RF output frequency is meant
    - it's the VCO frequency.
    
    Therefore move the prescaler selection after we derived the VCO frequency
    from the desired RF output frequency.
    
    This BUG may have caused PLL lock instabilities when operating the VCO at
    the very high range close to 4.4 GHz.
    
    Fixes: e31166f0fd48 ("iio: frequency: New driver for Analog Devices ADF4350/ADF4351 Wideband Synthesizers")
    Signed-off-by: Michael Hennerich <[email protected]>
    Signed-off-by: Nuno SĂĄ <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

iio: imu: inv_icm42600: Drop redundant pm_runtime reinitialization in resume [+ + +]
Author: Sean Nyekjaer <[email protected]>
Date:   Mon Sep 1 09:49:14 2025 +0200

    iio: imu: inv_icm42600: Drop redundant pm_runtime reinitialization in resume
    
    commit a95a0b4e471a6d8860f40c6ac8f1cad9dde3189a upstream.
    
    Remove unnecessary calls to pm_runtime_disable(), pm_runtime_set_active(),
    and pm_runtime_enable() from the resume path. These operations are not
    required here and can interfere with proper pm_runtime state handling,
    especially when resuming from a pm_runtime suspended state.
    
    Fixes: 31c24c1e93c3 ("iio: imu: inv_icm42600: add core of new inv_icm42600 driver")
    Signed-off-by: Sean Nyekjaer <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

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

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

 
init: handle bootloader identifier in kernel parameters [+ + +]
Author: Huacai Chen <[email protected]>
Date:   Mon Jul 21 18:13:43 2025 +0800

    init: handle bootloader identifier in kernel parameters
    
    commit e416f0ed3c500c05c55fb62ee62662717b1c7f71 upstream.
    
    BootLoaders (Grub, LILO, etc) may pass an identifier such as "BOOT_IMAGE=
    /boot/vmlinuz-x.y.z" to kernel parameters.  But these identifiers are not
    recognized by the kernel itself so will be passed to userspace.  However
    user space init program also don't recognize it.
    
    KEXEC/KDUMP (kexec-tools) may also pass an identifier such as "kexec" on
    some architectures.
    
    We cannot change BootLoader's behavior, because this behavior exists for
    many years, and there are already user space programs search BOOT_IMAGE=
    in /proc/cmdline to obtain the kernel image locations:
    
    https://github.com/linuxdeepin/deepin-ab-recovery/blob/master/util.go
    (search getBootOptions)
    https://github.com/linuxdeepin/deepin-ab-recovery/blob/master/main.go
    (search getKernelReleaseWithBootOption) So the the best way is handle
    (ignore) it by the kernel itself, which can avoid such boot warnings (if
    we use something like init=/bin/bash, bootloader identifier can even cause
    a crash):
    
    Kernel command line: BOOT_IMAGE=(hd0,1)/vmlinuz-6.x root=/dev/sda3 ro console=tty
    Unknown kernel command line parameters "BOOT_IMAGE=(hd0,1)/vmlinuz-6.x", will be passed to user space.
    
    [[email protected]: use strstarts()]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Huacai Chen <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Jan Kara <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Input: atmel_mxt_ts - allow reset GPIO to sleep [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Sun Oct 5 04:33:10 2025 +0200

    Input: atmel_mxt_ts - allow reset GPIO to sleep
    
    commit c7866ee0a9ddd9789faadf58cdac6abd7aabf045 upstream.
    
    The reset GPIO is not toggled in any critical section where it couldn't
    sleep, allow the reset GPIO to sleep. This allows the driver to operate
    reset GPIOs connected to I2C GPIO expanders.
    
    Signed-off-by: Marek Vasut <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: [email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Input: uinput - zero-initialize uinput_ff_upload_compat to avoid info leak [+ + +]
Author: Zhen Ni <[email protected]>
Date:   Sun Sep 28 14:37:37 2025 +0800

    Input: uinput - zero-initialize uinput_ff_upload_compat to avoid info leak
    
    commit d3366a04770eea807f2826cbdb96934dd8c9bf79 upstream.
    
    Struct ff_effect_compat is embedded twice inside
    uinput_ff_upload_compat, contains internal padding. In particular, there
    is a hole after struct ff_replay to satisfy alignment requirements for
    the following union member. Without clearing the structure,
    copy_to_user() may leak stack data to userspace.
    
    Initialize ff_up_compat to zero before filling valid fields.
    
    Fixes: 2d56f3a32c0e ("Input: refactor evdev 32bit compat to be shareable with uinput")
    Cc: [email protected]
    Signed-off-by: Zhen Ni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
iomap: add the new iomap_iter model [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Tue Aug 10 18:33:07 2021 -0700

    iomap: add the new iomap_iter model
    
    [ Upstream commit f4b896c213f0752adc828ddc11bd55419ffab248 ]
    
    The iomap_iter struct provides a convenient way to package up and
    maintain all the arguments to the various mapping and operation
    functions.  It is operated on using the iomap_iter() function that
    is called in loop until the whole range has been processed.  Compared
    to the existing iomap_apply() function this avoid an indirect call
    for each iteration.
    
    For now iomap_iter() calls back into the existing ->iomap_begin and
    ->iomap_end methods, but in the future this could be further optimized
    to avoid indirect calls entirely.
    
    Based on an earlier patch from Matthew Wilcox <[email protected]>.
    
    Signed-off-by: Christoph Hellwig <[email protected]>
    [djwong: add to apply.c to preserve git history of iomap loop control]
    Reviewed-by: Darrick J. Wong <[email protected]>
    Signed-off-by: Darrick J. Wong <[email protected]>
    Reviewed-by: Dave Chinner <[email protected]>
    Stable-dep-of: 154d1e7ad9e5 ("dax: skip read lock assertion for read-only filesystems")
    Signed-off-by: Sasha Levin <[email protected]>

 
ipvs: Defer ip_vs_ftp unregister during netns cleanup [+ + +]
Author: Slavin Liu <[email protected]>
Date:   Fri Sep 12 01:57:59 2025 +0800

    ipvs: Defer ip_vs_ftp unregister during netns cleanup
    
    [ Upstream commit 134121bfd99a06d44ef5ba15a9beb075297c0821 ]
    
    On the netns cleanup path, __ip_vs_ftp_exit() may unregister ip_vs_ftp
    before connections with valid cp->app pointers are flushed, leading to a
    use-after-free.
    
    Fix this by introducing a global `exiting_module` flag, set to true in
    ip_vs_ftp_exit() before unregistering the pernet subsystem. In
    __ip_vs_ftp_exit(), skip ip_vs_ftp unregister if called during netns
    cleanup (when exiting_module is false) and defer it to
    __ip_vs_cleanup_batch(), which unregisters all apps after all connections
    are flushed. If called during module exit, unregister ip_vs_ftp
    immediately.
    
    Fixes: 61b1ab4583e2 ("IPVS: netns, add basic init per netns.")
    Suggested-by: Julian Anastasov <[email protected]>
    Signed-off-by: Slavin Liu <[email protected]>
    Signed-off-by: Julian Anastasov <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
KEYS: trusted_tpm1: Compare HMAC values in constant time [+ + +]
Author: Eric Biggers <[email protected]>
Date:   Mon Oct 20 12:26:11 2025 -0400

    KEYS: trusted_tpm1: Compare HMAC values in constant time
    
    [ Upstream commit eed0e3d305530066b4fc5370107cff8ef1a0d229 ]
    
    To prevent timing attacks, HMAC value comparison needs to be constant
    time.  Replace the memcmp() with the correct function, crypto_memneq().
    
    [For the Fixes commit I used the commit that introduced the memcmp().
    It predates the introduction of crypto_memneq(), but it was still a bug
    at the time even though a helper function didn't exist yet.]
    
    Fixes: d00a1c72f7f4 ("keys: add new trusted key-type")
    Cc: [email protected]
    Signed-off-by: Eric Biggers <[email protected]>
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    [ replaced crypto/utils.h include with crypto/algapi.h ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
KVM: x86: Don't (re)check L1 intercepts when completing userspace I/O [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Mon Oct 13 13:51:46 2025 -0400

    KVM: x86: Don't (re)check L1 intercepts when completing userspace I/O
    
    [ Upstream commit e750f85391286a4c8100275516973324b621a269 ]
    
    When completing emulation of instruction that generated a userspace exit
    for I/O, don't recheck L1 intercepts as KVM has already finished that
    phase of instruction execution, i.e. has already committed to allowing L2
    to perform I/O.  If L1 (or host userspace) modifies the I/O permission
    bitmaps during the exit to userspace,  KVM will treat the access as being
    intercepted despite already having emulated the I/O access.
    
    Pivot on EMULTYPE_NO_DECODE to detect that KVM is completing emulation.
    Of the three users of EMULTYPE_NO_DECODE, only complete_emulated_io() (the
    intended "recipient") can reach the code in question.  gp_interception()'s
    use is mutually exclusive with is_guest_mode(), and
    complete_emulated_insn_gp() unconditionally pairs EMULTYPE_NO_DECODE with
    EMULTYPE_SKIP.
    
    The bad behavior was detected by a syzkaller program that toggles port I/O
    interception during the userspace I/O exit, ultimately resulting in a WARN
    on vcpu->arch.pio.count being non-zero due to KVM no completing emulation
    of the I/O instruction.
    
      WARNING: CPU: 23 PID: 1083 at arch/x86/kvm/x86.c:8039 emulator_pio_in_out+0x154/0x170 [kvm]
      Modules linked in: kvm_intel kvm irqbypass
      CPU: 23 UID: 1000 PID: 1083 Comm: repro Not tainted 6.16.0-rc5-c1610d2d66b1-next-vm #74 NONE
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
      RIP: 0010:emulator_pio_in_out+0x154/0x170 [kvm]
      PKRU: 55555554
      Call Trace:
       <TASK>
       kvm_fast_pio+0xd6/0x1d0 [kvm]
       vmx_handle_exit+0x149/0x610 [kvm_intel]
       kvm_arch_vcpu_ioctl_run+0xda8/0x1ac0 [kvm]
       kvm_vcpu_ioctl+0x244/0x8c0 [kvm]
       __x64_sys_ioctl+0x8a/0xd0
       do_syscall_64+0x5d/0xc60
       entry_SYSCALL_64_after_hwframe+0x4b/0x53
       </TASK>
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]
    Fixes: 8a76d7f25f8f ("KVM: x86: Add x86 callback for intercept check")
    Cc: [email protected]
    Cc: Jim Mattson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    [ is_guest_mode() was open coded ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
lib/crypto/curve25519-hacl64: Disable KASAN with clang-17 and older [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Mon Jun 9 15:45:20 2025 -0700

    lib/crypto/curve25519-hacl64: Disable KASAN with clang-17 and older
    
    commit 2f13daee2a72bb962f5fd356c3a263a6f16da965 upstream.
    
    After commit 6f110a5e4f99 ("Disable SLUB_TINY for build testing"), which
    causes CONFIG_KASAN to be enabled in allmodconfig again, arm64
    allmodconfig builds with clang-17 and older show an instance of
    -Wframe-larger-than (which breaks the build with CONFIG_WERROR=y):
    
      lib/crypto/curve25519-hacl64.c:757:6: error: stack frame size (2336) exceeds limit (2048) in 'curve25519_generic' [-Werror,-Wframe-larger-than]
        757 | void curve25519_generic(u8 mypublic[CURVE25519_KEY_SIZE],
            |      ^
    
    When KASAN is disabled, the stack usage is roughly quartered:
    
      lib/crypto/curve25519-hacl64.c:757:6: error: stack frame size (608) exceeds limit (128) in 'curve25519_generic' [-Werror,-Wframe-larger-than]
        757 | void curve25519_generic(u8 mypublic[CURVE25519_KEY_SIZE],
            |      ^
    
    Using '-Rpass-analysis=stack-frame-layout' shows the following variables
    and many, many 8-byte spills when KASAN is enabled:
    
      Offset: [SP-144], Type: Variable, Align: 8, Size: 40
      Offset: [SP-464], Type: Variable, Align: 8, Size: 320
      Offset: [SP-784], Type: Variable, Align: 8, Size: 320
      Offset: [SP-864], Type: Variable, Align: 32, Size: 80
      Offset: [SP-896], Type: Variable, Align: 32, Size: 32
      Offset: [SP-1016], Type: Variable, Align: 8, Size: 120
    
    When KASAN is disabled, there are still spills but not at many and the
    variables list is smaller:
    
      Offset: [SP-192], Type: Variable, Align: 32, Size: 80
      Offset: [SP-224], Type: Variable, Align: 32, Size: 32
      Offset: [SP-344], Type: Variable, Align: 8, Size: 120
    
    Disable KASAN for this file when using clang-17 or older to avoid
    blowing out the stack, clearing up the warning.
    
    Signed-off-by: Nathan Chancellor <[email protected]>
    Acked-by: "Jason A. Donenfeld" <[email protected]>
    Acked-by: Ard Biesheuvel <[email protected]>
    Link: https://lore.kernel.org/r/20250609-curve25519-hacl64-disable-kasan-clang-v1-1-08ea0ac5ccff@kernel.org
    Signed-off-by: Eric Biggers <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
lib/genalloc: fix device leak in of_gen_pool_get() [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Wed Sep 24 10:02:07 2025 +0200

    lib/genalloc: fix device leak in of_gen_pool_get()
    
    commit 1260cbcffa608219fc9188a6cbe9c45a300ef8b5 upstream.
    
    Make sure to drop the reference taken when looking up the genpool platform
    device in of_gen_pool_get() before returning the pool.
    
    Note that holding a reference to a device does typically not prevent its
    devres managed resources from being released so there is no point in
    keeping the reference.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 9375db07adea ("genalloc: add devres support, allow to find a managed pool by device")
    Signed-off-by: Johan Hovold <[email protected]>
    Cc: Philipp Zabel <[email protected]>
    Cc: Vladimir Zapolskiy <[email protected]>
    Cc: <[email protected]>    [3.10+]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
libbpf: Fix reuse of DEVMAP [+ + +]
Author: Yureka Lilian <[email protected]>
Date:   Thu Aug 14 20:01:12 2025 +0200

    libbpf: Fix reuse of DEVMAP
    
    [ Upstream commit 6c6b4146deb12d20f42490d5013f2043df942161 ]
    
    Previously, re-using pinned DEVMAP maps would always fail, because
    get_map_info on a DEVMAP always returns flags with BPF_F_RDONLY_PROG set,
    but BPF_F_RDONLY_PROG being set on a map during creation is invalid.
    
    Thus, ignore the BPF_F_RDONLY_PROG flag in the flags returned from
    get_map_info when checking for compatibility with an existing DEVMAP.
    
    The same problem is handled in a third-party ebpf library:
    - https://github.com/cilium/ebpf/issues/925
    - https://github.com/cilium/ebpf/pull/930
    
    Fixes: 0cdbb4b09a06 ("devmap: Allow map lookups from eBPF")
    Signed-off-by: Yureka Lilian <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
libperf event: Ensure tracing data is multiple of 8 sized [+ + +]
Author: Ian Rogers <[email protected]>
Date:   Thu Aug 21 09:38:19 2025 -0700

    libperf event: Ensure tracing data is multiple of 8 sized
    
    [ Upstream commit b39c915a4f365cce6bdc0e538ed95d31823aea8f ]
    
    Perf's synthetic-events.c will ensure 8-byte alignment of tracing
    data, writing it after a perf_record_header_tracing_data event.
    
    Add padding to struct perf_record_header_tracing_data to make it 16-byte
    rather than 12-byte sized.
    
    Fixes: 055c67ed39887c55 ("perf tools: Move event synthesizing routines to separate .c file")
    Reviewed-by: James Clark <[email protected]>
    Signed-off-by: Ian Rogers <[email protected]>
    Acked-by: Namhyung Kim <[email protected]>
    Tested-by: Arnaldo Carvalho de Melo <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Athira Rajeev <[email protected]>
    Cc: Blake Jones <[email protected]>
    Cc: Chun-Tse Shao <[email protected]>
    Cc: Collin Funk <[email protected]>
    Cc: Howard Chu <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Jan Polensky <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Li Huafei <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Nam Cao <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Steinar H. Gunderson <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 5.10.246 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed Oct 29 14:01:25 2025 +0100

    Linux 5.10.246
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Slade Watkins <[email protected]>
    Tested-by: Dominique Martinet <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Dominique Martinet <[email protected]>
    Tested-by: Brett A C Sheffield <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
locking: Introduce __cleanup() based infrastructure [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Wed Oct 15 14:44:26 2025 -0400

    locking: Introduce __cleanup() based infrastructure
    
    [ Upstream commit 54da6a0924311c7cf5015533991e44fb8eb12773 ]
    
    Use __attribute__((__cleanup__(func))) to build:
    
     - simple auto-release pointers using __free()
    
     - 'classes' with constructor and destructor semantics for
       scope-based resource management.
    
     - lock guards based on the above classes.
    
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lkml.kernel.org/r/20230612093537.614161713%40infradead.org
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
mailbox: zynqmp-ipi: Remove dev.parent check in zynqmp_ipi_free_mboxes [+ + +]
Author: Harini T <[email protected]>
Date:   Mon Sep 29 13:07:21 2025 +0530

    mailbox: zynqmp-ipi: Remove dev.parent check in zynqmp_ipi_free_mboxes
    
    [ Upstream commit 019e3f4550fc7d319a7fd03eff487255f8e8aecd ]
    
    The ipi_mbox->dev.parent check is unreliable proxy for registration
    status as it fails to protect against probe failures that occur after
    the parent is assigned but before device_register() completes.
    
    device_is_registered() is the canonical and robust method to verify the
    registration status.
    
    Remove ipi_mbox->dev.parent check in zynqmp_ipi_free_mboxes().
    
    Fixes: 4981b82ba2ff ("mailbox: ZynqMP IPI mailbox controller")
    Signed-off-by: Harini T <[email protected]>
    Reviewed-by: Peng Fan <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mailbox: zynqmp-ipi: Remove redundant mbox_controller_unregister() call [+ + +]
Author: Harini T <[email protected]>
Date:   Mon Sep 29 13:07:20 2025 +0530

    mailbox: zynqmp-ipi: Remove redundant mbox_controller_unregister() call
    
    [ Upstream commit 341867f730d3d3bb54491ee64e8b1a0c446656e7 ]
    
    The controller is registered using the device-managed function
    'devm_mbox_controller_register()'. As documented in mailbox.c, this
    ensures the devres framework automatically calls
    mbox_controller_unregister() when device_unregister() is invoked, making
    the explicit call unnecessary.
    
    Remove redundant mbox_controller_unregister() call as
    device_unregister() handles controller cleanup.
    
    Fixes: 4981b82ba2ff ("mailbox: ZynqMP IPI mailbox controller")
    Signed-off-by: Harini T <[email protected]>
    Reviewed-by: Peng Fan <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
media: b2c2: Fix use-after-free causing by irq_check_work in flexcop_pci_remove [+ + +]
Author: Duoming Zhou <[email protected]>
Date:   Wed Sep 17 17:59:26 2025 +0800

    media: b2c2: Fix use-after-free causing by irq_check_work in flexcop_pci_remove
    
    commit 01e03fb7db419d39e18d6090d4873c1bff103914 upstream.
    
    The original code uses cancel_delayed_work() in flexcop_pci_remove(), which
    does not guarantee that the delayed work item irq_check_work has fully
    completed if it was already running. This leads to use-after-free scenarios
    where flexcop_pci_remove() may free the flexcop_device while irq_check_work
    is still active and attempts to dereference the device.
    
    A typical race condition is illustrated below:
    
    CPU 0 (remove)                         | CPU 1 (delayed work callback)
    flexcop_pci_remove()                   | flexcop_pci_irq_check_work()
      cancel_delayed_work()                |
      flexcop_device_kfree(fc_pci->fc_dev) |
                                           |   fc = fc_pci->fc_dev; // UAF
    
    This is confirmed by a KASAN report:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in __run_timer_base.part.0+0x7d7/0x8c0
    Write of size 8 at addr ffff8880093aa8c8 by task bash/135
    ...
    Call Trace:
     <IRQ>
     dump_stack_lvl+0x55/0x70
     print_report+0xcf/0x610
     ? __run_timer_base.part.0+0x7d7/0x8c0
     kasan_report+0xb8/0xf0
     ? __run_timer_base.part.0+0x7d7/0x8c0
     __run_timer_base.part.0+0x7d7/0x8c0
     ? __pfx___run_timer_base.part.0+0x10/0x10
     ? __pfx_read_tsc+0x10/0x10
     ? ktime_get+0x60/0x140
     ? lapic_next_event+0x11/0x20
     ? clockevents_program_event+0x1d4/0x2a0
     run_timer_softirq+0xd1/0x190
     handle_softirqs+0x16a/0x550
     irq_exit_rcu+0xaf/0xe0
     sysvec_apic_timer_interrupt+0x70/0x80
     </IRQ>
    ...
    
    Allocated by task 1:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     __kasan_kmalloc+0x7f/0x90
     __kmalloc_noprof+0x1be/0x460
     flexcop_device_kmalloc+0x54/0xe0
     flexcop_pci_probe+0x1f/0x9d0
     local_pci_probe+0xdc/0x190
     pci_device_probe+0x2fe/0x470
     really_probe+0x1ca/0x5c0
     __driver_probe_device+0x248/0x310
     driver_probe_device+0x44/0x120
     __driver_attach+0xd2/0x310
     bus_for_each_dev+0xed/0x170
     bus_add_driver+0x208/0x500
     driver_register+0x132/0x460
     do_one_initcall+0x89/0x300
     kernel_init_freeable+0x40d/0x720
     kernel_init+0x1a/0x150
     ret_from_fork+0x10c/0x1a0
     ret_from_fork_asm+0x1a/0x30
    
    Freed by task 135:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     kasan_save_free_info+0x3a/0x60
     __kasan_slab_free+0x3f/0x50
     kfree+0x137/0x370
     flexcop_device_kfree+0x32/0x50
     pci_device_remove+0xa6/0x1d0
     device_release_driver_internal+0xf8/0x210
     pci_stop_bus_device+0x105/0x150
     pci_stop_and_remove_bus_device_locked+0x15/0x30
     remove_store+0xcc/0xe0
     kernfs_fop_write_iter+0x2c3/0x440
     vfs_write+0x871/0xd70
     ksys_write+0xee/0x1c0
     do_syscall_64+0xac/0x280
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    ...
    
    Replace cancel_delayed_work() with cancel_delayed_work_sync() to ensure
    that the delayed work item is properly canceled and any executing delayed
    work has finished before the device memory is deallocated.
    
    This bug was initially identified through static analysis. To reproduce
    and test it, I simulated the B2C2 FlexCop PCI device in QEMU and introduced
    artificial delays within the flexcop_pci_irq_check_work() function to
    increase the likelihood of triggering the bug.
    
    Fixes: 382c5546d618 ("V4L/DVB (10694): [PATCH] software IRQ watchdog for Flexcop B2C2 DVB PCI cards")
    Cc: [email protected]
    Signed-off-by: Duoming Zhou <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: cx18: Add missing check after DMA map [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Fri Oct 17 09:39:17 2025 -0400

    media: cx18: Add missing check after DMA map
    
    [ Upstream commit 23b53639a793477326fd57ed103823a8ab63084f ]
    
    The DMA map functions can fail and should be tested for errors.
    If the mapping fails, dealloc buffers, and return.
    
    Fixes: 1c1e45d17b66 ("V4L/DVB (7786): cx18: new driver for the Conexant CX23418 MPEG encoder chip")
    Cc: [email protected]
    Signed-off-by: Thomas Fourier <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [ removed pci_map_single() replaced by dma_map_single() ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: i2c: mt9v111: fix incorrect type for ret [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Wed Aug 27 20:39:10 2025 +0800

    media: i2c: mt9v111: fix incorrect type for ret
    
    commit bacd713145443dce7764bb2967d30832a95e5ec8 upstream.
    
    Change "ret" from unsigned int to int type in mt9v111_calc_frame_rate()
    to store negative error codes or zero returned by __mt9v111_hw_reset()
    and other functions.
    
    Storing the negative error codes in unsigned type, doesn't cause an issue
    at runtime but it's ugly as pants.
    
    No effect on runtime.
    
    Signed-off-by: Qianfeng Rong <[email protected]>
    Fixes: aab7ed1c3927 ("media: i2c: Add driver for Aptina MT9V111")
    Cc: [email protected]
    Reviewed-by: Jacopo Mondi <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: i2c: tc358743: Fix use-after-free bugs caused by orphan timer in probe [+ + +]
Author: Duoming Zhou <[email protected]>
Date:   Fri Oct 3 15:32:38 2025 -0400

    media: i2c: tc358743: Fix use-after-free bugs caused by orphan timer in probe
    
    [ Upstream commit 79d10f4f21a92e459b2276a77be62c59c1502c9d ]
    
    The state->timer is a cyclic timer that schedules work_i2c_poll and
    delayed_work_enable_hotplug, while rearming itself. Using timer_delete()
    fails to guarantee the timer isn't still running when destroyed, similarly
    cancel_delayed_work() cannot ensure delayed_work_enable_hotplug has
    terminated if already executing. During probe failure after timer
    initialization, these may continue running as orphans and reference the
    already-freed tc358743_state object through tc358743_irq_poll_timer.
    
    The following is the trace captured by KASAN.
    
    BUG: KASAN: slab-use-after-free in __run_timer_base.part.0+0x7d7/0x8c0
    Write of size 8 at addr ffff88800ded83c8 by task swapper/1/0
    ...
    Call Trace:
     <IRQ>
     dump_stack_lvl+0x55/0x70
     print_report+0xcf/0x610
     ? __pfx_sched_balance_find_src_group+0x10/0x10
     ? __run_timer_base.part.0+0x7d7/0x8c0
     kasan_report+0xb8/0xf0
     ? __run_timer_base.part.0+0x7d7/0x8c0
     __run_timer_base.part.0+0x7d7/0x8c0
     ? rcu_sched_clock_irq+0xb06/0x27d0
     ? __pfx___run_timer_base.part.0+0x10/0x10
     ? try_to_wake_up+0xb15/0x1960
     ? tmigr_update_events+0x280/0x740
     ? _raw_spin_lock_irq+0x80/0xe0
     ? __pfx__raw_spin_lock_irq+0x10/0x10
     tmigr_handle_remote_up+0x603/0x7e0
     ? __pfx_tmigr_handle_remote_up+0x10/0x10
     ? sched_balance_trigger+0x98/0x9f0
     ? sched_tick+0x221/0x5a0
     ? _raw_spin_lock_irq+0x80/0xe0
     ? __pfx__raw_spin_lock_irq+0x10/0x10
     ? tick_nohz_handler+0x339/0x440
     ? __pfx_tmigr_handle_remote_up+0x10/0x10
     __walk_groups.isra.0+0x42/0x150
     tmigr_handle_remote+0x1f4/0x2e0
     ? __pfx_tmigr_handle_remote+0x10/0x10
     ? ktime_get+0x60/0x140
     ? lapic_next_event+0x11/0x20
     ? clockevents_program_event+0x1d4/0x2a0
     ? hrtimer_interrupt+0x322/0x780
     handle_softirqs+0x16a/0x550
     irq_exit_rcu+0xaf/0xe0
     sysvec_apic_timer_interrupt+0x70/0x80
     </IRQ>
    ...
    
    Allocated by task 141:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     __kasan_kmalloc+0x7f/0x90
     __kmalloc_node_track_caller_noprof+0x198/0x430
     devm_kmalloc+0x7b/0x1e0
     tc358743_probe+0xb7/0x610  i2c_device_probe+0x51d/0x880
     really_probe+0x1ca/0x5c0
     __driver_probe_device+0x248/0x310
     driver_probe_device+0x44/0x120
     __device_attach_driver+0x174/0x220
     bus_for_each_drv+0x100/0x190
     __device_attach+0x206/0x370
     bus_probe_device+0x123/0x170
     device_add+0xd25/0x1470
     i2c_new_client_device+0x7a0/0xcd0
     do_one_initcall+0x89/0x300
     do_init_module+0x29d/0x7f0
     load_module+0x4f48/0x69e0
     init_module_from_file+0xe4/0x150
     idempotent_init_module+0x320/0x670
     __x64_sys_finit_module+0xbd/0x120
     do_syscall_64+0xac/0x280
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 141:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     kasan_save_free_info+0x3a/0x60
     __kasan_slab_free+0x3f/0x50
     kfree+0x137/0x370
     release_nodes+0xa4/0x100
     devres_release_group+0x1b2/0x380
     i2c_device_probe+0x694/0x880
     really_probe+0x1ca/0x5c0
     __driver_probe_device+0x248/0x310
     driver_probe_device+0x44/0x120
     __device_attach_driver+0x174/0x220
     bus_for_each_drv+0x100/0x190
     __device_attach+0x206/0x370
     bus_probe_device+0x123/0x170
     device_add+0xd25/0x1470
     i2c_new_client_device+0x7a0/0xcd0
     do_one_initcall+0x89/0x300
     do_init_module+0x29d/0x7f0
     load_module+0x4f48/0x69e0
     init_module_from_file+0xe4/0x150
     idempotent_init_module+0x320/0x670
     __x64_sys_finit_module+0xbd/0x120
     do_syscall_64+0xac/0x280
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    ...
    
    Replace timer_delete() with timer_delete_sync() and cancel_delayed_work()
    with cancel_delayed_work_sync() to ensure proper termination of timer and
    work items before resource cleanup.
    
    This bug was initially identified through static analysis. For reproduction
    and testing, I created a functional emulation of the tc358743 device via a
    kernel module and introduced faults through the debugfs interface.
    
    Fixes: 869f38ae07f7 ("media: i2c: tc358743: Fix crash in the probe error path when using polling")
    Fixes: d32d98642de6 ("[media] Driver for Toshiba TC358743 HDMI to CSI-2 bridge")
    Cc: [email protected]
    Signed-off-by: Duoming Zhou <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [ replaced del_timer() instead of timer_delete() ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: lirc: Fix error handling in lirc_register() [+ + +]
Author: Ma Ke <[email protected]>
Date:   Fri Oct 17 19:18:23 2025 -0400

    media: lirc: Fix error handling in lirc_register()
    
    [ Upstream commit 4f4098c57e139ad972154077fb45c3e3141555dd ]
    
    When cdev_device_add() failed, calling put_device() to explicitly
    release dev->lirc_dev. Otherwise, it could cause the fault of the
    reference count.
    
    Found by code review.
    
    Cc: [email protected]
    Fixes: a6ddd4fecbb0 ("media: lirc: remove last remnants of lirc kapi")
    Signed-off-by: Ma Ke <[email protected]>
    Signed-off-by: Sean Young <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: mc: Clear minor number before put device [+ + +]
Author: Edward Adam Davis <[email protected]>
Date:   Mon Oct 13 18:36:18 2025 -0400

    media: mc: Clear minor number before put device
    
    [ Upstream commit 8cfc8cec1b4da88a47c243a11f384baefd092a50 ]
    
    The device minor should not be cleared after the device is released.
    
    Fixes: 9e14868dc952 ("media: mc: Clear minor number reservation at unregistration time")
    Cc: [email protected]
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=031d0cfd7c362817963f
    Tested-by: [email protected]
    Signed-off-by: Edward Adam Davis <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [ moved clear_bit from media_devnode_release callback to media_devnode_unregister before put_device ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: pci/ivtv: switch from 'pci_' to 'dma_' API [+ + +]
Author: Christophe JAILLET <[email protected]>
Date:   Fri Oct 17 10:07:07 2025 -0400

    media: pci/ivtv: switch from 'pci_' to 'dma_' API
    
    [ Upstream commit 1932dc2f4cf6ac23e48e5fcc24d21adbe35691d1 ]
    
    The wrappers in include/linux/pci-dma-compat.h should go away.
    
    The patch has been generated with the coccinelle script below.
    It has been compile tested.
    
    No memory allocation in involved in this patch, so no GFP_ tweak is needed.
    
    @@ @@
    -    PCI_DMA_BIDIRECTIONAL
    +    DMA_BIDIRECTIONAL
    
    @@ @@
    -    PCI_DMA_TODEVICE
    +    DMA_TO_DEVICE
    
    @@ @@
    -    PCI_DMA_FROMDEVICE
    +    DMA_FROM_DEVICE
    
    @@ @@
    -    PCI_DMA_NONE
    +    DMA_NONE
    
    @@
    expression e1, e2, e3;
    @@
    -    pci_alloc_consistent(e1, e2, e3)
    +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
    
    @@
    expression e1, e2, e3;
    @@
    -    pci_zalloc_consistent(e1, e2, e3)
    +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
    
    @@
    expression e1, e2, e3, e4;
    @@
    -    pci_free_consistent(e1, e2, e3, e4)
    +    dma_free_coherent(&e1->dev, e2, e3, e4)
    
    @@
    expression e1, e2, e3, e4;
    @@
    -    pci_map_single(e1, e2, e3, e4)
    +    dma_map_single(&e1->dev, e2, e3, e4)
    
    @@
    expression e1, e2, e3, e4;
    @@
    -    pci_unmap_single(e1, e2, e3, e4)
    +    dma_unmap_single(&e1->dev, e2, e3, e4)
    
    @@
    expression e1, e2, e3, e4, e5;
    @@
    -    pci_map_page(e1, e2, e3, e4, e5)
    +    dma_map_page(&e1->dev, e2, e3, e4, e5)
    
    @@
    expression e1, e2, e3, e4;
    @@
    -    pci_unmap_page(e1, e2, e3, e4)
    +    dma_unmap_page(&e1->dev, e2, e3, e4)
    
    @@
    expression e1, e2, e3, e4;
    @@
    -    pci_map_sg(e1, e2, e3, e4)
    +    dma_map_sg(&e1->dev, e2, e3, e4)
    
    @@
    expression e1, e2, e3, e4;
    @@
    -    pci_unmap_sg(e1, e2, e3, e4)
    +    dma_unmap_sg(&e1->dev, e2, e3, e4)
    
    @@
    expression e1, e2, e3, e4;
    @@
    -    pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
    +    dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)
    
    @@
    expression e1, e2, e3, e4;
    @@
    -    pci_dma_sync_single_for_device(e1, e2, e3, e4)
    +    dma_sync_single_for_device(&e1->dev, e2, e3, e4)
    
    @@
    expression e1, e2, e3, e4;
    @@
    -    pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
    +    dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)
    
    @@
    expression e1, e2, e3, e4;
    @@
    -    pci_dma_sync_sg_for_device(e1, e2, e3, e4)
    +    dma_sync_sg_for_device(&e1->dev, e2, e3, e4)
    
    @@
    expression e1, e2;
    @@
    -    pci_dma_mapping_error(e1, e2)
    +    dma_mapping_error(&e1->dev, e2)
    
    @@
    expression e1, e2;
    @@
    -    pci_set_dma_mask(e1, e2)
    +    dma_set_mask(&e1->dev, e2)
    
    @@
    expression e1, e2;
    @@
    -    pci_set_consistent_dma_mask(e1, e2)
    +    dma_set_coherent_mask(&e1->dev, e2)
    
    Signed-off-by: Christophe JAILLET <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Stable-dep-of: 1069a4fe637d ("media: pci: ivtv: Add missing check after DMA map")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: pci: ivtv: Add check for DMA map result [+ + +]
Author: Mikhail Kobuk <[email protected]>
Date:   Thu Mar 28 02:32:23 2024 +0300

    media: pci: ivtv: Add check for DMA map result
    
    commit 629913d6d79508b166c66e07e4857e20233d85a9 upstream.
    
    In case DMA fails, 'dma->SG_length' is 0. This value is later used to
    access 'dma->SGarray[dma->SG_length - 1]', which will cause out of
    bounds access.
    
    Add check to return early on invalid value. Adjust warnings accordingly.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 1932dc2f4cf6 ("media: pci/ivtv: switch from 'pci_' to 'dma_' API")
    Signed-off-by: Mikhail Kobuk <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: pci: ivtv: Add missing check after DMA map [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Fri Oct 17 10:07:08 2025 -0400

    media: pci: ivtv: Add missing check after DMA map
    
    [ Upstream commit 1069a4fe637d0e3e4c163e3f8df9be306cc299b4 ]
    
    The DMA map functions can fail and should be tested for errors.
    If the mapping fails, free blanking_ptr and set it to 0.  As 0 is a
    valid DMA address, use blanking_ptr to test if the DMA address
    is set.
    
    Fixes: 1a0adaf37c30 ("V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder")
    Cc: [email protected]
    Signed-off-by: Thomas Fourier <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: rc: Directly use ida_free() [+ + +]
Author: keliu <[email protected]>
Date:   Fri Oct 17 19:18:22 2025 -0400

    media: rc: Directly use ida_free()
    
    [ Upstream commit cd54ff938091d890edf78e6555ec30c63dcd2eb5 ]
    
    Use ida_alloc() and ida_free() instead of the deprecated
    ida_simple_get() and ida_simple_remove().
    
    Signed-off-by: keliu <[email protected]>
    Signed-off-by: Sean Young <[email protected]>
    Signed-off-by: Mauro Carvalho Chehab <[email protected]>
    Stable-dep-of: 4f4098c57e13 ("media: lirc: Fix error handling in lirc_register()")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: rc: fix races with imon_disconnect() [+ + +]
Author: Larshin Sergey <[email protected]>
Date:   Tue Jul 29 13:13:32 2025 +0300

    media: rc: fix races with imon_disconnect()
    
    commit fa0f61cc1d828178aa921475a9b786e7fbb65ccb upstream.
    
    Syzbot reports a KASAN issue as below:
    BUG: KASAN: use-after-free in __create_pipe include/linux/usb.h:1945 [inline]
    BUG: KASAN: use-after-free in send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627
    Read of size 4 at addr ffff8880256fb000 by task syz-executor314/4465
    
    CPU: 2 PID: 4465 Comm: syz-executor314 Not tainted 6.0.0-rc1-syzkaller #0
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
    Call Trace:
     <TASK>
    __dump_stack lib/dump_stack.c:88 [inline]
    dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
    print_address_description mm/kasan/report.c:317 [inline]
    print_report.cold+0x2ba/0x6e9 mm/kasan/report.c:433
    kasan_report+0xb1/0x1e0 mm/kasan/report.c:495
    __create_pipe include/linux/usb.h:1945 [inline]
    send_packet+0xa2d/0xbc0 drivers/media/rc/imon.c:627
    vfd_write+0x2d9/0x550 drivers/media/rc/imon.c:991
    vfs_write+0x2d7/0xdd0 fs/read_write.c:576
    ksys_write+0x127/0x250 fs/read_write.c:631
    do_syscall_x64 arch/x86/entry/common.c:50 [inline]
    do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
    entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    The iMON driver improperly releases the usb_device reference in
    imon_disconnect without coordinating with active users of the
    device.
    
    Specifically, the fields usbdev_intf0 and usbdev_intf1 are not
    protected by the users counter (ictx->users). During probe,
    imon_init_intf0 or imon_init_intf1 increments the usb_device
    reference count depending on the interface. However, during
    disconnect, usb_put_dev is called unconditionally, regardless of
    actual usage.
    
    As a result, if vfd_write or other operations are still in
    progress after disconnect, this can lead to a use-after-free of
    the usb_device pointer.
    
    Thread 1 vfd_write                      Thread 2 imon_disconnect
                                            ...
                                            if
                                              usb_put_dev(ictx->usbdev_intf0)
                                            else
                                              usb_put_dev(ictx->usbdev_intf1)
    ...
    while
      send_packet
        if
          pipe = usb_sndintpipe(
            ictx->usbdev_intf0) UAF
        else
          pipe = usb_sndctrlpipe(
            ictx->usbdev_intf0, 0) UAF
    
    Guard access to usbdev_intf0 and usbdev_intf1 after disconnect by
    checking ictx->disconnected in all writer paths. Add early return
    with -ENODEV in send_packet(), vfd_write(), lcd_write() and
    display_open() if the device is no longer present.
    
    Set and read ictx->disconnected under ictx->lock to ensure memory
    synchronization. Acquire the lock in imon_disconnect() before setting
    the flag to synchronize with any ongoing operations.
    
    Ensure writers exit early and safely after disconnect before the USB
    core proceeds with cleanup.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=f1a69784f6efe748c3bf
    Fixes: 21677cfc562a ("V4L/DVB: ir-core: add imon driver")
    Cc: [email protected]
    
    Signed-off-by: Larshin Sergey <[email protected]>
    Signed-off-by: Sean Young <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: rj54n1cb0c: Fix memleak in rj54n1_probe() [+ + +]
Author: Zhang Shurong <[email protected]>
Date:   Tue Jun 24 16:27:24 2025 +0800

    media: rj54n1cb0c: Fix memleak in rj54n1_probe()
    
    [ Upstream commit fda55673ecdabf25f5ecc61b5ab17239257ac252 ]
    
    rj54n1_probe() won't clean all the allocated resources in fail
    path, which may causes the memleaks. Add v4l2_ctrl_handler_free() to
    prevent memleak.
    
    Fixes: f187352dcd45 ("media: i2c: Copy rj54n1cb0c soc_camera sensor driver")
    Signed-off-by: Zhang Shurong <[email protected]>
    Reviewed-by: Jacopo Mondi <[email protected]>
    Signed-off-by: Sakari Ailus <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: s5p-mfc: remove an unused/uninitialized variable [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Fri Oct 17 19:18:09 2025 -0400

    media: s5p-mfc: remove an unused/uninitialized variable
    
    [ Upstream commit 7fa37ba25a1dfc084e24ea9acc14bf1fad8af14c ]
    
    The s5p_mfc_cmd_args structure in the v6 driver is never used, not
    initialized to anything other than zero, but as of clang-21 this
    causes a warning:
    
    drivers/media/platform/samsung/s5p-mfc/s5p_mfc_cmd_v6.c:45:7: error: variable 'h2r_args' is uninitialized when passed as a const pointer argument here [-Werror,-Wuninitialized-const-pointer]
       45 |                                         &h2r_args);
          |                                          ^~~~~~~~
    
    Just remove this for simplicity. Since the function is also called
    through a callback, this does require adding a trivial wrapper with
    the correct prototype.
    
    Fixes: f96f3cfa0bb8 ("[media] s5p-mfc: Update MFC v4l2 driver to support MFC6.x")
    Cc: [email protected]
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: tuner: xc5000: Fix use-after-free in xc5000_release [+ + +]
Author: Duoming Zhou <[email protected]>
Date:   Fri Oct 3 20:21:57 2025 -0400

    media: tuner: xc5000: Fix use-after-free in xc5000_release
    
    [ Upstream commit 40b7a19f321e65789612ebaca966472055dab48c ]
    
    The original code uses cancel_delayed_work() in xc5000_release(), which
    does not guarantee that the delayed work item timer_sleep has fully
    completed if it was already running. This leads to use-after-free scenarios
    where xc5000_release() may free the xc5000_priv while timer_sleep is still
    active and attempts to dereference the xc5000_priv.
    
    A typical race condition is illustrated below:
    
    CPU 0 (release thread)                 | CPU 1 (delayed work callback)
    xc5000_release()                       | xc5000_do_timer_sleep()
      cancel_delayed_work()                |
      hybrid_tuner_release_state(priv)     |
        kfree(priv)                        |
                                           |   priv = container_of() // UAF
    
    Replace cancel_delayed_work() with cancel_delayed_work_sync() to ensure
    that the timer_sleep is properly canceled before the xc5000_priv memory
    is deallocated.
    
    A deadlock concern was considered: xc5000_release() is called in a process
    context and is not holding any locks that the timer_sleep work item might
    also need. Therefore, the use of the _sync() variant is safe here.
    
    This bug was initially identified through static analysis.
    
    Fixes: f7a27ff1fb77 ("[media] xc5000: delay tuner sleep to 5 seconds")
    Cc: [email protected]
    Signed-off-by: Duoming Zhou <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    [hverkuil: fix typo in Subject: tunner -> tuner]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

media: tunner: xc5000: Refactor firmware load [+ + +]
Author: Ricardo Ribalda <[email protected]>
Date:   Fri Oct 3 20:21:56 2025 -0400

    media: tunner: xc5000: Refactor firmware load
    
    [ Upstream commit 8e1f5da59dd4a1966f859639860b803a7e8b8bfb ]
    
    Make sure the firmware is released when we leave
    xc_load_fw_and_init_tuner()
    
    This change makes smatch happy:
    drivers/media/tuners/xc5000.c:1213 xc_load_fw_and_init_tuner() warn: 'fw' from request_firmware() not released on lines: 1213.
    
    Cc: Shuah Khan <[email protected]>
    Signed-off-by: Ricardo Ribalda <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Stable-dep-of: 40b7a19f321e ("media: tuner: xc5000: Fix use-after-free in xc5000_release")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
memory: samsung: exynos-srom: Fix of_iomap leak in exynos_srom_probe [+ + +]
Author: Zhen Ni <[email protected]>
Date:   Wed Aug 6 10:55:38 2025 +0800

    memory: samsung: exynos-srom: Fix of_iomap leak in exynos_srom_probe
    
    commit 6744085079e785dae5f7a2239456135407c58b25 upstream.
    
    The of_platform_populate() call at the end of the function has a
    possible failure path, causing a resource leak.
    
    Replace of_iomap() with devm_platform_ioremap_resource() to ensure
    automatic cleanup of srom->reg_base.
    
    This issue was detected by smatch static analysis:
    drivers/memory/samsung/exynos-srom.c:155 exynos_srom_probe()warn:
    'srom->reg_base' from of_iomap() not released on lines: 155.
    
    Fixes: 8ac2266d8831 ("memory: samsung: exynos-srom: Add support for bank configuration")
    Cc: [email protected]
    Signed-off-by: Zhen Ni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mfd: intel_soc_pmic_chtdc_ti: Drop unneeded assignment for cache_type [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Mon Oct 13 19:56:22 2025 -0400

    mfd: intel_soc_pmic_chtdc_ti: Drop unneeded assignment for cache_type
    
    [ Upstream commit 9eb99c08508714906db078b5efbe075329a3fb06 ]
    
    REGCACHE_NONE is the default type of the cache when not provided.
    Drop unneeded explicit assignment to it.
    
    Note, it's defined to 0, and if ever be redefined, it will break
    literally a lot of the drivers, so it very unlikely to happen.
    
    Signed-off-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Stable-dep-of: 64e0d839c589 ("mfd: intel_soc_pmic_chtdc_ti: Set use_single_read regmap_config flag")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mfd: intel_soc_pmic_chtdc_ti: Fix invalid regmap-config max_register value [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Mon Oct 13 19:56:21 2025 -0400

    mfd: intel_soc_pmic_chtdc_ti: Fix invalid regmap-config max_register value
    
    [ Upstream commit 70e997e0107e5ed85c1a3ef2adfccbe351c29d71 ]
    
    The max_register = 128 setting in the regmap config is not valid.
    
    The Intel Dollar Cove TI PMIC has an eeprom unlock register at address 0x88
    and a number of EEPROM registers at 0xF?. Increase max_register to 0xff so
    that these registers can be accessed.
    
    Signed-off-by: Hans de Goede <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Stable-dep-of: 64e0d839c589 ("mfd: intel_soc_pmic_chtdc_ti: Set use_single_read regmap_config flag")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mfd: intel_soc_pmic_chtdc_ti: Set use_single_read regmap_config flag [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Mon Oct 13 19:56:23 2025 -0400

    mfd: intel_soc_pmic_chtdc_ti: Set use_single_read regmap_config flag
    
    [ Upstream commit 64e0d839c589f4f2ecd2e3e5bdb5cee6ba6bade9 ]
    
    Testing has shown that reading multiple registers at once (for 10-bit
    ADC values) does not work. Set the use_single_read regmap_config flag
    to make regmap split these for us.
    
    This should fix temperature opregion accesses done by
    drivers/acpi/pmic/intel_pmic_chtdc_ti.c and is also necessary for
    the upcoming drivers for the ADC and battery MFD cells.
    
    Fixes: 6bac0606fdba ("mfd: Add support for Cherry Trail Dollar Cove TI PMIC")
    Cc: [email protected]
    Reviewed-by: Andy Shevchenko <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mfd: vexpress-sysreg: Check the return value of devm_gpiochip_add_data() [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Mon Aug 11 15:36:16 2025 +0200

    mfd: vexpress-sysreg: Check the return value of devm_gpiochip_add_data()
    
    commit 1efbee6852f1ff698a9981bd731308dd027189fb upstream.
    
    Commit 974cc7b93441 ("mfd: vexpress: Define the device as MFD cells")
    removed the return value check from the call to gpiochip_add_data() (or
    rather gpiochip_add() back then and later converted to devres) with no
    explanation. This function however can still fail, so check the return
    value and bail-out if it does.
    
    Cc: [email protected]
    Fixes: 974cc7b93441 ("mfd: vexpress: Define the device as MFD cells")
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
minixfs: Verify inode mode when loading from disk [+ + +]
Author: Tetsuo Handa <[email protected]>
Date:   Wed Aug 13 00:17:44 2025 +0900

    minixfs: Verify inode mode when loading from disk
    
    [ Upstream commit 73861970938ad1323eb02bbbc87f6fbd1e5bacca ]
    
    The inode mode loaded from corrupted disk can be invalid. Do like what
    commit 0a9e74051313 ("isofs: Verify inode mode when loading from disk")
    does.
    
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=895c23f6917da440ed0d
    Signed-off-by: Tetsuo Handa <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
minmax.h: add whitespace around operators and after commas [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:13 2025 +0000

    minmax.h: add whitespace around operators and after commas
    
    [ Upstream commit 71ee9b16251ea4bf7c1fe222517c82bdb3220acc ]
    
    Patch series "minmax.h: Cleanups and minor optimisations".
    
    Some tidyups and minor changes to minmax.h.
    
    This patch (of 7):
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: move all the clamp() definitions after the min/max() ones [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:17 2025 +0000

    minmax.h: move all the clamp() definitions after the min/max() ones
    
    [ Upstream commit c3939872ee4a6b8bdcd0e813c66823b31e6e26f7 ]
    
    At some point the definitions for clamp() got added in the middle of the
    ones for min() and max().  Re-order the definitions so they are more
    sensibly grouped.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: reduce the #define expansion of min(), max() and clamp() [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:15 2025 +0000

    minmax.h: reduce the #define expansion of min(), max() and clamp()
    
    [ Upstream commit b280bb27a9f7c91ddab730e1ad91a9c18a051f41 ]
    
    Since the test for signed values being non-negative only relies on
    __builtion_constant_p() (not is_constexpr()) it can use the 'ux' variable
    instead of the caller supplied expression.  This means that the #define
    parameters are only expanded twice.  Once in the code and once quoted in
    the error message.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: remove some #defines that are only expanded once [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:19 2025 +0000

    minmax.h: remove some #defines that are only expanded once
    
    [ Upstream commit 2b97aaf74ed534fb838d09867d09a3ca5d795208 ]
    
    The bodies of __signed_type_use() and __unsigned_type_use() are much the
    same size as their names - so put the bodies in the only line that expands
    them.
    
    Similarly __signed_type() is defined separately for 64bit and then used
    exactly once just below.
    
    Change the test for __signed_type from CONFIG_64BIT to one based on gcc
    defined macros so that the code is valid if it gets used outside of a
    kernel build.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: simplify the variants of clamp() [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:18 2025 +0000

    minmax.h: simplify the variants of clamp()
    
    [ Upstream commit 495bba17cdf95e9703af1b8ef773c55ef0dfe703 ]
    
    Always pass a 'type' through to __clamp_once(), pass '__auto_type' from
    clamp() itself.
    
    The expansion of __types_ok3() is reasonable so it isn't worth the added
    complexity of avoiding it when a fixed type is used for all three values.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: update some comments [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:14 2025 +0000

    minmax.h: update some comments
    
    [ Upstream commit 10666e99204818ef45c702469488353b5bb09ec7 ]
    
    - Change three to several.
    - Remove the comment about retaining constant expressions, no longer true.
    - Realign to nearer 80 columns and break on major punctiation.
    - Add a leading comment to the block before __signed_type() and __is_nonneg()
      Otherwise the block explaining the cast is a bit 'floating'.
      Reword the rest of that comment to improve readability.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax.h: use BUILD_BUG_ON_MSG() for the lo < hi test in clamp() [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:16 2025 +0000

    minmax.h: use BUILD_BUG_ON_MSG() for the lo < hi test in clamp()
    
    [ Upstream commit a5743f32baec4728711bbc01d6ac2b33d4c67040 ]
    
    Use BUILD_BUG_ON_MSG(statically_true(ulo > uhi), ...) for the sanity check
    of the bounds in clamp().  Gives better error coverage and one less
    expansion of the arguments.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Dan Carpenter <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Mateusz Guzik <[email protected]>
    Cc: Matthew Wilcox <[email protected]>
    Cc: Pedro Falcato <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
minmax: add a few more MIN_T/MAX_T users [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 17 09:05:06 2025 +0000

    minmax: add a few more MIN_T/MAX_T users
    
    [ Upstream commit 4477b39c32fdc03363affef4b11d48391e6dc9ff ]
    
    Commit 3a7e02c040b1 ("minmax: avoid overly complicated constant
    expressions in VM code") added the simpler MIN_T/MAX_T macros in order
    to avoid some excessive expansion from the rather complicated regular
    min/max macros.
    
    The complexity of those macros stems from two issues:
    
     (a) trying to use them in situations that require a C constant
         expression (in static initializers and for array sizes)
    
     (b) the type sanity checking
    
    and MIN_T/MAX_T avoids both of these issues.
    
    Now, in the whole (long) discussion about all this, it was pointed out
    that the whole type sanity checking is entirely unnecessary for
    min_t/max_t which get a fixed type that the comparison is done in.
    
    But that still leaves min_t/max_t unnecessarily complicated due to
    worries about the C constant expression case.
    
    However, it turns out that there really aren't very many cases that use
    min_t/max_t for this, and we can just force-convert those.
    
    This does exactly that.
    
    Which in turn will then allow for much simpler implementations of
    min_t()/max_t().  All the usual "macros in all upper case will evaluate
    the arguments multiple times" rules apply.
    
    We should do all the same things for the regular min/max() vs MIN/MAX()
    cases, but that has the added complexity of various drivers defining
    their own local versions of MIN/MAX, so that needs another level of
    fixes first.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Cc: David Laight <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: add in_range() macro [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Fri Oct 17 09:04:57 2025 +0000

    minmax: add in_range() macro
    
    [ Upstream commit f9bff0e31881d03badf191d3b0005839391f5f2b ]
    
    Patch series "New page table range API", v6.
    
    This patchset changes the API used by the MM to set up page table entries.
    The four APIs are:
    
        set_ptes(mm, addr, ptep, pte, nr)
        update_mmu_cache_range(vma, addr, ptep, nr)
        flush_dcache_folio(folio)
        flush_icache_pages(vma, page, nr)
    
    flush_dcache_folio() isn't technically new, but no architecture
    implemented it, so I've done that for them.  The old APIs remain around
    but are mostly implemented by calling the new interfaces.
    
    The new APIs are based around setting up N page table entries at once.
    The N entries belong to the same PMD, the same folio and the same VMA, so
    ptep++ is a legitimate operation, and locking is taken care of for you.
    Some architectures can do a better job of it than just a loop, but I have
    hesitated to make too deep a change to architectures I don't understand
    well.
    
    One thing I have changed in every architecture is that PG_arch_1 is now a
    per-folio bit instead of a per-page bit when used for dcache clean/dirty
    tracking.  This was something that would have to happen eventually, and it
    makes sense to do it now rather than iterate over every page involved in a
    cache flush and figure out if it needs to happen.
    
    The point of all this is better performance, and Fengwei Yin has measured
    improvement on x86.  I suspect you'll see improvement on your architecture
    too.  Try the new will-it-scale test mentioned here:
    https://lore.kernel.org/linux-mm/[email protected]/
    You'll need to run it on an XFS filesystem and have
    CONFIG_TRANSPARENT_HUGEPAGE set.
    
    This patchset is the basis for much of the anonymous large folio work
    being done by Ryan, so it's received quite a lot of testing over the last
    few months.
    
    This patch (of 38):
    
    Determine if a value lies within a range more efficiently (subtraction +
    comparison vs two comparisons and an AND).  It also has useful (under some
    circumstances) behaviour if the range exceeds the maximum value of the
    type.  Convert all the conflicting definitions of in_range() within the
    kernel; some can use the generic definition while others need their own
    definition.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Matthew Wilcox (Oracle) <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: allow comparisons of 'int' against 'unsigned char/short' [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:03 2025 +0000

    minmax: allow comparisons of 'int' against 'unsigned char/short'
    
    [ Upstream commit 4ead534fba42fc4fd41163297528d2aa731cd121 ]
    
    Since 'unsigned char/short' get promoted to 'signed int' it is safe to
    compare them against an 'int' value.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Matthew Wilcox (Oracle) <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: allow min()/max()/clamp() if the arguments have the same signedness. [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:01 2025 +0000

    minmax: allow min()/max()/clamp() if the arguments have the same signedness.
    
    [ Upstream commit d03eba99f5bf7cbc6e2fdde3b6fa36954ad58e09 ]
    
    The type-check in min()/max() is there to stop unexpected results if a
    negative value gets converted to a large unsigned value.  However it also
    rejects 'unsigned int' v 'unsigned long' compares which are common and
    never problematc.
    
    Replace the 'same type' check with a 'same signedness' check.
    
    The new test isn't itself a compile time error, so use static_assert() to
    report the error and give a meaningful error message.
    
    Due to the way builtin_choose_expr() works detecting the error in the
    'non-constant' side (where static_assert() can be used) also detects
    errors when the arguments are constant.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Matthew Wilcox (Oracle) <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: avoid overly complicated constant expressions in VM code [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 17 09:05:05 2025 +0000

    minmax: avoid overly complicated constant expressions in VM code
    
    [ Upstream commit 3a7e02c040b130b5545e4b115aada7bacd80a2b6 ]
    
    The minmax infrastructure is overkill for simple constants, and can
    cause huge expansions because those simple constants are then used by
    other things.
    
    For example, 'pageblock_order' is a core VM constant, but because it was
    implemented using 'min_t()' and all the type-checking that involves, it
    actually expanded to something like 2.5kB of preprocessor noise.
    
    And when that simple constant was then used inside other expansions:
    
      #define pageblock_nr_pages      (1UL << pageblock_order)
      #define pageblock_start_pfn(pfn)  ALIGN_DOWN((pfn), pageblock_nr_pages)
    
    and we then use that inside a 'max()' macro:
    
            case ISOLATE_SUCCESS:
                    update_cached = false;
                    last_migrated_pfn = max(cc->zone->zone_start_pfn,
                            pageblock_start_pfn(cc->migrate_pfn - 1));
    
    the end result was that one statement expanding to 253kB in size.
    
    There are probably other cases of this, but this one case certainly
    stood out.
    
    I've added 'MIN_T()' and 'MAX_T()' macros for this kind of "core simple
    constant with specific type" use.  These macros skip the type checking,
    and as such need to be very sparingly used only for obvious cases that
    have active issues like this.
    
    Reported-by: Lorenzo Stoakes <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]/
    Cc: David Laight <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: clamp more efficiently by avoiding extra comparison [+ + +]
Author: Jason A. Donenfeld <[email protected]>
Date:   Fri Oct 17 09:04:56 2025 +0000

    minmax: clamp more efficiently by avoiding extra comparison
    
    [ Upstream commit 2122e2a4efc2cd139474079e11939b6e07adfacd ]
    
    Currently the clamp algorithm does:
    
        if (val > hi)
            val = hi;
        if (val < lo)
            val = lo;
    
    But since hi > lo by definition, this can be made more efficient with:
    
        if (val > hi)
            val = hi;
        else if (val < lo)
            val = lo;
    
    So fix up the clamp and clamp_t functions to do this, adding the same
    argument checking as for min and min_t.
    
    For simple cases, code generation on x86_64 and aarch64 stay about the
    same:
    
        before:
                cmp     edi, edx
                mov     eax, esi
                cmova   edi, edx
                cmp     edi, esi
                cmovnb  eax, edi
                ret
        after:
                cmp     edi, esi
                mov     eax, edx
                cmovnb  esi, edi
                cmp     edi, edx
                cmovb   eax, esi
                ret
    
        before:
                cmp     w0, w2
                csel    w8, w0, w2, lo
                cmp     w8, w1
                csel    w0, w8, w1, hi
                ret
        after:
                cmp     w0, w1
                csel    w8, w0, w1, hi
                cmp     w0, w2
                csel    w0, w8, w2, lo
                ret
    
    On MIPS64, however, code generation improves, by removing arithmetic in
    the second branch:
    
        before:
                sltu    $3,$6,$4
                bne     $3,$0,.L2
                move    $2,$6
    
                move    $2,$4
        .L2:
                sltu    $3,$2,$5
                bnel    $3,$0,.L7
                move    $2,$5
    
        .L7:
                jr      $31
                nop
        after:
                sltu    $3,$4,$6
                beq     $3,$0,.L13
                move    $2,$6
    
                sltu    $3,$4,$5
                bne     $3,$0,.L12
                move    $2,$4
    
        .L13:
                jr      $31
                nop
    
        .L12:
                jr      $31
                move    $2,$5
    
    For more complex cases with surrounding code, the effects are a bit
    more complicated. For example, consider this simplified version of
    timestamp_truncate() from fs/inode.c on x86_64:
    
        struct timespec64 timestamp_truncate(struct timespec64 t, struct inode *inode)
        {
            struct super_block *sb = inode->i_sb;
            unsigned int gran = sb->s_time_gran;
    
            t.tv_sec = clamp(t.tv_sec, sb->s_time_min, sb->s_time_max);
            if (t.tv_sec == sb->s_time_max || t.tv_sec == sb->s_time_min)
                t.tv_nsec = 0;
            return t;
        }
    
        before:
                mov     r8, rdx
                mov     rdx, rsi
                mov     rcx, QWORD PTR [r8]
                mov     rax, QWORD PTR [rcx+8]
                mov     rcx, QWORD PTR [rcx+16]
                cmp     rax, rdi
                mov     r8, rcx
                cmovge  rdi, rax
                cmp     rdi, rcx
                cmovle  r8, rdi
                cmp     rax, r8
                je      .L4
                cmp     rdi, rcx
                jge     .L4
                mov     rax, r8
                ret
        .L4:
                xor     edx, edx
                mov     rax, r8
                ret
    
        after:
                mov     rax, QWORD PTR [rdx]
                mov     rdx, QWORD PTR [rax+8]
                mov     rax, QWORD PTR [rax+16]
                cmp     rax, rdi
                jg      .L6
                mov     r8, rax
                xor     edx, edx
        .L2:
                mov     rax, r8
                ret
        .L6:
                cmp     rdx, rdi
                mov     r8, rdi
                cmovge  r8, rdx
                cmp     rax, r8
                je      .L4
                xor     eax, eax
                cmp     rdx, rdi
                cmovl   rax, rsi
                mov     rdx, rax
                mov     rax, r8
                ret
        .L4:
                xor     edx, edx
                jmp     .L2
    
    In this case, we actually gain a branch, unfortunately, because the
    compiler's replacement axioms no longer as cleanly apply.
    
    So all and all, this change is a bit of a mixed bag.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Jason A. Donenfeld <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Kees Cook <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: deduplicate __unconst_integer_typeof() [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Fri Oct 17 09:04:59 2025 +0000

    minmax: deduplicate __unconst_integer_typeof()
    
    [ Upstream commit 5e57418a2031cd5e1863efdf3d7447a16a368172 ]
    
    It appears that compiler_types.h already have an implementation of the
    __unconst_integer_typeof() called __unqual_scalar_typeof().  Use it
    instead of the copy.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Andy Shevchenko <[email protected]>
    Acked-by: Herve Codina <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: don't use max() in situations that want a C constant expression [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 17 09:05:09 2025 +0000

    minmax: don't use max() in situations that want a C constant expression
    
    [ Upstream commit cb04e8b1d2f24c4c2c92f7b7529031fc35a16fed ]
    
    We only had a couple of array[] declarations, and changing them to just
    use 'MAX()' instead of 'max()' fixes the issue.
    
    This will allow us to simplify our min/max macros enormously, since they
    can now unconditionally use temporary variables to avoid using the
    argument values multiple times.
    
    Cc: David Laight <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: fix header inclusions [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Fri Oct 17 09:05:00 2025 +0000

    minmax: fix header inclusions
    
    [ Upstream commit f6e9d38f8eb00ac8b52e6d15f6aa9bcecacb081b ]
    
    BUILD_BUG_ON*() macros are defined in build_bug.h.  Include it.  Replace
    compiler_types.h by compiler.h, which provides the former, to have a
    definition of the __UNIQUE_ID().
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Herve Codina <[email protected]>
    Cc: Rasmus Villemoes <[email protected]>
    
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: fix indentation of __cmp_once() and __clamp_once() [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:02 2025 +0000

    minmax: fix indentation of __cmp_once() and __clamp_once()
    
    [ Upstream commit f4b84b2ff851f01d0fac619eadef47eb41648534 ]
    
    Remove the extra indentation and align continuation markers.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Matthew Wilcox (Oracle) <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: fix up min3() and max3() too [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 17 09:05:12 2025 +0000

    minmax: fix up min3() and max3() too
    
    [ Upstream commit 21b136cc63d2a9ddd60d4699552b69c214b32964 ]
    
    David Laight pointed out that we should deal with the min3() and max3()
    mess too, which still does excessive expansion.
    
    And our current macros are actually rather broken.
    
    In particular, the macros did this:
    
      #define min3(x, y, z) min((typeof(x))min(x, y), z)
      #define max3(x, y, z) max((typeof(x))max(x, y), z)
    
    and that not only is a nested expansion of possibly very complex
    arguments with all that involves, the typing with that "typeof()" cast
    is completely wrong.
    
    For example, imagine what happens in max3() if 'x' happens to be a
    'unsigned char', but 'y' and 'z' are 'unsigned long'.  The types are
    compatible, and there's no warning - but the result is just random
    garbage.
    
    No, I don't think we've ever hit that issue in practice, but since we
    now have sane infrastructure for doing this right, let's just use it.
    It fixes any excessive expansion, and also avoids these kinds of broken
    type issues.
    
    Requested-by: David Laight <[email protected]>
    Acked-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: improve macro expansion and type checking [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 17 09:05:11 2025 +0000

    minmax: improve macro expansion and type checking
    
    [ Upstream commit 22f5468731491e53356ba7c028f0fdea20b18e2c ]
    
    This clarifies the rules for min()/max()/clamp() type checking and makes
    them a much more efficient macro expansion.
    
    In particular, we now look at the type and range of the inputs to see
    whether they work together, generating a mask of acceptable comparisons,
    and then just verifying that the inputs have a shared case:
    
     - an expression with a signed type can be used for
        (1) signed comparisons
        (2) unsigned comparisons if it is statically known to have a
            non-negative value
    
     - an expression with an unsigned type can be used for
        (3) unsigned comparison
        (4) signed comparisons if the type is smaller than 'int' and thus
            the C integer promotion rules will make it signed anyway
    
    Here rule (1) and (3) are obvious, and rule (2) is important in order to
    allow obvious trivial constants to be used together with unsigned
    values.
    
    Rule (4) is not necessarily a good idea, but matches what we used to do,
    and we have extant cases of this situation in the kernel.  Notably with
    bcachefs having an expression like
    
            min(bch2_bucket_sectors_dirty(a), ca->mi.bucket_size)
    
    where bch2_bucket_sectors_dirty() returns an 's64', and
    'ca->mi.bucket_size' is of type 'u16'.
    
    Technically that bcachefs comparison is clearly sensible on a C type
    level, because the 'u16' will go through the normal C integer promotion,
    and become 'int', and then we're comparing two signed values and
    everything looks sane.
    
    However, it's not entirely clear that a 'min(s64,u16)' operation makes a
    lot of conceptual sense, and it's possible that we will remove rule (4).
    After all, the _reason_ we have these complicated type checks is exactly
    that the C type promotion rules are not very intuitive.
    
    But at least for now the rule is in place for backwards compatibility.
    
    Also note that rule (2) existed before, but is hugely relaxed by this
    commit.  It used to be true only for the simplest compile-time
    non-negative integer constants.  The new macro model will allow cases
    where the compiler can trivially see that an expression is non-negative
    even if it isn't necessarily a constant.
    
    For example, the amdgpu driver does
    
            min_t(size_t, sizeof(fru_info->serial), pia[addr] & 0x3F));
    
    because our old 'min()' macro would see that 'pia[addr] & 0x3F' is of
    type 'int' and clearly not a C constant expression, so doing a 'min()'
    with a 'size_t' is a signedness violation.
    
    Our new 'min()' macro still sees that 'pia[addr] & 0x3F' is of type
    'int', but is smart enough to also see that it is clearly non-negative,
    and thus would allow that case without any complaints.
    
    Cc: Arnd Bergmann <[email protected]>
    Cc: David Laight <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: Introduce {min,max}_array() [+ + +]
Author: Herve Codina <[email protected]>
Date:   Fri Oct 17 09:04:58 2025 +0000

    minmax: Introduce {min,max}_array()
    
    [ Upstream commit c952c748c7a983a8bda9112984e6f2c1f6e441a5 ]
    
    Introduce min_array() (resp max_array()) in order to get the
    minimal (resp maximum) of values present in an array.
    
    Signed-off-by: Herve Codina <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Christophe Leroy <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: make generic MIN() and MAX() macros available everywhere [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 17 09:05:08 2025 +0000

    minmax: make generic MIN() and MAX() macros available everywhere
    
    [ Upstream commit 1a251f52cfdc417c84411a056bc142cbd77baef4 ]
    
    This just standardizes the use of MIN() and MAX() macros, with the very
    traditional semantics.  The goal is to use these for C constant
    expressions and for top-level / static initializers, and so be able to
    simplify the min()/max() macros.
    
    These macro names were used by various kernel code - they are very
    traditional, after all - and all such users have been fixed up, with a
    few different approaches:
    
     - trivial duplicated macro definitions have been removed
    
       Note that 'trivial' here means that it's obviously kernel code that
       already included all the major kernel headers, and thus gets the new
       generic MIN/MAX macros automatically.
    
     - non-trivial duplicated macro definitions are guarded with #ifndef
    
       This is the "yes, they define their own versions, but no, the include
       situation is not entirely obvious, and maybe they don't get the
       generic version automatically" case.
    
     - strange use case #1
    
       A couple of drivers decided that the way they want to describe their
       versioning is with
    
            #define MAJ 1
            #define MIN 2
            #define DRV_VERSION __stringify(MAJ) "." __stringify(MIN)
    
       which adds zero value and I just did my Alexander the Great
       impersonation, and rewrote that pointless Gordian knot as
    
            #define DRV_VERSION "1.2"
    
       instead.
    
     - strange use case #2
    
       A couple of drivers thought that it's a good idea to have a random
       'MIN' or 'MAX' define for a value or index into a table, rather than
       the traditional macro that takes arguments.
    
       These values were re-written as C enum's instead. The new
       function-line macros only expand when followed by an open
       parenthesis, and thus don't clash with enum use.
    
    Happily, there weren't really all that many of these cases, and a lot of
    users already had the pattern of using '#ifndef' guarding (or in one
    case just using '#undef MIN') before defining their own private version
    that does the same thing. I left such cases alone.
    
    Cc: David Laight <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: relax check to allow comparison between unsigned arguments and signed constants [+ + +]
Author: David Laight <[email protected]>
Date:   Fri Oct 17 09:05:04 2025 +0000

    minmax: relax check to allow comparison between unsigned arguments and signed constants
    
    [ Upstream commit 867046cc7027703f60a46339ffde91a1970f2901 ]
    
    Allow (for example) min(unsigned_var, 20).
    
    The opposite min(signed_var, 20u) is still errored.
    
    Since a comparison between signed and unsigned never makes the unsigned
    value negative it is only necessary to adjust the __types_ok() test.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: David Laight <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Christoph Hellwig <[email protected]>
    Cc: Jason A. Donenfeld <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Matthew Wilcox (Oracle) <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: sanity check constant bounds when clamping [+ + +]
Author: Jason A. Donenfeld <[email protected]>
Date:   Fri Oct 17 09:04:55 2025 +0000

    minmax: sanity check constant bounds when clamping
    
    [ Upstream commit 5efcecd9a3b18078d3398b359a84c83f549e22cf ]
    
    The clamp family of functions only makes sense if hi>=lo.  If hi and lo
    are compile-time constants, then raise a build error.  Doing so has
    already caught buggy code.  This also introduces the infrastructure to
    improve the clamping function in subsequent commits.
    
    [[email protected]: coding-style cleanups]
    [[email protected]: s@&&\@&& \@]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Jason A. Donenfeld <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Cc: Kees Cook <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: simplify and clarify min_t()/max_t() implementation [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 17 09:05:07 2025 +0000

    minmax: simplify and clarify min_t()/max_t() implementation
    
    [ Upstream commit 017fa3e89187848fd056af757769c9e66ac3e93d ]
    
    This simplifies the min_t() and max_t() macros by no longer making them
    work in the context of a C constant expression.
    
    That means that you can no longer use them for static initializers or
    for array sizes in type definitions, but there were only a couple of
    such uses, and all of them were converted (famous last words) to use
    MIN_T/MAX_T instead.
    
    Cc: David Laight <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

minmax: simplify min()/max()/clamp() implementation [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Fri Oct 17 09:05:10 2025 +0000

    minmax: simplify min()/max()/clamp() implementation
    
    [ Upstream commit dc1c8034e31b14a2e5e212104ec508aec44ce1b9 ]
    
    Now that we no longer have any C constant expression contexts (ie array
    size declarations or static initializers) that use min() or max(), we
    can simpify the implementation by not having to worry about the result
    staying as a C constant expression.
    
    So now we can unconditionally just use temporary variables of the right
    type, and get rid of the excessive expansion that used to come from the
    use of
    
       __builtin_choose_expr(__is_constexpr(...), ..
    
    to pick the specialized code for constant expressions.
    
    Another expansion simplification is to pass the temporary variables (in
    addition to the original expression) to our __types_ok() macro.  That
    may superficially look like it complicates the macro, but when we only
    want the type of the expression, expanding the temporary variable names
    is much simpler and smaller than expanding the potentially complicated
    original expression.
    
    As a result, on my machine, doing a
    
      $ time make drivers/staging/media/atomisp/pci/isp/kernels/ynr/ynr_1.0/ia_css_ynr.host.i
    
    goes from
    
            real    0m16.621s
            user    0m15.360s
            sys     0m1.221s
    
    to
    
            real    0m2.532s
            user    0m2.091s
            sys     0m0.452s
    
    because the token expansion goes down dramatically.
    
    In particular, the longest line expansion (which was line 71 of that
    'ia_css_ynr.host.c' file) shrinks from 23,338kB (yes, 23MB for one
    single line) to "just" 1,444kB (now "only" 1.4MB).
    
    And yes, that line is still the line from hell, because it's doing
    multiple levels of "min()/max()" expansion thanks to some of them being
    hidden inside the uDIGIT_FITTING() macro.
    
    Lorenzo has a nice cleanup patch that makes that driver use inline
    functions instead of macros for sDIGIT_FITTING() and uDIGIT_FITTING(),
    which will fix that line once and for all, but the 16-fold reduction in
    this case does show why we need to simplify these helpers.
    
    Cc: David Laight <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
misc: genwqe: Fix incorrect cmd field being reported in error [+ + +]
Author: Colin Ian King <[email protected]>
Date:   Tue Sep 2 12:37:12 2025 +0100

    misc: genwqe: Fix incorrect cmd field being reported in error
    
    [ Upstream commit 6b26053819dccc664120e07c56f107fb6f72f3fa ]
    
    There is a dev_err message that is reporting the value of
    cmd->asiv_length when it should be reporting cmd->asv_length
    instead. Fix this.
    
    Fixes: eaf4722d4645 ("GenWQE Character device and DDCB queue")
    Signed-off-by: Colin Ian King <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mm/slab: make __free(kfree) accept error pointers [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Sun Apr 28 17:26:44 2024 +0300

    mm/slab: make __free(kfree) accept error pointers
    
    commit cd7eb8f83fcf258f71e293f7fc52a70be8ed0128 upstream.
    
    Currently, if an automatically freed allocation is an error pointer that
    will lead to a crash.  An example of this is in wm831x_gpio_dbg_show().
    
       171  char *label __free(kfree) = gpiochip_dup_line_label(chip, i);
       172  if (IS_ERR(label)) {
       173          dev_err(wm831x->dev, "Failed to duplicate label\n");
       174          continue;
       175  }
    
    The auto clean up function should check for error pointers as well,
    otherwise we're going to keep hitting issues like this.
    
    Fixes: 54da6a092431 ("locking: Introduce __cleanup() based infrastructure")
    Cc: <[email protected]>
    Signed-off-by: Dan Carpenter <[email protected]>
    Acked-by: David Rientjes <[email protected]>
    Signed-off-by: Vlastimil Babka <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm: hugetlb: avoid soft lockup when mprotect to large memory area [+ + +]
Author: Yang Shi <[email protected]>
Date:   Mon Sep 29 13:24:02 2025 -0700

    mm: hugetlb: avoid soft lockup when mprotect to large memory area
    
    commit f52ce0ea90c83a28904c7cc203a70e6434adfecb upstream.
    
    When calling mprotect() to a large hugetlb memory area in our customer's
    workload (~300GB hugetlb memory), soft lockup was observed:
    
    watchdog: BUG: soft lockup - CPU#98 stuck for 23s! [t2_new_sysv:126916]
    
    CPU: 98 PID: 126916 Comm: t2_new_sysv Kdump: loaded Not tainted 6.17-rc7
    Hardware name: GIGACOMPUTING R2A3-T40-AAV1/Jefferson CIO, BIOS 5.4.4.1 07/15/2025
    pstate: 20400009 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : mte_clear_page_tags+0x14/0x24
    lr : mte_sync_tags+0x1c0/0x240
    sp : ffff80003150bb80
    x29: ffff80003150bb80 x28: ffff00739e9705a8 x27: 0000ffd2d6a00000
    x26: 0000ff8e4bc00000 x25: 00e80046cde00f45 x24: 0000000000022458
    x23: 0000000000000000 x22: 0000000000000004 x21: 000000011b380000
    x20: ffff000000000000 x19: 000000011b379f40 x18: 0000000000000000
    x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
    x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
    x11: 0000000000000000 x10: 0000000000000000 x9 : ffffc875e0aa5e2c
    x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000
    x5 : fffffc01ce7a5c00 x4 : 00000000046cde00 x3 : fffffc0000000000
    x2 : 0000000000000004 x1 : 0000000000000040 x0 : ffff0046cde7c000
    
    Call trace:
      mte_clear_page_tags+0x14/0x24
      set_huge_pte_at+0x25c/0x280
      hugetlb_change_protection+0x220/0x430
      change_protection+0x5c/0x8c
      mprotect_fixup+0x10c/0x294
      do_mprotect_pkey.constprop.0+0x2e0/0x3d4
      __arm64_sys_mprotect+0x24/0x44
      invoke_syscall+0x50/0x160
      el0_svc_common+0x48/0x144
      do_el0_svc+0x30/0xe0
      el0_svc+0x30/0xf0
      el0t_64_sync_handler+0xc4/0x148
      el0t_64_sync+0x1a4/0x1a8
    
    Soft lockup is not triggered with THP or base page because there is
    cond_resched() called for each PMD size.
    
    Although the soft lockup was triggered by MTE, it should be not MTE
    specific.  The other processing which takes long time in the loop may
    trigger soft lockup too.
    
    So add cond_resched() for hugetlb to avoid soft lockup.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 8f860591ffb2 ("[PATCH] Enable mprotect on huge pages")
    Signed-off-by: Yang Shi <[email protected]>
    Tested-by: Carl Worth <[email protected]>
    Reviewed-by: Christoph Lameter (Ampere) <[email protected]>
    Reviewed-by: Catalin Marinas <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Acked-by: Oscar Salvador <[email protected]>
    Reviewed-by: Anshuman Khandual <[email protected]>
    Reviewed-by: Dev Jain <[email protected]>
    Cc: Muchun Song <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mmc: core: SPI mode remove cmd7 [+ + +]
Author: Rex Chen <[email protected]>
Date:   Mon Jul 28 17:22:29 2025 +0900

    mmc: core: SPI mode remove cmd7
    
    commit fec40f44afdabcbc4a7748e4278f30737b54bb1a upstream.
    
    SPI mode doesn't support cmd7, so remove it in mmc_sdio_alive() and
    confirm if sdio is active by checking CCCR register value is available
    or not.
    
    Signed-off-by: Rex Chen <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

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

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

 
mtd: rawnand: fsmc: Default to autodetect buswidth [+ + +]
Author: Linus Walleij <[email protected]>
Date:   Tue Sep 16 18:07:37 2025 +0200

    mtd: rawnand: fsmc: Default to autodetect buswidth
    
    commit b8df622cf7f6808c85764e681847150ed6d85f3d upstream.
    
    If you don't specify buswidth 2 (16 bits) in the device
    tree, FSMC doesn't even probe anymore:
    
    fsmc-nand 10100000.flash: FSMC device partno 090,
      manufacturer 80, revision 00, config 00
    nand: device found, Manufacturer ID: 0x20, Chip ID: 0xb1
    nand: ST Micro 10100000.flash
    nand: bus width 8 instead of 16 bits
    nand: No NAND device found
    fsmc-nand 10100000.flash: probe with driver fsmc-nand failed
      with error -22
    
    With this patch to use autodetection unless buswidth is
    specified, the device is properly detected again:
    
    fsmc-nand 10100000.flash: FSMC device partno 090,
      manufacturer 80, revision 00, config 00
    nand: device found, Manufacturer ID: 0x20, Chip ID: 0xb1
    nand: ST Micro NAND 128MiB 1,8V 16-bit
    nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
    fsmc-nand 10100000.flash: Using 1-bit HW ECC scheme
    Scanning device for bad blocks
    
    I don't know where or how this happened, I think some change
    in the nand core.
    
    Cc: [email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net/9p: fix double req put in p9_fd_cancelled [+ + +]
Author: Nalivayko Sergey <[email protected]>
Date:   Mon Oct 13 11:09:32 2025 -0400

    net/9p: fix double req put in p9_fd_cancelled
    
    [ Upstream commit 674b56aa57f9379854cb6798c3bbcef7e7b51ab7 ]
    
    Syzkaller reports a KASAN issue as below:
    
    general protection fault, probably for non-canonical address 0xfbd59c0000000021: 0000 [#1] PREEMPT SMP KASAN NOPTI
    KASAN: maybe wild-memory-access in range [0xdead000000000108-0xdead00000000010f]
    CPU: 0 PID: 5083 Comm: syz-executor.2 Not tainted 6.1.134-syzkaller-00037-g855bd1d7d838 #0
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    RIP: 0010:__list_del include/linux/list.h:114 [inline]
    RIP: 0010:__list_del_entry include/linux/list.h:137 [inline]
    RIP: 0010:list_del include/linux/list.h:148 [inline]
    RIP: 0010:p9_fd_cancelled+0xe9/0x200 net/9p/trans_fd.c:734
    
    Call Trace:
     <TASK>
     p9_client_flush+0x351/0x440 net/9p/client.c:614
     p9_client_rpc+0xb6b/0xc70 net/9p/client.c:734
     p9_client_version net/9p/client.c:920 [inline]
     p9_client_create+0xb51/0x1240 net/9p/client.c:1027
     v9fs_session_init+0x1f0/0x18f0 fs/9p/v9fs.c:408
     v9fs_mount+0xba/0xcb0 fs/9p/vfs_super.c:126
     legacy_get_tree+0x108/0x220 fs/fs_context.c:632
     vfs_get_tree+0x8e/0x300 fs/super.c:1573
     do_new_mount fs/namespace.c:3056 [inline]
     path_mount+0x6a6/0x1e90 fs/namespace.c:3386
     do_mount fs/namespace.c:3399 [inline]
     __do_sys_mount fs/namespace.c:3607 [inline]
     __se_sys_mount fs/namespace.c:3584 [inline]
     __x64_sys_mount+0x283/0x300 fs/namespace.c:3584
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x35/0x80 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x6e/0xd8
    
    This happens because of a race condition between:
    
    - The 9p client sending an invalid flush request and later cleaning it up;
    - The 9p client in p9_read_work() canceled all pending requests.
    
          Thread 1                              Thread 2
        ...
        p9_client_create()
        ...
        p9_fd_create()
        ...
        p9_conn_create()
        ...
        // start Thread 2
        INIT_WORK(&m->rq, p9_read_work);
                                            p9_read_work()
        ...
        p9_client_rpc()
        ...
                                            ...
                                            p9_conn_cancel()
                                            ...
                                            spin_lock(&m->req_lock);
        ...
        p9_fd_cancelled()
        ...
                                            ...
                                            spin_unlock(&m->req_lock);
                                            // status rewrite
                                            p9_client_cb(m->client, req, REQ_STATUS_ERROR)
                                            // first remove
                                            list_del(&req->req_list);
                                            ...
    
        spin_lock(&m->req_lock)
        ...
        // second remove
        list_del(&req->req_list);
        spin_unlock(&m->req_lock)
      ...
    
    Commit 74d6a5d56629 ("9p/trans_fd: Fix concurrency del of req_list in
    p9_fd_cancelled/p9_read_work") fixes a concurrency issue in the 9p filesystem
    client where the req_list could be deleted simultaneously by both
    p9_read_work and p9_fd_cancelled functions, but for the case where req->status
    equals REQ_STATUS_RCVD.
    
    Update the check for req->status in p9_fd_cancelled to skip processing not
    just received requests, but anything that is not SENT, as whatever
    changed the state from SENT also removed the request from its list.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: afd8d6541155 ("9P: Add cancelled() to the transport functions.")
    Cc: [email protected]
    Signed-off-by: Nalivayko Sergey <[email protected]>
    Message-ID: <[email protected]>
    [updated the check from status == RECV || status == ERROR to status != SENT]
    Signed-off-by: Dominique Martinet <[email protected]>
    [ replaced m->req_lock with client->lock ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net/ip6_tunnel: Prevent perpetual tunnel growth [+ + +]
Author: Dmitry Safonov <[email protected]>
Date:   Thu Oct 9 16:02:19 2025 +0100

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

 
net/mlx4: prevent potential use after free in mlx4_en_do_uc_filter() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Tue Sep 30 15:25:01 2025 +0300

    net/mlx4: prevent potential use after free in mlx4_en_do_uc_filter()
    
    [ Upstream commit 4f0d91ba72811fd5dd577bcdccd7fed649aae62c ]
    
    Print "entry->mac" before freeing "entry".  The "entry" pointer is
    freed with kfree_rcu() so it's unlikely that we would trigger this
    in real life, but it's safer to re-order it.
    
    Fixes: cc5387f7346a ("net/mlx4_en: Add unicast MAC filtering")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/sctp: fix a null dereference in sctp_disposition sctp_sf_do_5_1D_ce() [+ + +]
Author: Alexandr Sapozhnikov <[email protected]>
Date:   Thu Oct 2 12:14:47 2025 +0300

    net/sctp: fix a null dereference in sctp_disposition sctp_sf_do_5_1D_ce()
    
    [ Upstream commit 2f3119686ef50319490ccaec81a575973da98815 ]
    
    If new_asoc->peer.adaptation_ind=0 and sctp_ulpevent_make_authkey=0
    and sctp_ulpevent_make_authkey() returns 0, then the variable
    ai_ev remains zero and the zero will be dereferenced
    in the sctp_ulpevent_free() function.
    
    Signed-off-by: Alexandr Sapozhnikov <[email protected]>
    Acked-by: Xin Long <[email protected]>
    Fixes: 30f6ebf65bc4 ("sctp: add SCTP_AUTH_NO_AUTH type for AUTHENTICATION_EVENT")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: add ndo_fdb_del_bulk [+ + +]
Author: Nikolay Aleksandrov <[email protected]>
Date:   Wed Apr 13 13:51:56 2022 +0300

    net: add ndo_fdb_del_bulk
    
    [ Upstream commit 1306d5362a591493a2d07f685ed2cc480dcda320 ]
    
    Add a new netdev op called ndo_fdb_del_bulk, it will be later used for
    driver-specific bulk delete implementation dispatched from rtnetlink. The
    first user will be the bridge, we need it to signal to rtnetlink from
    the driver that we support bulk delete operation (NLM_F_BULK).
    
    Signed-off-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: bf29555f5bdc ("rtnetlink: Allow deleting FDB entries in user namespace")
    Signed-off-by: Sasha Levin <[email protected]>

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

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

net: dlink: handle copy_thresh allocation failure [+ + +]
Author: Yeounsu Moon <[email protected]>
Date:   Mon Sep 29 04:01:24 2025 +0900

    net: dlink: handle copy_thresh allocation failure
    
    [ Upstream commit 8169a6011c5fecc6cb1c3654c541c567d3318de8 ]
    
    The driver did not handle failure of `netdev_alloc_skb_ip_align()`.
    If the allocation failed, dereferencing `skb->protocol` could lead to
    a NULL pointer dereference.
    
    This patch tries to allocate `skb`. If the allocation fails, it falls
    back to the normal path.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Suggested-by: Jakub Kicinski <[email protected]>
    Tested-on: D-Link DGE-550T Rev-A3
    Signed-off-by: Yeounsu Moon <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dlink: handle dma_map_single() failure properly [+ + +]
Author: Yeounsu Moon <[email protected]>
Date:   Fri Oct 10 00:57:16 2025 +0900

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

net: ena: return 0 in ena_get_rxfh_key_size() when RSS hash key is not configurable [+ + +]
Author: Kohei Enju <[email protected]>
Date:   Mon Sep 29 14:02:22 2025 +0900

    net: ena: return 0 in ena_get_rxfh_key_size() when RSS hash key is not configurable
    
    [ Upstream commit f017156aea60db8720e47591ed1e041993381ad2 ]
    
    In EC2 instances where the RSS hash key is not configurable, ethtool
    shows bogus RSS hash key since ena_get_rxfh_key_size() unconditionally
    returns ENA_HASH_KEY_SIZE.
    
    Commit 6a4f7dc82d1e ("net: ena: rss: do not allocate key when not
    supported") added proper handling for devices that don't support RSS
    hash key configuration, but ena_get_rxfh_key_size() has been unchanged.
    
    When the RSS hash key is not configurable, return 0 instead of
    ENA_HASH_KEY_SIZE to clarify getting the value is not supported.
    
    Tested on m5 instance families.
    
    Without patch:
     # ethtool -x ens5 | grep -A 1 "RSS hash key"
     RSS hash key:
     00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    
    With patch:
     # ethtool -x ens5 | grep -A 1 "RSS hash key"
     RSS hash key:
     Operation not supported
    
    Fixes: 6a4f7dc82d1e ("net: ena: rss: do not allocate key when not supported")
    Signed-off-by: Kohei Enju <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

net: fsl_pq_mdio: Fix device node reference leak in fsl_pq_mdio_probe [+ + +]
Author: Erick Karanja <[email protected]>
Date:   Thu Oct 2 20:46:17 2025 +0300

    net: fsl_pq_mdio: Fix device node reference leak in fsl_pq_mdio_probe
    
    [ Upstream commit 521405cb54cd2812bbb6dedd5afc14bca1e7e98a ]
    
    Add missing of_node_put call to release device node tbi obtained
    via for_each_child_of_node.
    
    Fixes: afae5ad78b342 ("net/fsl_pq_mdio: streamline probing of MDIO nodes")
    Signed-off-by: Erick Karanja <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: netlink: add NLM_F_BULK delete request modifier [+ + +]
Author: Nikolay Aleksandrov <[email protected]>
Date:   Wed Apr 13 13:51:54 2022 +0300

    net: netlink: add NLM_F_BULK delete request modifier
    
    [ Upstream commit 545528d788556c724eeb5400757f828ef27782a8 ]
    
    Add a new delete request modifier called NLM_F_BULK which, when
    supported, would cause the request to delete multiple objects. The flag
    is a convenient way to signal that a multiple delete operation is
    requested which can be gradually added to different delete requests. In
    order to make sure older kernels will error out if the operation is not
    supported instead of doing something unintended we have to break a
    required condition when implementing support for this flag, f.e. for
    neighbors we will omit the mandatory mac address attribute.
    Initially it will be used to add flush with filtering support for bridge
    fdbs, but it also opens the door to add similar support to others.
    
    Signed-off-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: bf29555f5bdc ("rtnetlink: Allow deleting FDB entries in user namespace")
    Signed-off-by: Sasha Levin <[email protected]>

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

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

net: rtnetlink: add bulk delete support flag [+ + +]
Author: Nikolay Aleksandrov <[email protected]>
Date:   Wed Apr 13 13:51:55 2022 +0300

    net: rtnetlink: add bulk delete support flag
    
    [ Upstream commit a6cec0bcd34264be8887791594be793b3f12719f ]
    
    Add a new rtnl flag (RTNL_FLAG_BULK_DEL_SUPPORTED) which is used to
    verify that the delete operation allows bulk object deletion. Also emit
    a warning if anyone tries to set it for non-delete kind.
    
    Suggested-by: David Ahern <[email protected]>
    Signed-off-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: bf29555f5bdc ("rtnetlink: Allow deleting FDB entries in user namespace")
    Signed-off-by: Sasha Levin <[email protected]>

net: rtnetlink: add helper to extract msg type's kind [+ + +]
Author: Nikolay Aleksandrov <[email protected]>
Date:   Wed Apr 13 13:51:52 2022 +0300

    net: rtnetlink: add helper to extract msg type's kind
    
    [ Upstream commit 2e9ea3e30f696fd438319c07836422bb0bbb4608 ]
    
    Add a helper which extracts the msg type's kind using the kind mask (0x3).
    
    Signed-off-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: bf29555f5bdc ("rtnetlink: Allow deleting FDB entries in user namespace")
    Signed-off-by: Sasha Levin <[email protected]>

net: rtnetlink: add msg kind names [+ + +]
Author: Nikolay Aleksandrov <[email protected]>
Date:   Wed Apr 13 13:51:51 2022 +0300

    net: rtnetlink: add msg kind names
    
    [ Upstream commit 12dc5c2cb7b269c5a1c6d02844f40bfce942a7a6 ]
    
    Add rtnl kind names instead of using raw values. We'll need to
    check for DEL kind later to validate bulk flag support.
    
    Signed-off-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: bf29555f5bdc ("rtnetlink: Allow deleting FDB entries in user namespace")
    Signed-off-by: Sasha Levin <[email protected]>

net: rtnetlink: add NLM_F_BULK support to rtnl_fdb_del [+ + +]
Author: Nikolay Aleksandrov <[email protected]>
Date:   Wed Apr 13 13:51:57 2022 +0300

    net: rtnetlink: add NLM_F_BULK support to rtnl_fdb_del
    
    [ Upstream commit 9e83425993f38bb89e0ea07849ba0039a748e85b ]
    
    When NLM_F_BULK is specified in a fdb del message we need to handle it
    differently. First since this is a new call we can strictly validate the
    passed attributes, at first only ifindex and vlan are allowed as these
    will be the initially supported filter attributes, any other attribute
    is rejected. The mac address is no longer mandatory, but we use it
    to error out in older kernels because it cannot be specified with bulk
    request (the attribute is not allowed) and then we have to dispatch
    the call to ndo_fdb_del_bulk if the device supports it. The del bulk
    callback can do further validation of the attributes if necessary.
    
    Signed-off-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: bf29555f5bdc ("rtnetlink: Allow deleting FDB entries in user namespace")
    Signed-off-by: Sasha Levin <[email protected]>

net: rtnetlink: fix module reference count leak issue in rtnetlink_rcv_msg [+ + +]
Author: Zhengchao Shao <[email protected]>
Date:   Mon Aug 15 10:46:29 2022 +0800

    net: rtnetlink: fix module reference count leak issue in rtnetlink_rcv_msg
    
    commit 5b22f62724a0a09e00d301abf5b57b0c12be8a16 upstream.
    
    When bulk delete command is received in the rtnetlink_rcv_msg function,
    if bulk delete is not supported, module_put is not called to release
    the reference counting. As a result, module reference count is leaked.
    
    Fixes: a6cec0bcd342 ("net: rtnetlink: add bulk delete support flag")
    Signed-off-by: Zhengchao Shao <[email protected]>
    Acked-by: Nikolay Aleksandrov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: rtnetlink: use BIT for flag values [+ + +]
Author: Nikolay Aleksandrov <[email protected]>
Date:   Wed Apr 13 13:51:53 2022 +0300

    net: rtnetlink: use BIT for flag values
    
    [ Upstream commit 0569e31f1bc2f50613ba4c219f3ecc0d1174d841 ]
    
    Use BIT to define flag values.
    
    Signed-off-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: bf29555f5bdc ("rtnetlink: Allow deleting FDB entries in user namespace")
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

net: usb: Remove disruptive netif_wake_queue in rtl8150_set_multicast [+ + +]
Author: I Viswanath <[email protected]>
Date:   Wed Sep 24 19:13:50 2025 +0530

    net: usb: Remove disruptive netif_wake_queue in rtl8150_set_multicast
    
    [ Upstream commit 958baf5eaee394e5fd976979b0791a875f14a179 ]
    
    syzbot reported WARNING in rtl8150_start_xmit/usb_submit_urb.
    This is the sequence of events that leads to the warning:
    
    rtl8150_start_xmit() {
            netif_stop_queue();
            usb_submit_urb(dev->tx_urb);
    }
    
    rtl8150_set_multicast() {
            netif_stop_queue();
            netif_wake_queue();             <-- wakes up TX queue before URB is done
    }
    
    rtl8150_start_xmit() {
            netif_stop_queue();
            usb_submit_urb(dev->tx_urb);    <-- double submission
    }
    
    rtl8150_set_multicast being the ndo_set_rx_mode callback should not be
    calling netif_stop_queue and notif_start_queue as these handle
    TX queue synchronization.
    
    The net core function dev_set_rx_mode handles the synchronization
    for rtl8150_set_multicast making it safe to remove these locks.
    
    Reported-and-tested-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=78cae3f37c62ad092caa
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Tested-by: Michal Pecio <[email protected]>
    Signed-off-by: I Viswanath <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

net: usb: use eth_hw_addr_set() instead of ether_addr_copy() [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Fri Oct 1 14:32:24 2021 -0700

    net: usb: use eth_hw_addr_set() instead of ether_addr_copy()
    
    [ Upstream commit af804e6db9f60b923ff5149d9bf782e0baa82a2b ]
    
    Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
    of VLANs...") introduced a rbtree for faster Ethernet address look
    up. To maintain netdev->dev_addr in this tree we need to make all
    the writes to it got through appropriate helpers.
    
    Convert net/usb from ether_addr_copy() to eth_hw_addr_set():
    
      @@
      expression dev, np;
      @@
      - ether_addr_copy(dev->dev_addr, np)
      + eth_hw_addr_set(dev, np)
    
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 8d93ff40d49d ("net: usb: lan78xx: fix use of improperly initialized dev->chipid in lan78xx_reset")
    Signed-off-by: Sasha Levin <[email protected]>

 
netfilter: ipset: Remove unused htable_bits in macro ahash_region [+ + +]
Author: Zhen Ni <[email protected]>
Date:   Fri Aug 29 16:36:21 2025 +0800

    netfilter: ipset: Remove unused htable_bits in macro ahash_region
    
    [ Upstream commit ba941796d7cd1e81f51eed145dad1b47240ff420 ]
    
    Since the ahash_region() macro was redefined to calculate the region
    index solely from HTABLE_REGION_BITS, the htable_bits parameter became
    unused.
    
    Remove the unused htable_bits argument and its call sites, simplifying
    the code without changing semantics.
    
    Fixes: 8478a729c046 ("netfilter: ipset: fix region locking in hash types")
    Signed-off-by: Zhen Ni <[email protected]>
    Reviewed-by: Phil Sutter <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nfp: fix RSS hash key size when RSS is not supported [+ + +]
Author: Kohei Enju <[email protected]>
Date:   Mon Sep 29 14:42:15 2025 +0900

    nfp: fix RSS hash key size when RSS is not supported
    
    [ Upstream commit 8425161ac1204d2185e0a10f5ae652bae75d2451 ]
    
    The nfp_net_get_rxfh_key_size() function returns -EOPNOTSUPP when
    devices don't support RSS, and callers treat the negative value as a
    large positive value since the return type is u32.
    
    Return 0 when devices don't support RSS, aligning with the ethtool
    interface .get_rxfh_key_size() that requires returning 0 in such cases.
    
    Fixes: 9ff304bfaf58 ("nfp: add support for reporting CRC32 hash function")
    Signed-off-by: Kohei Enju <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

NFSD: Fix destination buffer size in nfsd4_ssc_setup_dul() [+ + +]
Author: Thorsten Blum <[email protected]>
Date:   Wed Aug 6 03:10:01 2025 +0200

    NFSD: Fix destination buffer size in nfsd4_ssc_setup_dul()
    
    commit ab1c282c010c4f327bd7addc3c0035fd8e3c1721 upstream.
    
    Commit 5304877936c0 ("NFSD: Fix strncpy() fortify warning") replaced
    strncpy(,, sizeof(..)) with strlcpy(,, sizeof(..) - 1), but strlcpy()
    already guaranteed NUL-termination of the destination buffer and
    subtracting one byte potentially truncated the source string.
    
    The incorrect size was then carried over in commit 72f78ae00a8e ("NFSD:
    move from strlcpy with unused retval to strscpy") when switching from
    strlcpy() to strscpy().
    
    Fix this off-by-one error by using the full size of the destination
    buffer again.
    
    Cc: [email protected]
    Fixes: 5304877936c0 ("NFSD: Fix strncpy() fortify warning")
    Signed-off-by: Thorsten Blum <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

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

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

 
nfsd: nfserr_jukebox in nlm_fopen should lead to a retry [+ + +]
Author: Olga Kornievskaia <[email protected]>
Date:   Thu Aug 21 16:31:46 2025 -0400

    nfsd: nfserr_jukebox in nlm_fopen should lead to a retry
    
    commit a082e4b4d08a4a0e656d90c2c05da85f23e6d0c9 upstream.
    
    When v3 NLM request finds a conflicting delegation, it triggers
    a delegation recall and nfsd_open fails with EAGAIN. nfsd_open
    then translates EAGAIN into nfserr_jukebox. In nlm_fopen, instead
    of returning nlm_failed for when there is a conflicting delegation,
    drop this NLM request so that the client retries. Once delegation
    is recalled and if a local lock is claimed, a retry would lead to
    nfsd returning a nlm_lck_blocked error or a successful nlm lock.
    
    Fixes: d343fce148a4 ("[PATCH] knfsd: Allow lockd to drop replies as appropriate")
    Cc: [email protected] # v6.6
    Signed-off-by: Olga Kornievskaia <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
NFSv4.1: fix backchannel max_resp_sz verification check [+ + +]
Author: Anthony Iliopoulos <[email protected]>
Date:   Wed Aug 13 11:00:46 2025 +0200

    NFSv4.1: fix backchannel max_resp_sz verification check
    
    [ Upstream commit 191512355e520dfc45c8bc3b56d4de59c3ade33e ]
    
    When the client max_resp_sz is larger than what the server encodes in
    its reply, the nfs4_verify_back_channel_attrs() check fails and this
    causes nfs4_proc_create_session() to fail, in cases where the client
    page size is larger than that of the server and the server does not want
    to negotiate upwards.
    
    While this is not a problem with the linux nfs server that will reflect
    the proposed value in its reply irrespective of the local page size,
    other nfs server implementations may insist on their own max_resp_sz
    value, which could be smaller.
    
    Fix this by accepting smaller max_resp_sz values from the server, as
    this does not violate the protocol. The server is allowed to decrease
    but not increase proposed the size, and as such values smaller than the
    client-proposed ones are valid.
    
    Fixes: 43c2e885be25 ("nfs4: fix channel attribute sanity-checks")
    Signed-off-by: Anthony Iliopoulos <[email protected]>
    Reviewed-by: Benjamin Coddington <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

ocfs2: fix double free in user_cluster_connect() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Tue Sep 23 14:26:07 2025 +0300

    ocfs2: fix double free in user_cluster_connect()
    
    [ Upstream commit 8f45f089337d924db24397f55697cda0e6960516 ]
    
    user_cluster_disconnect() frees "conn->cc_private" which is "lc" but then
    the error handling frees "lc" a second time.  Set "lc" to NULL on this
    path to avoid a double free.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: c994c2ebdbbc ("ocfs2: use the new DLM operation callbacks while requesting new lockspace")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Joseph Qi <[email protected]>
    Reviewed-by: Goldwyn Rodrigues <[email protected]>
    Cc: Mark Fasheh <[email protected]>
    Cc: Joel Becker <[email protected]>
    Cc: Junxiao Bi <[email protected]>
    Cc: Changwei Ge <[email protected]>
    Cc: Jun Piao <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
openat2: don't trigger automounts with RESOLVE_NO_XDEV [+ + +]
Author: Askar Safin <[email protected]>
Date:   Mon Aug 25 18:12:33 2025 +0000

    openat2: don't trigger automounts with RESOLVE_NO_XDEV
    
    commit 042a60680de43175eb4df0977ff04a4eba9da082 upstream.
    
    openat2 had a bug: if we pass RESOLVE_NO_XDEV, then openat2
    doesn't traverse through automounts, but may still trigger them.
    (See the link for full bug report with reproducer.)
    
    This commit fixes this bug.
    
    Link: https://lore.kernel.org/linux-fsdevel/[email protected]/
    Fixes: fddb5d430ad9fa91b49b1 ("open: introduce openat2(2) syscall")
    Reviewed-by: Aleksa Sarai <[email protected]>
    Cc: [email protected]
    Signed-off-by: Askar Safin <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
overflow, tracing: Define the is_signed_type() macro once [+ + +]
Author: Bart Van Assche <[email protected]>
Date:   Fri Oct 17 09:04:53 2025 +0000

    overflow, tracing: Define the is_signed_type() macro once
    
    [ Upstream commit 92d23c6e94157739b997cacce151586a0d07bb8a ]
    
    There are two definitions of the is_signed_type() macro: one in
    <linux/overflow.h> and a second definition in <linux/trace_events.h>.
    
    As suggested by Linus Torvalds, move the definition of the
    is_signed_type() macro into the <linux/compiler.h> header file. Change
    the definition of the is_signed_type() macro to make sure that it does
    not trigger any sparse warnings with future versions of sparse for
    bitwise types. See also:
    https://lore.kernel.org/all/CAHk-=whjH6p+qzwUdx5SOVVHjS3WvzJQr6mDUwhEyTf6pJWzaQ@mail.gmail.com/
    https://lore.kernel.org/all/CAHk-=wjQGnVfb4jehFR0XyZikdQvCZouE96xR_nnf5kqaM5qqQ@mail.gmail.com/
    
    Cc: Andrew Morton <[email protected]>
    Cc: Arnd Bergmann <[email protected]>
    Cc: Dan Williams <[email protected]>
    Cc: Eric Dumazet <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Isabella Basso <[email protected]>
    Cc: "Jason A. Donenfeld" <[email protected]>
    Cc: Josh Poimboeuf <[email protected]>
    Cc: Luc Van Oostenryck <[email protected]>
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Nathan Chancellor <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Rasmus Villemoes <[email protected]>
    Cc: Sander Vanheule <[email protected]>
    Cc: Steven Rostedt <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: Yury Norov <[email protected]>
    Signed-off-by: Bart Van Assche <[email protected]>
    Signed-off-by: Kees Cook <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
parisc: don't reference obsolete termio struct for TC* constants [+ + +]
Author: Sam James <[email protected]>
Date:   Wed Oct 1 23:58:40 2025 +0100

    parisc: don't reference obsolete termio struct for TC* constants
    
    commit 8ec5a066f88f89bd52094ba18792b34c49dcd55a upstream.
    
    Similar in nature to ab107276607af90b13a5994997e19b7b9731e251. glibc-2.42
    drops the legacy termio struct, but the ioctls.h header still defines some
    TC* constants in terms of termio (via sizeof). Hardcode the values instead.
    
    This fixes building Python for example, which falls over like:
      ./Modules/termios.c:1119:16: error: invalid application of 'sizeof' to incomplete type 'struct termio'
    
    Link: https://bugs.gentoo.org/961769
    Link: https://bugs.gentoo.org/962600
    Co-authored-by: Stian Halseth <[email protected]>
    Cc: [email protected]
    Signed-off-by: Sam James <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PCI/AER: Fix missing uevent on recovery when a reset is requested [+ + +]
Author: Niklas Schnelle <[email protected]>
Date:   Thu Aug 7 15:55:38 2025 +0200

    PCI/AER: Fix missing uevent on recovery when a reset is requested
    
    commit bbf7d0468d0da71d76cc6ec9bc8a224325d07b6b upstream.
    
    Since commit 7b42d97e99d3 ("PCI/ERR: Always report current recovery
    status for udev") AER uses the result of error_detected() as parameter
    to pci_uevent_ers(). As pci_uevent_ers() however does not handle
    PCI_ERS_RESULT_NEED_RESET this results in a missing uevent for the
    beginning of recovery if drivers request a reset. Fix this by treating
    PCI_ERS_RESULT_NEED_RESET as beginning recovery.
    
    Fixes: 7b42d97e99d3 ("PCI/ERR: Always report current recovery status for udev")
    Signed-off-by: Niklas Schnelle <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Lukas Wunner <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

PCI/AER: Support errors introduced by PCIe r6.0 [+ + +]
Author: Lukas Wunner <[email protected]>
Date:   Wed Aug 27 15:41:09 2025 +0200

    PCI/AER: Support errors introduced by PCIe r6.0
    
    commit 6633875250b38b18b8638cf01e695de031c71f02 upstream.
    
    PCIe r6.0 defined five additional errors in the Uncorrectable Error
    Status, Mask and Severity Registers (PCIe r7.0 sec 7.8.4.2ff).
    
    lspci has been supporting them since commit 144b0911cc0b ("ls-ecaps:
    extend decode support for more fields for AER CE and UE status"):
    
      https://git.kernel.org/pub/scm/utils/pciutils/pciutils.git/commit/?id=144b0911cc0b
    
    Amend the AER driver to recognize them as well, instead of logging them as
    "Unknown Error Bit".
    
    Signed-off-by: Lukas Wunner <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Kuppuswamy Sathyanarayanan <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/21f1875b18d4078c99353378f37dcd6b994f6d4e.1756301211.git.lukas@wunner.de
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PCI/ERR: Fix uevent on failure to recover [+ + +]
Author: Lukas Wunner <[email protected]>
Date:   Wed Aug 13 07:11:02 2025 +0200

    PCI/ERR: Fix uevent on failure to recover
    
    commit 1cbc5e25fb70e942a7a735a1f3d6dd391afc9b29 upstream.
    
    Upon failure to recover from a PCIe error through AER, DPC or EDR, a
    uevent is sent to inform user space about disconnection of the bridge
    whose subordinate devices failed to recover.
    
    However the bridge itself is not disconnected.  Instead, a uevent should
    be sent for each of the subordinate devices.
    
    Only if the "bridge" happens to be a Root Complex Event Collector or
    Integrated Endpoint does it make sense to send a uevent for it (because
    there are no subordinate devices).
    
    Right now if there is a mix of subordinate devices with and without
    pci_error_handlers, a BEGIN_RECOVERY event is sent for those with
    pci_error_handlers but no FAILED_RECOVERY event is ever sent for them
    afterwards.  Fix it.
    
    Fixes: 856e1eb9bdd4 ("PCI/AER: Add uevents in AER and EEH error/resume")
    Signed-off-by: Lukas Wunner <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Cc: [email protected]  # v4.16+
    Link: https://patch.msgid.link/68fc527a380821b5d861dd554d2ce42cb739591c.1755008151.git.lukas@wunner.de
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV [+ + +]
Author: Niklas Schnelle <[email protected]>
Date:   Tue Aug 26 10:52:08 2025 +0200

    PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV
    
    commit 05703271c3cdcc0f2a8cf6ebdc45892b8ca83520 upstream.
    
    Before disabling SR-IOV via config space accesses to the parent PF,
    sriov_disable() first removes the PCI devices representing the VFs.
    
    Since commit 9d16947b7583 ("PCI: Add global pci_lock_rescan_remove()")
    such removal operations are serialized against concurrent remove and
    rescan using the pci_rescan_remove_lock. No such locking was ever added
    in sriov_disable() however. In particular when commit 18f9e9d150fc
    ("PCI/IOV: Factor out sriov_add_vfs()") factored out the PCI device
    removal into sriov_del_vfs() there was still no locking around the
    pci_iov_remove_virtfn() calls.
    
    On s390 the lack of serialization in sriov_disable() may cause double
    remove and list corruption with the below (amended) trace being observed:
    
      PSW:  0704c00180000000 0000000c914e4b38 (klist_put+56)
      GPRS: 000003800313fb48 0000000000000000 0000000100000001 0000000000000001
            00000000f9b520a8 0000000000000000 0000000000002fbd 00000000f4cc9480
            0000000000000001 0000000000000000 0000000000000000 0000000180692828
            00000000818e8000 000003800313fe2c 000003800313fb20 000003800313fad8
      #0 [3800313fb20] device_del at c9158ad5c
      #1 [3800313fb88] pci_remove_bus_device at c915105ba
      #2 [3800313fbd0] pci_iov_remove_virtfn at c9152f198
      #3 [3800313fc28] zpci_iov_remove_virtfn at c90fb67c0
      #4 [3800313fc60] zpci_bus_remove_device at c90fb6104
      #5 [3800313fca0] __zpci_event_availability at c90fb3dca
      #6 [3800313fd08] chsc_process_sei_nt0 at c918fe4a2
      #7 [3800313fd60] crw_collect_info at c91905822
      #8 [3800313fe10] kthread at c90feb390
      #9 [3800313fe68] __ret_from_fork at c90f6aa64
      #10 [3800313fe98] ret_from_fork at c9194f3f2.
    
    This is because in addition to sriov_disable() removing the VFs, the
    platform also generates hot-unplug events for the VFs. This being the
    reverse operation to the hotplug events generated by sriov_enable() and
    handled via pdev->no_vf_scan. And while the event processing takes
    pci_rescan_remove_lock and checks whether the struct pci_dev still exists,
    the lack of synchronization makes this checking racy.
    
    Other races may also be possible of course though given that this lack of
    locking persisted so long observable races seem very rare. Even on s390 the
    list corruption was only observed with certain devices since the platform
    events are only triggered by config accesses after the removal, so as long
    as the removal finished synchronously they would not race. Either way the
    locking is missing so fix this by adding it to the sriov_del_vfs() helper.
    
    Just like PCI rescan-remove, locking is also missing in sriov_add_vfs()
    including for the error case where pci_stop_and_remove_bus_device() is
    called without the PCI rescan-remove lock being held. Even in the non-error
    case, adding new PCI devices and buses should be serialized via the PCI
    rescan-remove lock. Add the necessary locking.
    
    Fixes: 18f9e9d150fc ("PCI/IOV: Factor out sriov_add_vfs()")
    Signed-off-by: Niklas Schnelle <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Benjamin Block <[email protected]>
    Reviewed-by: Farhan Ali <[email protected]>
    Reviewed-by: Julian Ruess <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PCI/sysfs: Ensure devices are powered for config reads [+ + +]
Author: Brian Norris <[email protected]>
Date:   Mon Oct 20 12:25:18 2025 -0400

    PCI/sysfs: Ensure devices are powered for config reads
    
    [ Upstream commit 48991e4935078b05f80616c75d1ee2ea3ae18e58 ]
    
    The "max_link_width", "current_link_speed", "current_link_width",
    "secondary_bus_number", and "subordinate_bus_number" sysfs files all access
    config registers, but they don't check the runtime PM state. If the device
    is in D3cold or a parent bridge is suspended, we may see -EINVAL, bogus
    values, or worse, depending on implementation details.
    
    Wrap these access in pci_config_pm_runtime_{get,put}() like most of the
    rest of the similar sysfs attributes.
    
    Notably, "max_link_speed" does not access config registers; it returns a
    cached value since d2bd39c0456b ("PCI: Store all PCIe Supported Link
    Speeds").
    
    Fixes: 56c1af4606f0 ("PCI: Add sysfs max_link_speed/width, current_link_speed/width, etc")
    Signed-off-by: Brian Norris <[email protected]>
    Signed-off-by: Brian Norris <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/20250924095711.v2.1.Ibb5b6ca1e2c059e04ec53140cd98a44f2684c668@changeid
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

PCI/sysfs: Use sysfs_emit() and sysfs_emit_at() in "show" functions [+ + +]
Author: Krzysztof WilczyƄski <[email protected]>
Date:   Mon Oct 20 12:25:17 2025 -0400

    PCI/sysfs: Use sysfs_emit() and sysfs_emit_at() in "show" functions
    
    [ Upstream commit ad025f8e46f3dbf09b1bf8d7a5b4ce858df74544 ]
    
    The sysfs_emit() and sysfs_emit_at() functions were introduced to make it
    less ambiguous which function is preferred when writing to the output
    buffer in a device attribute's "show" callback [1].
    
    Convert the PCI sysfs object "show" functions from sprintf(), snprintf()
    and scnprintf() to sysfs_emit() and sysfs_emit_at() accordingly, as the
    latter is aware of the PAGE_SIZE buffer and correctly returns the number of
    bytes written into the buffer.
    
    No functional change intended.
    
    [1] Documentation/filesystems/sysfs.rst
    
    [bhelgaas: drop dsm_label_utf16s_to_utf8s(), link speed/width changes]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Krzysztof WilczyƄski <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Stable-dep-of: 48991e493507 ("PCI/sysfs: Ensure devices are powered for config reads")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
PCI: Add sysfs attribute for device power state [+ + +]
Author: Maximilian Luz <[email protected]>
Date:   Mon Oct 20 12:25:16 2025 -0400

    PCI: Add sysfs attribute for device power state
    
    [ Upstream commit 80a129afb75cba8434fc5071bd6919172442315c ]
    
    While PCI power states D0-D3hot can be queried from user-space via lspci,
    D3cold cannot.  lspci cannot provide an accurate value when the device is
    in D3cold as it has to restore the device to D0 before it can access its
    power state via the configuration space, leading to it reporting D0 or
    another on-state. Thus lspci cannot be used to diagnose power consumption
    issues for devices that can enter D3cold or to ensure that devices properly
    enter D3cold at all.
    
    Add a new sysfs device attribute for the PCI power state, showing the
    current power state as seen by the kernel.
    
    [bhelgaas: drop READ_ONCE(), see discussion at the link]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Maximilian Luz <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Stable-dep-of: 48991e493507 ("PCI/sysfs: Ensure devices are powered for config reads")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

PCI: keystone: Use devm_request_irq() to free "ks-pcie-error-irq" on exit [+ + +]
Author: Siddharth Vadapalli <[email protected]>
Date:   Fri Sep 12 15:37:58 2025 +0530

    PCI: keystone: Use devm_request_irq() to free "ks-pcie-error-irq" on exit
    
    commit e51d05f523e43ce5d2bad957943a2b14f68078cd upstream.
    
    Commit under Fixes introduced the IRQ handler for "ks-pcie-error-irq".
    The interrupt is acquired using "request_irq()" but is never freed if
    the driver exits due to an error. Although the section in the driver that
    invokes "request_irq()" has moved around over time, the issue hasn't been
    addressed until now.
    
    Fix this by using "devm_request_irq()" which automatically frees the
    interrupt if the driver exits.
    
    Fixes: 025dd3daeda7 ("PCI: keystone: Add error IRQ handler")
    Reported-by: Jiri Slaby <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Siddharth Vadapalli <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

PCI: tegra194: Fix broken tegra_pcie_ep_raise_msi_irq() [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Mon Sep 22 16:08:24 2025 +0200

    PCI: tegra194: Fix broken tegra_pcie_ep_raise_msi_irq()
    
    commit b640d42a6ac9ba01abe65ec34f7c73aaf6758ab8 upstream.
    
    The pci_epc_raise_irq() supplies a MSI or MSI-X interrupt number in range
    (1-N), as per the pci_epc_raise_irq() kdoc, where N is 32 for MSI.
    
    But tegra_pcie_ep_raise_msi_irq() incorrectly uses the interrupt number as
    the MSI vector. This causes wrong MSI vector to be triggered, leading to
    the failure of PCI endpoint Kselftest MSI_TEST test case.
    
    To fix this issue, convert the interrupt number to MSI vector.
    
    Fixes: c57247f940e8 ("PCI: tegra: Add support for PCIe endpoint mode in Tegra194")
    Signed-off-by: Niklas Cassel <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

PCI: tegra194: Handle errors in BPMP response [+ + +]
Author: Vidya Sagar <[email protected]>
Date:   Mon Oct 20 12:22:37 2025 -0400

    PCI: tegra194: Handle errors in BPMP response
    
    [ Upstream commit f8c9ad46b00453a8c075453f3745f8d263f44834 ]
    
    The return value from tegra_bpmp_transfer() indicates the success or
    failure of the IPC transaction with BPMP. If the transaction succeeded, we
    also need to check the actual command's result code.
    
    If we don't have error handling for tegra_bpmp_transfer(), we will set the
    pcie->ep_state to EP_STATE_ENABLED even when the tegra_bpmp_transfer()
    command fails. Thus, the pcie->ep_state will get out of sync with reality,
    and any further PERST# assert + deassert will be a no-op and will not
    trigger the hardware initialization sequence.
    
    This is because pex_ep_event_pex_rst_deassert() checks the current
    pcie->ep_state, and does nothing if the current state is already
    EP_STATE_ENABLED.
    
    Thus, it is important to have error handling for tegra_bpmp_transfer(),
    such that the pcie->ep_state can not get out of sync with reality, so that
    we will try to initialize the hardware not only during the first PERST#
    assert + deassert, but also during any succeeding PERST# assert + deassert.
    
    One example where this fix is needed is when using a rock5b as host.
    During the initial PERST# assert + deassert (triggered by the bootloader on
    the rock5b) pex_ep_event_pex_rst_deassert() will get called, but for some
    unknown reason, the tegra_bpmp_transfer() call to initialize the PHY fails.
    Once Linux has been loaded on the rock5b, the PCIe driver will once again
    assert + deassert PERST#. However, without tegra_bpmp_transfer() error
    handling, this second PERST# assert + deassert will not trigger the
    hardware initialization sequence.
    
    With tegra_bpmp_transfer() error handling, the second PERST# assert +
    deassert will once again trigger the hardware to be initialized and this
    time the tegra_bpmp_transfer() succeeds.
    
    Fixes: c57247f940e8 ("PCI: tegra: Add support for PCIe endpoint mode in Tegra194")
    Signed-off-by: Vidya Sagar <[email protected]>
    [cassel: improve commit log]
    Signed-off-by: Niklas Cassel <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Jon Hunter <[email protected]>
    Acked-by: Thierry Reding <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

PCI: tegra: Fix devm_kcalloc() argument order for port->phys allocation [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Tue Aug 19 08:04:08 2025 -0700

    PCI: tegra: Fix devm_kcalloc() argument order for port->phys allocation
    
    [ Upstream commit e1a8805e5d263453ad76a4f50ab3b1c18ea07560 ]
    
    Fix incorrect argument order in devm_kcalloc() when allocating port->phys.
    The original call used sizeof(phy) as the number of elements and
    port->lanes as the element size, which is reversed.  While this happens to
    produce the correct total allocation size with current pointer size and
    lane counts, the argument order is wrong.
    
    Fixes: 6fe7c187e026 ("PCI: tegra: Support per-lane PHYs")
    Signed-off-by: Alok Tiwari <[email protected]>
    [mani: added Fixes tag]
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf session: Fix handling when buffer exceeds 2 GiB [+ + +]
Author: Leo Yan <[email protected]>
Date:   Fri Aug 8 14:24:40 2025 +0100

    perf session: Fix handling when buffer exceeds 2 GiB
    
    [ Upstream commit c17dda8013495d8132c976cbf349be9949d0fbd1 ]
    
    If a user specifies an AUX buffer larger than 2 GiB, the returned size
    may exceed 0x80000000. Since the err variable is defined as a signed
    32-bit integer, such a value overflows and becomes negative.
    
    As a result, the perf record command reports an error:
    
      0x146e8 [0x30]: failed to process type: 71 [Unknown error 183711232]
    
    Change the type of the err variable to a signed 64-bit integer to
    accommodate large buffer sizes correctly.
    
    Fixes: d5652d865ea734a1 ("perf session: Add ability to skip 4GiB or more")
    Reported-by: Tamas Zsoldos <[email protected]>
    Signed-off-by: Leo Yan <[email protected]>
    Acked-by: Namhyung Kim <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf subcmd: avoid crash in exclude_cmds when excludes is empty [+ + +]
Author: hupu <[email protected]>
Date:   Wed Sep 10 16:16:55 2025 +0800

    perf subcmd: avoid crash in exclude_cmds when excludes is empty
    
    [ Upstream commit a5edf3550f4260504b7e0ab3d40d13ffe924b773 ]
    
    When cross-compiling the perf tool for ARM64, `perf help` may crash
    with the following assertion failure:
    
      help.c:122: exclude_cmds: Assertion `cmds->names[ci] == NULL' failed.
    
    This happens when the perf binary is not named exactly "perf" or when
    multiple "perf-*" binaries exist in the same directory. In such cases,
    the `excludes` command list can be empty, which leads to the final
    assertion in exclude_cmds() being triggered.
    
    Add a simple guard at the beginning of exclude_cmds() to return early
    if excludes->cnt is zero, preventing the crash.
    
    Signed-off-by: hupu <[email protected]>
    Reported-by: Guilherme Amadio <[email protected]>
    Reviewed-by: Namhyung Kim <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Namhyung Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf util: Fix compression checks returning -1 as bool [+ + +]
Author: Yunseong Kim <[email protected]>
Date:   Fri Aug 22 16:25:08 2025 +0000

    perf util: Fix compression checks returning -1 as bool
    
    [ Upstream commit 43fa1141e2c1af79c91aaa4df03e436c415a6fc3 ]
    
    The lzma_is_compressed and gzip_is_compressed functions are declared
    to return a "bool" type, but in case of an error (e.g., file open
    failure), they incorrectly returned -1.
    
    A bool type is a boolean value that is either true or false.
    Returning -1 for a bool return type can lead to unexpected behavior
    and may violate strict type-checking in some compilers.
    
    Fix the return value to be false in error cases, ensuring the function
    adheres to its declared return type improves for preventing potential
    bugs related to type mismatch.
    
    Fixes: 4b57fd44b61beb51 ("perf tools: Add lzma_is_compressed function")
    Reviewed-by: Ian Rogers <[email protected]>
    Signed-off-by: Yunseong Kim <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Stephen Brennan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf: arm_spe: Prevent overflow in PERF_IDX2OFF() [+ + +]
Author: Leo Yan <[email protected]>
Date:   Wed Sep 17 18:41:39 2025 +0100

    perf: arm_spe: Prevent overflow in PERF_IDX2OFF()
    
    [ Upstream commit a29fea30dd93da16652930162b177941abd8c75e ]
    
    Cast nr_pages to unsigned long to avoid overflow when handling large
    AUX buffer sizes (>= 2 GiB).
    
    Fixes: d5d9696b0380 ("drivers/perf: Add support for ARMv8.2 Statistical Profiling Extension")
    Signed-off-by: Leo Yan <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pid: Add a judgment for ns null in pid_nr_ns [+ + +]
Author: gaoxiang17 <[email protected]>
Date:   Sat Aug 2 10:21:23 2025 +0800

    pid: Add a judgment for ns null in pid_nr_ns
    
    [ Upstream commit 006568ab4c5ca2309ceb36fa553e390b4aa9c0c7 ]
    
    __task_pid_nr_ns
            ns = task_active_pid_ns(current);
            pid_nr_ns(rcu_dereference(*task_pid_ptr(task, type)), ns);
                    if (pid && ns->level <= pid->level) {
    
    Sometimes null is returned for task_active_pid_ns. Then it will trigger kernel panic in pid_nr_ns.
    
    For example:
            Unable to handle kernel NULL pointer dereference at virtual address 0000000000000058
            Mem abort info:
            ESR = 0x0000000096000007
            EC = 0x25: DABT (current EL), IL = 32 bits
            SET = 0, FnV = 0
            EA = 0, S1PTW = 0
            FSC = 0x07: level 3 translation fault
            Data abort info:
            ISV = 0, ISS = 0x00000007, ISS2 = 0x00000000
            CM = 0, WnR = 0, TnD = 0, TagAccess = 0
            GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
            user pgtable: 4k pages, 39-bit VAs, pgdp=00000002175aa000
            [0000000000000058] pgd=08000002175ab003, p4d=08000002175ab003, pud=08000002175ab003, pmd=08000002175be003, pte=0000000000000000
            pstate: 834000c5 (Nzcv daIF +PAN -UAO +TCO +DIT -SSBS BTYPE=--)
            pc : __task_pid_nr_ns+0x74/0xd0
            lr : __task_pid_nr_ns+0x24/0xd0
            sp : ffffffc08001bd10
            x29: ffffffc08001bd10 x28: ffffffd4422b2000 x27: 0000000000000001
            x26: ffffffd442821168 x25: ffffffd442821000 x24: 00000f89492eab31
            x23: 00000000000000c0 x22: ffffff806f5693c0 x21: ffffff806f5693c0
            x20: 0000000000000001 x19: 0000000000000000 x18: 0000000000000000
            x17: 00000000529c6ef0 x16: 00000000529c6ef0 x15: 00000000023a1adc
            x14: 0000000000000003 x13: 00000000007ef6d8 x12: 001167c391c78800
            x11: 00ffffffffffffff x10: 0000000000000000 x9 : 0000000000000001
            x8 : ffffff80816fa3c0 x7 : 0000000000000000 x6 : 49534d702d535449
            x5 : ffffffc080c4c2c0 x4 : ffffffd43ee128c8 x3 : ffffffd43ee124dc
            x2 : 0000000000000000 x1 : 0000000000000001 x0 : ffffff806f5693c0
            Call trace:
            __task_pid_nr_ns+0x74/0xd0
            ...
            __handle_irq_event_percpu+0xd4/0x284
            handle_irq_event+0x48/0xb0
            handle_fasteoi_irq+0x160/0x2d8
            generic_handle_domain_irq+0x44/0x60
            gic_handle_irq+0x4c/0x114
            call_on_irq_stack+0x3c/0x74
            do_interrupt_handler+0x4c/0x84
            el1_interrupt+0x34/0x58
            el1h_64_irq_handler+0x18/0x24
            el1h_64_irq+0x68/0x6c
            account_kernel_stack+0x60/0x144
            exit_task_stack_account+0x1c/0x80
            do_exit+0x7e4/0xaf8
            ...
            get_signal+0x7bc/0x8d8
            do_notify_resume+0x128/0x828
            el0_svc+0x6c/0x70
            el0t_64_sync_handler+0x68/0xbc
            el0t_64_sync+0x1a8/0x1ac
            Code: 35fffe54 911a02a8 f9400108 b4000128 (b9405a69)
            ---[ end trace 0000000000000000 ]---
            Kernel panic - not syncing: Oops: Fatal exception in interrupt
    
    Signed-off-by: gaoxiang17 <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Reviewed-by: Baoquan He <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pinctrl: check the return value of pinmux_ops::get_function_name() [+ + +]
Author: Bartosz Golaszewski <[email protected]>
Date:   Tue Sep 2 13:59:10 2025 +0200

    pinctrl: check the return value of pinmux_ops::get_function_name()
    
    commit 4002ee98c022d671ecc1e4a84029e9ae7d8a5603 upstream.
    
    While the API contract in docs doesn't specify it explicitly, the
    generic implementation of the get_function_name() callback from struct
    pinmux_ops - pinmux_generic_get_function_name() - can fail and return
    NULL. This is already checked in pinmux_check_ops() so add a similar
    check in pinmux_func_name_to_selector() instead of passing the returned
    pointer right down to strcmp() where the NULL can get dereferenced. This
    is normal operation when adding new pinfunctions.
    
    Cc: [email protected]
    Tested-by: Neil Armstrong <[email protected]>
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

pinctrl: meson-gxl: add missing i2c_d pinmux [+ + +]
Author: Da Xue <[email protected]>
Date:   Thu Aug 21 19:33:34 2025 -0400

    pinctrl: meson-gxl: add missing i2c_d pinmux
    
    [ Upstream commit d8c2a9edd181f0cc4a66eec954b3d8f6a1d954a7 ]
    
    Amlogic GXL has 4 I2C attached to gpio-periphs. I2C_D is on GPIOX_10/11.
    
    Add the relevant func 3 pinmux per the datasheet for S805X/S905X/S905D.
    
    Fixes: 0f15f500ff2c ("pinctrl: meson: Add GXL pinctrl definitions")
    Signed-off-by: Da Xue <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: renesas: Use int type to store negative error codes [+ + +]
Author: Qianfeng Rong <[email protected]>
Date:   Sun Aug 31 16:49:58 2025 +0800

    pinctrl: renesas: Use int type to store negative error codes
    
    [ Upstream commit 9f062fc5b0ff44550088912ab89f9da40226a826 ]
    
    Change the 'ret' variable in sh_pfc_pinconf_group_set() from unsigned
    int to int, as it needs to store either negative error codes or zero
    returned by sh_pfc_pinconf_set().
    
    No effect on runtime.
    
    Signed-off-by: Qianfeng Rong <[email protected]>
    Fixes: d0593c363f04ccc4 ("pinctrl: sh-pfc: Propagate errors on group config")
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

PM: sleep: core: Clear power.must_resume in noirq suspend error path [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Tue Sep 2 15:55:45 2025 +0200

    PM: sleep: core: Clear power.must_resume in noirq suspend error path
    
    [ Upstream commit be82483d1b60baf6747884bd74cb7de484deaf76 ]
    
    If system suspend is aborted in the "noirq" phase (for instance, due to
    an error returned by one of the device callbacks), power.is_noirq_suspended
    will not be set for some devices and device_resume_noirq() will return
    early for them.  Consequently, noirq resume callbacks will not run for
    them at all because the noirq suspend callbacks have not run for them
    yet.
    
    If any of them has power.must_resume set and late suspend has been
    skipped for it (due to power.smart_suspend), early resume should be
    skipped for it either, or its state may become inconsistent (for
    instance, if the early resume assumes that it will always follow
    noirq resume).
    
    Make that happen by clearing power.must_resume in device_resume_noirq()
    for devices with power.is_noirq_suspended clear that have been left in
    suspend by device_suspend_late(), which will subsequently cause
    device_resume_early() to leave the device in suspend and avoid
    changing its state.
    
    Fixes: 0d4b54c6fee8 ("PM / core: Add LEAVE_SUSPENDED driver flag")
    Link: https://lore.kernel.org/linux-pm/[email protected]/
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Reviewed-by: Ulf Hansson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
pps: fix warning in pps_register_cdev when register device fail [+ + +]
Author: Wang Liang <[email protected]>
Date:   Sat Aug 30 15:50:23 2025 +0800

    pps: fix warning in pps_register_cdev when register device fail
    
    [ Upstream commit b0531cdba5029f897da5156815e3bdafe1e9b88d ]
    
    Similar to previous commit 2a934fdb01db ("media: v4l2-dev: fix error
    handling in __video_register_device()"), the release hook should be set
    before device_register(). Otherwise, when device_register() return error
    and put_device() try to callback the release function, the below warning
    may happen.
    
      ------------[ cut here ]------------
      WARNING: CPU: 1 PID: 4760 at drivers/base/core.c:2567 device_release+0x1bd/0x240 drivers/base/core.c:2567
      Modules linked in:
      CPU: 1 UID: 0 PID: 4760 Comm: syz.4.914 Not tainted 6.17.0-rc3+ #1 NONE
      RIP: 0010:device_release+0x1bd/0x240 drivers/base/core.c:2567
      Call Trace:
       <TASK>
       kobject_cleanup+0x136/0x410 lib/kobject.c:689
       kobject_release lib/kobject.c:720 [inline]
       kref_put include/linux/kref.h:65 [inline]
       kobject_put+0xe9/0x130 lib/kobject.c:737
       put_device+0x24/0x30 drivers/base/core.c:3797
       pps_register_cdev+0x2da/0x370 drivers/pps/pps.c:402
       pps_register_source+0x2f6/0x480 drivers/pps/kapi.c:108
       pps_tty_open+0x190/0x310 drivers/pps/clients/pps-ldisc.c:57
       tty_ldisc_open+0xa7/0x120 drivers/tty/tty_ldisc.c:432
       tty_set_ldisc+0x333/0x780 drivers/tty/tty_ldisc.c:563
       tiocsetd drivers/tty/tty_io.c:2429 [inline]
       tty_ioctl+0x5d1/0x1700 drivers/tty/tty_io.c:2728
       vfs_ioctl fs/ioctl.c:51 [inline]
       __do_sys_ioctl fs/ioctl.c:598 [inline]
       __se_sys_ioctl fs/ioctl.c:584 [inline]
       __x64_sys_ioctl+0x194/0x210 fs/ioctl.c:584
       do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
       do_syscall_64+0x5f/0x2a0 arch/x86/entry/syscall_64.c:94
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
       </TASK>
    
    Before commit c79a39dc8d06 ("pps: Fix a use-after-free"),
    pps_register_cdev() call device_create() to create pps->dev, which will
    init dev->release to device_create_release(). Now the comment is outdated,
    just remove it.
    
    Thanks for the reminder from Calvin Owens, 'kfree_pps' should be removed
    in pps_register_source() to avoid a double free in the failure case.
    
    Link: https://lore.kernel.org/all/[email protected]/
    Fixes: c79a39dc8d06 ("pps: Fix a use-after-free")
    Signed-off-by: Wang Liang <[email protected]>
    Reviewed-By: Calvin Owens <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pwm: berlin: Fix wrong register in suspend/resume [+ + +]
Author: Jisheng Zhang <[email protected]>
Date:   Tue Aug 19 19:42:24 2025 +0800

    pwm: berlin: Fix wrong register in suspend/resume
    
    commit 3a4b9d027e4061766f618292df91760ea64a1fcc upstream.
    
    The 'enable' register should be BERLIN_PWM_EN rather than
    BERLIN_PWM_ENABLE, otherwise, the driver accesses wrong address, there
    will be cpu exception then kernel panic during suspend/resume.
    
    Fixes: bbf0722c1c66 ("pwm: berlin: Add suspend/resume support")
    Signed-off-by: Jisheng Zhang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: [email protected]
    [ukleinek: backport to 5.10]
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

pwm: tiehrpwm: Fix corner case in clock divisor calculation [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Mon Aug 11 18:01:02 2025 +0200

    pwm: tiehrpwm: Fix corner case in clock divisor calculation
    
    [ Upstream commit 00f83f0e07e44e2f1fb94b223e77ab7b18ee2d7d ]
    
    The function set_prescale_div() is responsible for calculating the clock
    divisor settings such that the input clock rate is divided down such that
    the required period length is at most 0x10000 clock ticks. If period_cycles
    is an integer multiple of 0x10000, the divisor period_cycles / 0x10000 is
    good enough. So round up in the calculation of the required divisor and
    compare it using >= instead of >.
    
    Fixes: 19891b20e7c2 ("pwm: pwm-tiehrpwm: PWM driver support for EHRPWM")
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Link: https://lore.kernel.org/r/85488616d7bfcd9c32717651d0be7e330e761b9c.1754927682.git.u.kleine-koenig@baylibre.com
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
RDMA/cm: Rate limit destroy CM ID timeout error message [+ + +]
Author: HĂ„kon Bugge <[email protected]>
Date:   Fri Sep 12 12:05:20 2025 +0200

    RDMA/cm: Rate limit destroy CM ID timeout error message
    
    [ Upstream commit 2bbe1255fcf19c5eb300efb6cb5ad98d66fdae2e ]
    
    When the destroy CM ID timeout kicks in, you typically get a storm of
    them which creates a log flooding. Hence, change pr_err() to
    pr_err_ratelimited() in cm_destroy_id_wait_timeout().
    
    Fixes: 96d9cbe2f2ff ("RDMA/cm: add timeout to cm_destroy_id wait")
    Signed-off-by: HĂ„kon Bugge <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Zhu Yanjun <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/core: Resolve MAC of next-hop device without ARP support [+ + +]
Author: Parav Pandit <[email protected]>
Date:   Tue Sep 16 14:11:01 2025 +0300

    RDMA/core: Resolve MAC of next-hop device without ARP support
    
    [ Upstream commit 200651b9b8aadfbbec852f0e5d042d9abe75e2ab ]
    
    Currently, if the next-hop netdevice does not support ARP resolution,
    the destination MAC address is silently set to zero without reporting
    an error. This leads to incorrect behavior and may result in packet
    transmission failures.
    
    Fix this by deferring MAC resolution to the IP stack via neighbour
    lookup, allowing proper resolution or error reporting as appropriate.
    
    Fixes: 7025fcd36bd6 ("IB: address translation to map IP toIB addresses (GIDs)")
    Signed-off-by: Parav Pandit <[email protected]>
    Reviewed-by: Vlad Dumitrescu <[email protected]>
    Signed-off-by: Edward Srouji <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/siw: Always report immediate post SQ errors [+ + +]
Author: Bernard Metzler <[email protected]>
Date:   Tue Sep 23 16:45:36 2025 +0200

    RDMA/siw: Always report immediate post SQ errors
    
    [ Upstream commit fdd0fe94d68649322e391c5c27dd9f436b4e955e ]
    
    In siw_post_send(), any immediate error encountered during processing of
    the work request list must be reported to the caller, even if previous
    work requests in that list were just accepted and added to the send queue.
    
    Not reporting those errors confuses the caller, which would wait
    indefinitely for the failing and potentially subsequently aborted work
    requests completion.
    
    This fixes a case where immediate errors were overwritten by subsequent
    code in siw_post_send().
    
    Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
    Link: https://patch.msgid.link/r/[email protected]
    Suggested-by: Stefan Metzmacher <[email protected]>
    Signed-off-by: Bernard Metzler <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
regmap: Remove superfluous check for !config in __regmap_init() [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Wed Aug 13 15:07:18 2025 +0200

    regmap: Remove superfluous check for !config in __regmap_init()
    
    [ Upstream commit 5c36b86d2bf68fbcad16169983ef7ee8c537db59 ]
    
    The first thing __regmap_init() do is check if config is non-NULL,
    so there is no need to check for this again later.
    
    Fixes: d77e745613680c54 ("regmap: Add bulk read/write callbacks into regmap_config")
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Link: https://patch.msgid.link/a154d9db0f290dda96b48bd817eb743773e846e1.1755090330.git.geert+renesas@glider.be
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
remoteproc: qcom: q6v5: Avoid disabling handover IRQ twice [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Wed Aug 20 18:02:33 2025 +0200

    remoteproc: qcom: q6v5: Avoid disabling handover IRQ twice
    
    [ Upstream commit 110be46f5afe27b66caa2d12473a84cd397b1925 ]
    
    enable_irq() and disable_irq() are reference counted, so we must make sure
    that each enable_irq() is always paired with a single disable_irq(). If we
    call disable_irq() twice followed by just a single enable_irq(), the IRQ
    will remain disabled forever.
    
    For the error handling path in qcom_q6v5_wait_for_start(), disable_irq()
    will end up being called twice, because disable_irq() also happens in
    qcom_q6v5_unprepare() when rolling back the call to qcom_q6v5_prepare().
    
    Fix this by dropping disable_irq() in qcom_q6v5_wait_for_start(). Since
    qcom_q6v5_prepare() is the function that calls enable_irq(), it makes more
    sense to have the rollback handled always by qcom_q6v5_unprepare().
    
    Fixes: 3b415c8fb263 ("remoteproc: q6v5: Extract common resource handling")
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Stephan Gerhold <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
Revert "net/mlx5e: Update and set Xon/Xoff upon MTU set" [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Mon Sep 29 11:15:29 2025 -0700

    Revert "net/mlx5e: Update and set Xon/Xoff upon MTU set"
    
    [ Upstream commit 6f5dacf88a32b3fd8b52c8ea781bf188c42aaa95 ]
    
    This reverts commit ceddedc969f0532b7c62ca971ee50d519d2bc0cb.
    
    Commit in question breaks the mapping of PGs to pools for some SKUs.
    Specifically multi-host NICs seem to be shipped with a custom buffer
    configuration which maps the lossy PG to pool 4. But the bad commit
    overrides this with pool 0 which does not have sufficient buffer space
    reserved. Resulting in ~40% packet loss. The commit also breaks BMC /
    OOB connection completely (100% packet loss).
    
    Revert, similarly to commit 3fbfe251cc9f ("Revert "net/mlx5e: Update and
    set Xon/Xoff upon port speed set""). The breakage is exactly the same,
    the only difference is that quoted commit would break the NIC immediately
    on boot, and the currently reverted commit only when MTU is changed.
    
    Note: "good" kernels do not restore the configuration, so downgrade isn't
    enough to recover machines. A NIC power cycle seems to be necessary to
    return to a healthy state (or overriding the relevant registers using
    a custom patch).
    
    Fixes: ceddedc969f0 ("net/mlx5e: Update and set Xon/Xoff upon MTU set")
    Signed-off-by: Jakub Kicinski <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rseq/selftests: Use weak symbol reference, not definition, to link with glibc [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Tue Aug 19 15:29:44 2025 -0700

    rseq/selftests: Use weak symbol reference, not definition, to link with glibc
    
    commit a001cd248ab244633c5fabe4f7c707e13fc1d1cc upstream.
    
    Add "extern" to the glibc-defined weak rseq symbols to convert the rseq
    selftest's usage from weak symbol definitions to weak symbol _references_.
    Effectively re-defining the glibc symbols wreaks havoc when building with
    -fno-common, e.g. generates segfaults when running multi-threaded programs,
    as dynamically linked applications end up with multiple versions of the
    symbols.
    
    Building with -fcommon, which until recently has the been the default for
    GCC and clang, papers over the bug by allowing the linker to resolve the
    weak/tentative definition to glibc's "real" definition.
    
    Note, the symbol itself (or rather its address), not the value of the
    symbol, is set to 0/NULL for unresolved weak symbol references, as the
    symbol doesn't exist and thus can't have a value.  Check for a NULL rseq
    size pointer to handle the scenario where the test is statically linked
    against a libc that doesn't support rseq in any capacity.
    
    Fixes: 3bcbc20942db ("selftests/rseq: Play nice with binaries statically linked against glibc 2.35+")
    Reported-by: Thomas Gleixner <[email protected]>
    Suggested-by: Florian Weimer <[email protected]>
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Mathieu Desnoyers <[email protected]>
    Cc: [email protected]
    Closes: https://lore.kernel.org/all/87frdoybk4.ffs@tglx
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
rtc: interface: Ensure alarm irq is enabled when UIE is enabled [+ + +]
Author: Esben Haabendal <[email protected]>
Date:   Fri May 16 09:23:39 2025 +0200

    rtc: interface: Ensure alarm irq is enabled when UIE is enabled
    
    commit 9db26d5855d0374d4652487bfb5aacf40821c469 upstream.
    
    When setting a normal alarm, user-space is responsible for using
    RTC_AIE_ON/RTC_AIE_OFF to control if alarm irq should be enabled.
    
    But when RTC_UIE_ON is used, interrupts must be enabled so that the
    requested irq events are generated.
    When RTC_UIE_OFF is used, alarm irq is disabled if there are no other
    alarms queued, so this commit brings symmetry to that.
    
    Signed-off-by: Esben Haabendal <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

rtc: interface: Fix long-standing race when setting alarm [+ + +]
Author: Esben Haabendal <[email protected]>
Date:   Fri May 16 09:23:35 2025 +0200

    rtc: interface: Fix long-standing race when setting alarm
    
    commit 795cda8338eab036013314dbc0b04aae728880ab upstream.
    
    As described in the old comment dating back to
    commit 6610e0893b8b ("RTC: Rework RTC code to use timerqueue for events")
    from 2010, we have been living with a race window when setting alarm
    with an expiry in the near future (i.e. next second).
    With 1 second resolution, it can happen that the second ticks after the
    check for the timer having expired, but before the alarm is actually set.
    When this happen, no alarm IRQ is generated, at least not with some RTC
    chips (isl12022 is an example of this).
    
    With UIE RTC timer being implemented on top of alarm irq, being re-armed
    every second, UIE will occasionally fail to work, as an alarm irq lost
    due to this race will stop the re-arming loop.
    
    For now, I have limited the additional expiry check to only be done for
    alarms set to next seconds. I expect it should be good enough, although I
    don't know if we can now for sure that systems with loads could end up
    causing the same problems for alarms set 2 seconds or even longer in the
    future.
    
    I haven't been able to reproduce the problem with this check in place.
    
    Cc: [email protected]
    Signed-off-by: Esben Haabendal <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

rtc: x1205: Fix Xicor X1205 vendor prefix [+ + +]
Author: Rob Herring (Arm) <[email protected]>
Date:   Thu Aug 21 16:57:02 2025 -0500

    rtc: x1205: Fix Xicor X1205 vendor prefix
    
    [ Upstream commit 606d19ee37de3a72f1b6e95a4ea544f6f20dbb46 ]
    
    The vendor for the X1205 RTC is not Xircom, but Xicor which was acquired
    by Intersil. Since the I2C subsystem drops the vendor prefix for driver
    matching, the vendor prefix hasn't mattered.
    
    Fixes: 6875404fdb44 ("rtc: x1205: Add DT probing support")
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Reviewed-by: Linus Walleij <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

 
sched/balancing: Rename newidle_balance() => sched_balance_newidle() [+ + +]
Author: Ingo Molnar <[email protected]>
Date:   Fri Mar 8 12:18:16 2024 +0100

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

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

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

sched/fair: Trivial correction of the newidle_balance() comment [+ + +]
Author: Barry Song <[email protected]>
Date:   Thu Dec 3 11:06:41 2020 +1300

    sched/fair: Trivial correction of the newidle_balance() comment
    
    [ Upstream commit 5b78f2dc315354c05300795064f587366a02c6ff ]
    
    idle_balance() has been renamed to newidle_balance(). To differentiate
    with nohz_idle_balance, it seems refining the comment will be helpful
    for the readers of the code.
    
    Signed-off-by: Barry Song <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Stable-dep-of: 17e3e88ed0b6 ("sched/fair: Fix pelt lost idle time detection")
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: hpsa: Fix potential memory leak in hpsa_big_passthru_ioctl() [+ + +]
Author: Thorsten Blum <[email protected]>
Date:   Fri Sep 19 11:26:37 2025 +0200

    scsi: hpsa: Fix potential memory leak in hpsa_big_passthru_ioctl()
    
    commit b81296591c567b12d3873b05a37b975707959b94 upstream.
    
    Replace kmalloc() followed by copy_from_user() with memdup_user() to fix
    a memory leak that occurs when copy_from_user(buff[sg_used],,) fails and
    the 'cleanup1:' path does not free the memory for 'buff[sg_used]'. Using
    memdup_user() avoids this by freeing the memory internally.
    
    Since memdup_user() already allocates memory, use kzalloc() in the else
    branch instead of manually zeroing 'buff[sg_used]' using memset(0).
    
    Cc: [email protected]
    Fixes: edd163687ea5 ("[SCSI] hpsa: add driver for HP Smart Array controllers.")
    Signed-off-by: Thorsten Blum <[email protected]>
    Acked-by: Don Brace <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

scsi: libsas: Add sas_task_find_rq() [+ + +]
Author: John Garry <[email protected]>
Date:   Tue Oct 18 19:15:57 2022 +0800

    scsi: libsas: Add sas_task_find_rq()
    
    [ Upstream commit a9ee3f840646e2ec419c734e592ffe997195435e ]
    
    blk-mq already provides a unique tag per request. Some libsas LLDDs - like
    hisi_sas - already use this tag as the unique per-I/O HW tag.
    
    Add a common function to provide the request associated with a sas_task for
    all libsas LLDDs.
    
    Signed-off-by: John Garry <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Jack Wang <[email protected]>
    Reviewed-by: Jason Yan <[email protected]>
    Reviewed-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Stable-dep-of: 60cd16a3b743 ("scsi: mvsas: Fix use-after-free bugs in mvs_work_queue")
    Signed-off-by: Sasha Levin <[email protected]>

scsi: mpt3sas: Fix crash in transport port remove by using ioc_info() [+ + +]
Author: Ranjan Kumar <[email protected]>
Date:   Mon Sep 22 15:21:10 2025 +0530

    scsi: mpt3sas: Fix crash in transport port remove by using ioc_info()
    
    [ Upstream commit 1703fe4f8ae50d1fb6449854e1fcaed1053e3a14 ]
    
    During mpt3sas_transport_port_remove(), messages were logged with
    dev_printk() against &mpt3sas_port->port->dev. At this point the SAS
    transport device may already be partially unregistered or freed, leading
    to a crash when accessing its struct device.
    
    Using ioc_info(), which logs via the PCI device (ioc->pdev->dev),
    guaranteed to remain valid until driver removal.
    
    [83428.295776] Oops: general protection fault, probably for non-canonical address 0x6f702f323a33312d: 0000 [#1] SMP NOPTI
    [83428.295785] CPU: 145 UID: 0 PID: 113296 Comm: rmmod Kdump: loaded Tainted: G           OE       6.16.0-rc1+ #1 PREEMPT(voluntary)
    [83428.295792] Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
    [83428.295795] Hardware name: Dell Inc. Precision 7875 Tower/, BIOS 89.1.67 02/23/2024
    [83428.295799] RIP: 0010:__dev_printk+0x1f/0x70
    [83428.295805] Code: 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 49 89 d1 48 85 f6 74 52 4c 8b 46 50 4d 85 c0 74 1f 48 8b 46 68 48 85 c0 74 22 <48> 8b 08 0f b6 7f 01 48 c7 c2 db e8 42 ad 83 ef 30 e9 7b f8 ff ff
    [83428.295813] RSP: 0018:ff85aeafc3137bb0 EFLAGS: 00010206
    [83428.295817] RAX: 6f702f323a33312d RBX: ff4290ee81292860 RCX: 5000cca25103be32
    [83428.295820] RDX: ff85aeafc3137bb8 RSI: ff4290eeb1966c00 RDI: ffffffffc1560845
    [83428.295823] RBP: ff85aeafc3137c18 R08: 74726f702f303a33 R09: ff85aeafc3137bb8
    [83428.295826] R10: ff85aeafc3137b18 R11: ff4290f5bd60fe68 R12: ff4290ee81290000
    [83428.295830] R13: ff4290ee6e345de0 R14: ff4290ee81290000 R15: ff4290ee6e345e30
    [83428.295833] FS:  00007fd9472a6740(0000) GS:ff4290f5ce96b000(0000) knlGS:0000000000000000
    [83428.295837] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [83428.295840] CR2: 00007f242b4db238 CR3: 00000002372b8006 CR4: 0000000000771ef0
    [83428.295844] PKRU: 55555554
    [83428.295846] Call Trace:
    [83428.295848]  <TASK>
    [83428.295850]  _dev_printk+0x5c/0x80
    [83428.295857]  ? srso_alias_return_thunk+0x5/0xfbef5
    [83428.295863]  mpt3sas_transport_port_remove+0x1c7/0x420 [mpt3sas]
    [83428.295882]  _scsih_remove_device+0x21b/0x280 [mpt3sas]
    [83428.295894]  ? _scsih_expander_node_remove+0x108/0x140 [mpt3sas]
    [83428.295906]  ? srso_alias_return_thunk+0x5/0xfbef5
    [83428.295910]  mpt3sas_device_remove_by_sas_address.part.0+0x8f/0x110 [mpt3sas]
    [83428.295921]  _scsih_expander_node_remove+0x129/0x140 [mpt3sas]
    [83428.295933]  _scsih_expander_node_remove+0x6a/0x140 [mpt3sas]
    [83428.295944]  scsih_remove+0x3f0/0x4a0 [mpt3sas]
    [83428.295957]  pci_device_remove+0x3b/0xb0
    [83428.295962]  device_release_driver_internal+0x193/0x200
    [83428.295968]  driver_detach+0x44/0x90
    [83428.295971]  bus_remove_driver+0x69/0xf0
    [83428.295975]  pci_unregister_driver+0x2a/0xb0
    [83428.295979]  _mpt3sas_exit+0x1f/0x300 [mpt3sas]
    [83428.295991]  __do_sys_delete_module.constprop.0+0x174/0x310
    [83428.295997]  ? srso_alias_return_thunk+0x5/0xfbef5
    [83428.296000]  ? __x64_sys_getdents64+0x9a/0x110
    [83428.296005]  ? srso_alias_return_thunk+0x5/0xfbef5
    [83428.296009]  ? syscall_trace_enter+0xf6/0x1b0
    [83428.296014]  do_syscall_64+0x7b/0x2c0
    [83428.296019]  ? srso_alias_return_thunk+0x5/0xfbef5
    [83428.296023]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    Fixes: f92363d12359 ("[SCSI] mpt3sas: add new driver supporting 12GB SAS")
    Signed-off-by: Ranjan Kumar <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: mvsas: Delete mvs_tag_init() [+ + +]
Author: John Garry <[email protected]>
Date:   Tue Oct 18 19:16:02 2022 +0800

    scsi: mvsas: Delete mvs_tag_init()
    
    [ Upstream commit ffc9f9bf3f14876d019f67ef17d41138802529a8 ]
    
    All mvs_tag_init() does is zero the tag bitmap, but this is already done
    with the kzalloc() call to alloc the tags, so delete this unneeded
    function.
    
    Signed-off-by: John Garry <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Damien Le Moal <[email protected]>
    Reviewed-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Stable-dep-of: 60cd16a3b743 ("scsi: mvsas: Fix use-after-free bugs in mvs_work_queue")
    Signed-off-by: Sasha Levin <[email protected]>

scsi: mvsas: Fix use-after-free bugs in mvs_work_queue [+ + +]
Author: Duoming Zhou <[email protected]>
Date:   Sat Sep 20 21:42:01 2025 +0800

    scsi: mvsas: Fix use-after-free bugs in mvs_work_queue
    
    [ Upstream commit 60cd16a3b7439ccb699d0bf533799eeb894fd217 ]
    
    During the detaching of Marvell's SAS/SATA controller, the original code
    calls cancel_delayed_work() in mvs_free() to cancel the delayed work
    item mwq->work_q. However, if mwq->work_q is already running, the
    cancel_delayed_work() may fail to cancel it. This can lead to
    use-after-free scenarios where mvs_free() frees the mvs_info while
    mvs_work_queue() is still executing and attempts to access the
    already-freed mvs_info.
    
    A typical race condition is illustrated below:
    
    CPU 0 (remove)            | CPU 1 (delayed work callback)
    mvs_pci_remove()          |
      mvs_free()              | mvs_work_queue()
        cancel_delayed_work() |
          kfree(mvi)          |
                              |   mvi-> // UAF
    
    Replace cancel_delayed_work() with cancel_delayed_work_sync() to ensure
    that the delayed work item is properly canceled and any executing
    delayed work item completes before the mvs_info is deallocated.
    
    This bug was found by static analysis.
    
    Fixes: 20b09c2992fe ("[SCSI] mvsas: add support for 94xx; layout change; bug fixes")
    Signed-off-by: Duoming Zhou <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: mvsas: Use sas_task_find_rq() for tagging [+ + +]
Author: John Garry <[email protected]>
Date:   Tue Oct 18 19:16:03 2022 +0800

    scsi: mvsas: Use sas_task_find_rq() for tagging
    
    [ Upstream commit 2acf97f199f9eba8321390325519e9b6bff60108 ]
    
    The request associated with a SCSI command coming from the block layer has
    a unique tag, so use that when possible for getting a slot.
    
    Unfortunately we don't support reserved commands in the SCSI midlayer yet.
    As such, SMP tasks - as an example - will not have a request associated, so
    in the interim continue to manage those tags for that type of sas_task
    internally.
    
    We reserve an arbitrary 4 tags for these internal tags. Indeed, we already
    decrement MVS_RSVD_SLOTS by 2 for the shost can_queue when flag
    MVF_FLAG_SOC is set. This change was made in commit 20b09c2992fe ("[SCSI]
    mvsas: add support for 94xx; layout change; bug fixes"), but what those 2
    slots are used for is not obvious.
    
    Also make the tag management functions static, where possible.
    
    Signed-off-by: John Garry <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Stable-dep-of: 60cd16a3b743 ("scsi: mvsas: Fix use-after-free bugs in mvs_work_queue")
    Signed-off-by: Sasha Levin <[email protected]>

scsi: myrs: Fix dma_alloc_coherent() error check [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Fri Jul 25 10:31:06 2025 +0200

    scsi: myrs: Fix dma_alloc_coherent() error check
    
    [ Upstream commit edb35b1ffc686fd9b5a91902f034eb9f4d2c9f6b ]
    
    Check for NULL return value with dma_alloc_coherent(), because DMA
    address is not always set by dma_alloc_coherent() on failure.
    
    Fixes: 77266186397c ("scsi: myrs: Add Mylex RAID controller (SCSI interface)")
    Signed-off-by: Thomas Fourier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: pm80xx: Fix array-index-out-of-of-bounds on rmmod [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Thu Aug 14 19:32:17 2025 +0200

    scsi: pm80xx: Fix array-index-out-of-of-bounds on rmmod
    
    [ Upstream commit 251be2f6037fb7ab399f68cd7428ff274133d693 ]
    
    Since commit f7b705c238d1 ("scsi: pm80xx: Set phy_attached to zero when
    device is gone") UBSAN reports:
    
      UBSAN: array-index-out-of-bounds in drivers/scsi/pm8001/pm8001_sas.c:786:17
      index 28 is out of range for type 'pm8001_phy [16]'
    
    on rmmod when using an expander.
    
    For a direct attached device, attached_phy contains the local phy id.
    For a device behind an expander, attached_phy contains the remote phy
    id, not the local phy id.
    
    I.e. while pm8001_ha will have pm8001_ha->chip->n_phy local phys, for a
    device behind an expander, attached_phy can be much larger than
    pm8001_ha->chip->n_phy (depending on the amount of phys of the
    expander).
    
    E.g. on my system pm8001_ha has 8 phys with phy ids 0-7.  One of the
    ports has an expander connected.  The expander has 31 phys with phy ids
    0-30.
    
    The pm8001_ha->phy array only contains the phys of the HBA.  It does not
    contain the phys of the expander.  Thus, it is wrong to use attached_phy
    to index the pm8001_ha->phy array for a device behind an expander.
    
    Thus, we can only clear phy_attached for devices that are directly
    attached.
    
    Fixes: f7b705c238d1 ("scsi: pm80xx: Set phy_attached to zero when device is gone")
    Reviewed-by: Igor Pylypiv <[email protected]>
    Signed-off-by: Niklas Cassel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Damien Le Moal <[email protected]>
    Tested-by: Damien Le Moal <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: target: target_core_configfs: Add length check to avoid buffer overflow [+ + +]
Author: Wang Haoran <[email protected]>
Date:   Sat Sep 20 15:44:41 2025 +0800

    scsi: target: target_core_configfs: Add length check to avoid buffer overflow
    
    commit 27e06650a5eafe832a90fd2604f0c5e920857fae upstream.
    
    A buffer overflow arises from the usage of snprintf to write into the
    buffer "buf" in target_lu_gp_members_show function located in
    /drivers/target/target_core_configfs.c. This buffer is allocated with
    size LU_GROUP_NAME_BUF (256 bytes).
    
    snprintf(...) formats multiple strings into buf with the HBA name
    (hba->hba_group.cg_item), a slash character, a devicename (dev->
    dev_group.cg_item) and a newline character, the total formatted string
    length may exceed the buffer size of 256 bytes.
    
    Since snprintf() returns the total number of bytes that would have been
    written (the length of %s/%sn ), this value may exceed the buffer length
    (256 bytes) passed to memcpy(), this will ultimately cause function
    memcpy reporting a buffer overflow error.
    
    An additional check of the return value of snprintf() can avoid this
    buffer overflow.
    
    Reported-by: Wang Haoran <[email protected]>
    Reported-by: ziiiro <[email protected]>
    Signed-off-by: Wang Haoran <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
 
sctp: avoid NULL dereference when chunk data buffer is missing [+ + +]
Author: Alexey Simakov <[email protected]>
Date:   Tue Oct 21 16:00:36 2025 +0300

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

sctp: Fix MAC comparison to be constant-time [+ + +]
Author: Eric Biggers <[email protected]>
Date:   Mon Aug 18 13:54:23 2025 -0700

    sctp: Fix MAC comparison to be constant-time
    
    commit dd91c79e4f58fbe2898dac84858033700e0e99fb upstream.
    
    To prevent timing attacks, MACs need to be compared in constant time.
    Use the appropriate helper function for this.
    
    Fixes: bbd0d59809f9 ("[SCTP]: Implement the receive and verification of AUTH chunk")
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: [email protected]
    Signed-off-by: Eric Biggers <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
selftests: arm64: Check fread return value in exec_target [+ + +]
Author: Bala-Vignesh-Reddy <[email protected]>
Date:   Fri Aug 8 13:38:30 2025 +0530

    selftests: arm64: Check fread return value in exec_target
    
    [ Upstream commit a679e5683d3eef22ca12514ff8784b2b914ebedc ]
    
    Fix -Wunused-result warning generated when compiled with gcc 13.3.0,
    by checking fread's return value and handling errors, preventing
    potential failures when reading from stdin.
    
    Fixes compiler warning:
    warning: ignoring return value of 'fread' declared with attribute
    'warn_unused_result' [-Wunused-result]
    
    Fixes: 806a15b2545e ("kselftests/arm64: add PAuth test for whether exec() changes keys")
    
    Signed-off-by: Bala-Vignesh-Reddy <[email protected]>
    Reviewed-by: Mark Brown <[email protected]>
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

selftests: watchdog: skip ping loop if WDIOF_KEEPALIVEPING not supported [+ + +]
Author: Akhilesh Patil <[email protected]>
Date:   Sun Sep 14 20:58:41 2025 +0530

    selftests: watchdog: skip ping loop if WDIOF_KEEPALIVEPING not supported
    
    [ Upstream commit e8cfc524eaf3c0ed88106177edb6961e202e6716 ]
    
    Check if watchdog device supports WDIOF_KEEPALIVEPING option before
    entering keep_alive() ping test loop. Fix watchdog-test silently looping
    if ioctl based ping is not supported by the device. Exit from test in
    such case instead of getting stuck in loop executing failing keep_alive()
    
    watchdog_info:
     identity:              m41t93 rtc Watchdog
     firmware_version:      0
    Support/Status: Set timeout (in seconds)
    Support/Status: Watchdog triggers a management or other external alarm not a reboot
    
    Watchdog card disabled.
    Watchdog timeout set to 5 seconds.
    Watchdog ping rate set to 2 seconds.
    Watchdog card enabled.
    WDIOC_KEEPALIVE not supported by this device
    
    without this change
    Watchdog card disabled.
    Watchdog timeout set to 5 seconds.
    Watchdog ping rate set to 2 seconds.
    Watchdog card enabled.
    Watchdog Ticking Away!
    (Where test stuck here forver silently)
    
    Updated change log at commit time:
    Shuah Khan <[email protected]>
    
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: d89d08ffd2c5 ("selftests: watchdog: Fix ioctl SET* error paths to take oneshot exit path")
    Signed-off-by: Akhilesh Patil <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

serial: max310x: Add error checking in probe() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Thu Aug 7 18:54:37 2025 +0300

    serial: max310x: Add error checking in probe()
    
    [ Upstream commit 672a37ba8af1f2ebcedeb94aea2cdd047f805f30 ]
    
    Check if devm_i2c_new_dummy_device() fails.
    
    Fixes: 2e1f2d9a9bdb ("serial: max310x: implement I2C support")
    Signed-off-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

serial: stm32: allow selecting console when the driver is module [+ + +]
Author: Raphael Gallais-Pou <[email protected]>
Date:   Fri Aug 22 16:19:23 2025 +0200

    serial: stm32: allow selecting console when the driver is module
    
    commit cc4d900d0d6d8dd5c41832a93ff3cfa629a78f9a upstream.
    
    Console can be enabled on the UART compile as module.
    Change dependency to allow console mode when the driver is built as module.
    
    Fixes: 48a6092fb41fa ("serial: stm32-usart: Add STM32 USART Driver")
    Cc: [email protected]
    Signed-off-by: Raphael Gallais-Pou <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
soc: qcom: rpmh-rsc: Unconditionally clear _TRIGGER bit for TCS [+ + +]
Author: Sneh Mankad <[email protected]>
Date:   Mon Aug 25 11:53:50 2025 +0530

    soc: qcom: rpmh-rsc: Unconditionally clear _TRIGGER bit for TCS
    
    [ Upstream commit f87412d18edb5b8393eb8cb1c2d4a54f90185a21 ]
    
    Unconditionally clear the TCS_AMC_MODE_TRIGGER bit when a
    transaction completes. Previously this bit was only cleared when
    a wake TCS was borrowed as an AMC TCS but not for dedicated
    AMC TCS. Leaving this bit set for AMC TCS and entering deeper low
    power modes can generate a false completion IRQ.
    
    Prevent this scenario by always clearing the TCS_AMC_MODE_TRIGGER
    bit upon receiving a completion IRQ.
    
    Fixes: 15b3bf61b8d4 ("soc: qcom: rpmh-rsc: Clear active mode configuration for wake TCS")
    Signed-off-by: Sneh Mankad <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sparc64: fix hugetlb for sun4u [+ + +]
Author: Anthony Yznaga <[email protected]>
Date:   Tue Jul 15 18:24:46 2025 -0700

    sparc64: fix hugetlb for sun4u
    
    commit 6fd44a481b3c6111e4801cec964627791d0f3ec5 upstream.
    
    An attempt to exercise sparc hugetlb code in a sun4u-based guest
    running under qemu results in the guest hanging due to being stuck
    in a trap loop. This is due to invalid hugetlb TTEs being installed
    that do not have the expected _PAGE_PMD_HUGE and page size bits set.
    Although the breakage has gone apparently unnoticed for several years,
    fix it now so there is the option to exercise sparc hugetlb code under
    qemu. This can be useful because sun4v support in qemu does not support
    linux guests currently and sun4v-based hardware resources may not be
    readily available.
    
    Fix tested with a 6.15.2 and 6.16-rc6 kernels by running libhugetlbfs
    tests on a qemu guest running Debian 13.
    
    Fixes: c7d9f77d33a7 ("sparc64: Multi-page size support")
    Cc: [email protected]
    Signed-off-by: Anthony Yznaga <[email protected]>
    Tested-by: John Paul Adrian Glaubitz <[email protected]>
    Reviewed-by: John Paul Adrian Glaubitz <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sparc: fix accurate exception reporting in copy_to_user for Niagara 4 [+ + +]
Author: Michael Karcher <[email protected]>
Date:   Fri Sep 5 00:03:33 2025 +0200

    sparc: fix accurate exception reporting in copy_to_user for Niagara 4
    
    [ Upstream commit 5a746c1a2c7980de6c888b6373299f751ad7790b ]
    
    The referenced commit introduced exception handlers on user-space memory
    references in copy_from_user and copy_to_user. These handlers return from
    the respective function and calculate the remaining bytes left to copy
    using the current register contents. This commit fixes a bad calculation.
    This will fix the return value of copy_to_user in a specific faulting case.
    The behaviour of memcpy stays unchanged.
    
    Fixes: 957077048009 ("sparc64: Convert NG4copy_{from,to}_user to accurate exception reporting.")
    Tested-by: John Paul Adrian Glaubitz <[email protected]> # on Oracle SPARC T4-1
    Signed-off-by: Michael Karcher <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/20250905-memcpy_series-v4-4-1ca72dda195b@mkarcher.dialup.fu-berlin.de
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sparc: fix accurate exception reporting in copy_{from,to}_user for M7 [+ + +]
Author: Michael Karcher <[email protected]>
Date:   Fri Sep 5 00:03:34 2025 +0200

    sparc: fix accurate exception reporting in copy_{from,to}_user for M7
    
    [ Upstream commit 936fb512752af349fc30ccbe0afe14a2ae6d7159 ]
    
    The referenced commit introduced exception handlers on user-space memory
    references in copy_from_user and copy_to_user. These handlers return from
    the respective function and calculate the remaining bytes left to copy
    using the current register contents. This commit fixes a couple of bad
    calculations. This will fix the return value of copy_from_user and
    copy_to_user in the faulting case. The behaviour of memcpy stays unchanged.
    
    Fixes: 34060b8fffa7 ("arch/sparc: Add accurate exception reporting in M7memcpy")
    Tested-by: John Paul Adrian Glaubitz <[email protected]> # on Oracle SPARC S7
    Tested-by: Tony Rodriguez <[email protected]> # S7, see https://lore.kernel.org/r/98564e2e68df2dda0e00c67a75c7f7dfedb33c7e.camel@physik.fu-berlin.de
    Signed-off-by: Michael Karcher <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/20250905-memcpy_series-v4-5-1ca72dda195b@mkarcher.dialup.fu-berlin.de
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sparc: fix accurate exception reporting in copy_{from_to}_user for Niagara [+ + +]
Author: Michael Karcher <[email protected]>
Date:   Fri Sep 5 00:03:32 2025 +0200

    sparc: fix accurate exception reporting in copy_{from_to}_user for Niagara
    
    [ Upstream commit 0b67c8fc10b13a9090340c5f8a37d308f4e1571c ]
    
    The referenced commit introduced exception handlers on user-space memory
    references in copy_from_user and copy_to_user. These handlers return from
    the respective function and calculate the remaining bytes left to copy
    using the current register contents. This commit fixes a couple of bad
    calculations and a broken epilogue in the exception handlers. This will
    prevent crashes and ensure correct return values of copy_from_user and
    copy_to_user in the faulting case. The behaviour of memcpy stays unchanged.
    
    Fixes: 7ae3aaf53f16 ("sparc64: Convert NGcopy_{from,to}_user to accurate exception reporting.")
    Tested-by: John Paul Adrian Glaubitz <[email protected]> # on SPARC T4 with modified kernel to use Niagara 1 code
    Tested-by: Magnus Lindholm <[email protected]> # on Sun Fire T2000
    Signed-off-by: Michael Karcher <[email protected]>
    Tested-by: Ethan Hawke <[email protected]> # on Sun Fire T2000
    Tested-by: Ken Link <[email protected]> # on Sun Fire T1000
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/20250905-memcpy_series-v4-3-1ca72dda195b@mkarcher.dialup.fu-berlin.de
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC [+ + +]
Author: Michael Karcher <[email protected]>
Date:   Fri Sep 5 00:03:30 2025 +0200

    sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC
    
    [ Upstream commit 4fba1713001195e59cfc001ff1f2837dab877efb ]
    
    The referenced commit introduced exception handlers on user-space memory
    references in copy_from_user and copy_to_user. These handlers return from
    the respective function and calculate the remaining bytes left to copy
    using the current register contents. This commit fixes a couple of bad
    calculations. This will fix the return value of copy_from_user and
    copy_to_user in the faulting case. The behaviour of memcpy stays unchanged.
    
    Fixes: cb736fdbb208 ("sparc64: Convert U1copy_{from,to}_user to accurate exception reporting.")
    Tested-by: John Paul Adrian Glaubitz <[email protected]> # on QEMU 10.0.3
    Tested-by: RenĂ© Rebe <[email protected]> # on Ultra 5 UltraSparc IIi
    Tested-by: Jonathan 'theJPster' Pallant <[email protected]> # on Sun Netra T1
    Signed-off-by: Michael Karcher <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/20250905-memcpy_series-v4-1-1ca72dda195b@mkarcher.dialup.fu-berlin.de
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC III [+ + +]
Author: Michael Karcher <[email protected]>
Date:   Fri Sep 5 00:03:31 2025 +0200

    sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC III
    
    [ Upstream commit 47b49c06eb62504075f0f2e2227aee2e2c2a58b3 ]
    
    Anthony Yznaga tracked down that a BUG_ON in ext4 code with large folios
    enabled resulted from copy_from_user() returning impossibly large values
    greater than the size to be copied. This lead to __copy_from_iter()
    returning impossible values instead of the actual number of bytes it was
    able to copy.
    
    The BUG_ON has been reported in
    https://lore.kernel.org/r/b14f55642207e63e907965e209f6323a0df6dcee.camel@physik.fu-berlin.de
    
    The referenced commit introduced exception handlers on user-space memory
    references in copy_from_user and copy_to_user. These handlers return from
    the respective function and calculate the remaining bytes left to copy
    using the current register contents. The exception handlers expect that
    %o2 has already been masked during the bulk copy loop, but the masking was
    performed after that loop. This will fix the return value of copy_from_user
    and copy_to_user in the faulting case. The behaviour of memcpy stays
    unchanged.
    
    Fixes: ee841d0aff64 ("sparc64: Convert U3copy_{from,to}_user to accurate exception reporting.")
    Tested-by: John Paul Adrian Glaubitz <[email protected]> # on Sun Netra 240
    Reviewed-by: Anthony Yznaga <[email protected]>
    Tested-by: RenĂ© Rebe <[email protected]> # on UltraSparc III+ and UltraSparc IIIi
    Signed-off-by: Michael Karcher <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Link: https://lore.kernel.org/r/20250905-memcpy_series-v4-2-1ca72dda195b@mkarcher.dialup.fu-berlin.de
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

sparc: fix error handling in scan_one_device() [+ + +]
Author: Ma Ke <[email protected]>
Date:   Sat Sep 20 20:53:12 2025 +0800

    sparc: fix error handling in scan_one_device()
    
    commit 302c04110f0ce70d25add2496b521132548cd408 upstream.
    
    Once of_device_register() failed, we should call put_device() to
    decrement reference count for cleanup. Or it could cause memory leak.
    So fix this by calling put_device(), then the name can be freed in
    kobject_cleanup().
    
    Calling path: of_device_register() -> of_device_add() -> device_add().
    As comment of device_add() says, 'if device_add() succeeds, you should
    call device_del() when you want to get rid of it. If device_add() has
    not succeeded, use only put_device() to drop the reference count'.
    
    Found by code review.
    
    Cc: [email protected]
    Fixes: cf44bbc26cf1 ("[SPARC]: Beginnings of generic of_device framework.")
    Signed-off-by: Ma Ke <[email protected]>
    Reviewed-by: Andreas Larsson <[email protected]>
    Signed-off-by: Andreas Larsson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
spi: cadence-quadspi: Flush posted register writes before DAC access [+ + +]
Author: Pratyush Yadav <[email protected]>
Date:   Tue Oct 21 13:10:55 2025 -0400

    spi: cadence-quadspi: Flush posted register writes before DAC access
    
    [ Upstream commit 1ad55767e77a853c98752ed1e33b68049a243bd7 ]
    
    cqspi_read_setup() and cqspi_write_setup() program the address width as
    the last step in the setup. This is likely to be immediately followed by
    a DAC region read/write. On TI K3 SoCs the DAC region is on a different
    endpoint from the register region. This means that the order of the two
    operations is not guaranteed, and they might be reordered at the
    interconnect level. It is possible that the DAC read/write goes through
    before the address width update goes through. In this situation if the
    previous command used a different address width the OSPI command is sent
    with the wrong number of address bytes, resulting in an invalid command
    and undefined behavior.
    
    Read back the size register to make sure the write gets flushed before
    accessing the DAC region.
    
    Fixes: 140623410536 ("mtd: spi-nor: Add driver for Cadence Quad SPI Flash Controller")
    CC: [email protected]
    Reviewed-by: Pratyush Yadav <[email protected]>
    Signed-off-by: Pratyush Yadav <[email protected]>
    Signed-off-by: Santhosh Kumar K <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

spi: cadence-quadspi: Flush posted register writes before INDAC access [+ + +]
Author: Pratyush Yadav <[email protected]>
Date:   Sat Sep 6 00:29:55 2025 +0530

    spi: cadence-quadspi: Flush posted register writes before INDAC access
    
    commit 29e0b471ccbd674d20d4bbddea1a51e7105212c5 upstream.
    
    cqspi_indirect_read_execute() and cqspi_indirect_write_execute() first
    set the enable bit on APB region and then start reading/writing to the
    AHB region. On TI K3 SoCs these regions lie on different endpoints. This
    means that the order of the two operations is not guaranteed, and they
    might be reordered at the interconnect level.
    
    It is possible for the AHB write to be executed before the APB write to
    enable the indirect controller, causing the transaction to be invalid
    and the write erroring out. Read back the APB region write before
    accessing the AHB region to make sure the write got flushed and the race
    condition is eliminated.
    
    Fixes: 140623410536 ("mtd: spi-nor: Add driver for Cadence Quad SPI Flash Controller")
    CC: [email protected]
    Reviewed-by: Pratyush Yadav <[email protected]>
    Signed-off-by: Pratyush Yadav <[email protected]>
    Signed-off-by: Santhosh Kumar K <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Squashfs: add additional inode sanity checking [+ + +]
Author: Phillip Lougher <[email protected]>
Date:   Mon Oct 13 17:57:00 2025 -0400

    Squashfs: add additional inode sanity checking
    
    [ Upstream commit 9ee94bfbe930a1b39df53fa2d7b31141b780eb5a ]
    
    Patch series "Squashfs: performance improvement and a sanity check".
    
    This patchset adds an additional sanity check when reading regular file
    inodes, and adds support for SEEK_DATA/SEEK_HOLE lseek() whence values.
    
    This patch (of 2):
    
    Add an additional sanity check when reading regular file inodes.
    
    A regular file if the file size is an exact multiple of the filesystem
    block size cannot have a fragment.  This is because by definition a
    fragment block stores tailends which are not a whole block in size.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Phillip Lougher <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 9f1c14c1de1b ("Squashfs: reject negative file sizes in squashfs_read_inode()")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Squashfs: fix uninit-value in squashfs_get_parent [+ + +]
Author: Phillip Lougher <[email protected]>
Date:   Fri Sep 19 00:33:08 2025 +0100

    Squashfs: fix uninit-value in squashfs_get_parent
    
    commit 74058c0a9fc8b2b4d5f4a0ef7ee2cfa66a9e49cf upstream.
    
    Syzkaller reports a "KMSAN: uninit-value in squashfs_get_parent" bug.
    
    This is caused by open_by_handle_at() being called with a file handle
    containing an invalid parent inode number.  In particular the inode number
    is that of a symbolic link, rather than a directory.
    
    Squashfs_get_parent() gets called with that symbolic link inode, and
    accesses the parent member field.
    
            unsigned int parent_ino = squashfs_i(inode)->parent;
    
    Because non-directory inodes in Squashfs do not have a parent value, this
    is uninitialised, and this causes an uninitialised value access.
    
    The fix is to initialise parent with the invalid inode 0, which will cause
    an EINVAL error to be returned.
    
    Regular inodes used to share the parent field with the block_list_start
    field.  This is removed in this commit to enable the parent field to
    contain the invalid inode number 0.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 122601408d20 ("Squashfs: export operations")
    Signed-off-by: Phillip Lougher <[email protected]>
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Squashfs: reject negative file sizes in squashfs_read_inode() [+ + +]
Author: Phillip Lougher <[email protected]>
Date:   Mon Oct 13 17:57:01 2025 -0400

    Squashfs: reject negative file sizes in squashfs_read_inode()
    
    [ Upstream commit 9f1c14c1de1bdde395f6cc893efa4f80a2ae3b2b ]
    
    Syskaller reports a "WARNING in ovl_copy_up_file" in overlayfs.
    
    This warning is ultimately caused because the underlying Squashfs file
    system returns a file with a negative file size.
    
    This commit checks for a negative file size and returns EINVAL.
    
    [[email protected]: only need to check 64 bit quantity]
      Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 6545b246a2c8 ("Squashfs: inode operations")
    Signed-off-by: Phillip Lougher <[email protected]>
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Cc: Amir Goldstein <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
staging: axis-fifo: fix maximum TX packet length check [+ + +]
Author: Ovidiu Panait <[email protected]>
Date:   Sun Aug 17 20:13:50 2025 +0300

    staging: axis-fifo: fix maximum TX packet length check
    
    commit 52ff2b840bc723f3be1f096f8017c78e0515858c upstream.
    
    Since commit 2ca34b508774 ("staging: axis-fifo: Correct handling of
    tx_fifo_depth for size validation"), write() operations with packets
    larger than 'tx_fifo_depth - 4' words are no longer rejected with -EINVAL.
    
    Fortunately, the packets are not actually getting transmitted to hardware,
    otherwise they would be raising a 'Transmit Packet Overrun Error'
    interrupt, which requires a reset of the TX circuit to recover from.
    
    Instead, the request times out inside wait_event_interruptible_timeout()
    and always returns -EAGAIN, since the wake up condition can never be true
    for these packets. But still, they unnecessarily block other tasks from
    writing to the FIFO and the EAGAIN return code signals userspace to retry
    the write() call, even though it will always fail and time out.
    
    According to the AXI4-Stream FIFO reference manual (PG080), the maximum
    valid packet length is 'tx_fifo_depth - 4' words, so attempting to send
    larger packets is invalid and should not be happening in the first place:
    
    > The maximum packet that can be transmitted is limited by the size of
    > the FIFO, which is (C_TX_FIFO_DEPTH–4)*(data interface width/8) bytes.
    
    Therefore, bring back the old behavior and outright reject packets larger
    than 'tx_fifo_depth - 4' with -EINVAL. Add a comment to explain why the
    check is necessary. The dev_err() message was removed to avoid cluttering
    the dmesg log if an invalid packet is received from userspace.
    
    Fixes: 2ca34b508774 ("staging: axis-fifo: Correct handling of tx_fifo_depth for size validation")
    Cc: [email protected]
    Signed-off-by: Ovidiu Panait <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

staging: axis-fifo: flush RX FIFO on read errors [+ + +]
Author: Ovidiu Panait <[email protected]>
Date:   Fri Sep 12 13:13:22 2025 +0300

    staging: axis-fifo: flush RX FIFO on read errors
    
    commit 82a051e2553b9e297cba82a975d9c538b882c79e upstream.
    
    Flush stale data from the RX FIFO in case of errors, to avoid reading
    old data when new packets arrive.
    
    Commit c6e8d85fafa7 ("staging: axis-fifo: Remove hardware resets for
    user errors") removed full FIFO resets from the read error paths, which
    fixed potential TX data losses, but introduced this RX issue.
    
    Fixes: c6e8d85fafa7 ("staging: axis-fifo: Remove hardware resets for user errors")
    Cc: [email protected]
    Signed-off-by: Ovidiu Panait <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tcp: Don't call reqsk_fastopen_remove() in tcp_conn_request(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Wed Oct 1 23:37:54 2025 +0000

    tcp: Don't call reqsk_fastopen_remove() in tcp_conn_request().
    
    [ Upstream commit 2e7cbbbe3d61c63606994b7ff73c72537afe2e1c ]
    
    syzbot reported the splat below in tcp_conn_request(). [0]
    
    If a listener is close()d while a TFO socket is being processed in
    tcp_conn_request(), inet_csk_reqsk_queue_add() does not set reqsk->sk
    and calls inet_child_forget(), which calls tcp_disconnect() for the
    TFO socket.
    
    After the cited commit, tcp_disconnect() calls reqsk_fastopen_remove(),
    where reqsk_put() is called due to !reqsk->sk.
    
    Then, reqsk_fastopen_remove() in tcp_conn_request() decrements the
    last req->rsk_refcnt and frees reqsk, and __reqsk_free() at the
    drop_and_free label causes the refcount underflow for the listener
    and double-free of the reqsk.
    
    Let's remove reqsk_fastopen_remove() in tcp_conn_request().
    
    Note that other callers make sure tp->fastopen_rsk is not NULL.
    
    [0]:
    refcount_t: underflow; use-after-free.
    WARNING: CPU: 12 PID: 5563 at lib/refcount.c:28 refcount_warn_saturate (lib/refcount.c:28)
    Modules linked in:
    CPU: 12 UID: 0 PID: 5563 Comm: syz-executor Not tainted syzkaller #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/12/2025
    RIP: 0010:refcount_warn_saturate (lib/refcount.c:28)
    Code: ab e8 8e b4 98 ff 0f 0b c3 cc cc cc cc cc 80 3d a4 e4 d6 01 00 75 9c c6 05 9b e4 d6 01 01 48 c7 c7 e8 df fb ab e8 6a b4 98 ff <0f> 0b e9 03 5b 76 00 cc 80 3d 7d e4 d6 01 00 0f 85 74 ff ff ff c6
    RSP: 0018:ffffa79fc0304a98 EFLAGS: 00010246
    RAX: d83af4db1c6b3900 RBX: ffff9f65c7a69020 RCX: d83af4db1c6b3900
    RDX: 0000000000000000 RSI: 00000000ffff7fff RDI: ffffffffac78a280
    RBP: 000000009d781b60 R08: 0000000000007fff R09: ffffffffac6ca280
    R10: 0000000000017ffd R11: 0000000000000004 R12: ffff9f65c7b4f100
    R13: ffff9f65c7d23c00 R14: ffff9f65c7d26000 R15: ffff9f65c7a64ef8
    FS:  00007f9f962176c0(0000) GS:ffff9f65fcf00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000200000000180 CR3: 000000000dbbe006 CR4: 0000000000372ef0
    Call Trace:
     <IRQ>
     tcp_conn_request (./include/linux/refcount.h:400 ./include/linux/refcount.h:432 ./include/linux/refcount.h:450 ./include/net/sock.h:1965 ./include/net/request_sock.h:131 net/ipv4/tcp_input.c:7301)
     tcp_rcv_state_process (net/ipv4/tcp_input.c:6708)
     tcp_v6_do_rcv (net/ipv6/tcp_ipv6.c:1670)
     tcp_v6_rcv (net/ipv6/tcp_ipv6.c:1906)
     ip6_protocol_deliver_rcu (net/ipv6/ip6_input.c:438)
     ip6_input (net/ipv6/ip6_input.c:500)
     ipv6_rcv (net/ipv6/ip6_input.c:311)
     __netif_receive_skb (net/core/dev.c:6104)
     process_backlog (net/core/dev.c:6456)
     __napi_poll (net/core/dev.c:7506)
     net_rx_action (net/core/dev.c:7569 net/core/dev.c:7696)
     handle_softirqs (kernel/softirq.c:579)
     do_softirq (kernel/softirq.c:480)
     </IRQ>
    
    Fixes: 45c8a6cc2bcd ("tcp: Clear tcp_sk(sk)->fastopen_rsk in tcp_disconnect().")
    Reported-by: syzkaller <[email protected]>
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tcp: fix __tcp_close() to only send RST when required [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Sep 3 08:47:18 2025 +0000

    tcp: fix __tcp_close() to only send RST when required
    
    [ Upstream commit 5f9238530970f2993b23dd67fdaffc552a2d2e98 ]
    
    If the receive queue contains payload that was already
    received, __tcp_close() can send an unexpected RST.
    
    Refine the code to take tp->copied_seq into account,
    as we already do in tcp recvmsg().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Neal Cardwell <[email protected]>
    Reviewed-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Jason Xing <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

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

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

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

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

 
tools build: Align warning options with perf [+ + +]
Author: Leo Yan <[email protected]>
Date:   Mon Oct 6 17:21:23 2025 +0100

    tools build: Align warning options with perf
    
    [ Upstream commit 53d067feb8c4f16d1f24ce3f4df4450bb18c555f ]
    
    The feature test programs are built without enabling '-Wall -Werror'
    options. As a result, a feature may appear to be available, but later
    building in perf can fail with stricter checks.
    
    Make the feature test program use the same warning options as perf.
    
    Fixes: 1925459b4d92 ("tools build: Fix feature Makefile issues with 'O='")
    Signed-off-by: Leo Yan <[email protected]>
    Reviewed-by: Ian Rogers <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: Palmer Dabbelt <[email protected]>
    Cc: Albert Ou <[email protected]>
    Cc: Alexandre Ghiti <[email protected]>
    Cc: Nick Desaulniers <[email protected]>
    Cc: Justin Stitt <[email protected]>
    Cc: Bill Wendling <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Arnaldo Carvalho de Melo <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Nathan Chancellor <[email protected]>
    Cc: James Clark <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Cc: Paul Walmsley <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single [+ + +]
Author: Gunnar Kudrjavets <[email protected]>
Date:   Thu Sep 18 18:49:40 2025 +0300

    tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single
    
    [ Upstream commit 8a81236f2cb0882c7ea6c621ce357f7f3f601fe5 ]
    
    The tpm_tis_write8() call specifies arguments in wrong order. Should be
    (data, addr, value) not (data, value, addr). The initial correct order
    was changed during the major refactoring when the code was split.
    
    Fixes: 41a5e1cf1fe1 ("tpm/tpm_tis: Split tpm_tis driver into a core and TCG TIS compliant phy")
    Signed-off-by: Gunnar Kudrjavets <[email protected]>
    Reviewed-by: Justinien Bouron <[email protected]>
    Reviewed-by: Jarkko Sakkinen <[email protected]>
    Reviewed-by: Paul Menzel <[email protected]>
    Signed-off-by: Jarkko Sakkinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tracing: Fix race condition in kprobe initialization causing NULL pointer dereference [+ + +]
Author: Yuan Chen <[email protected]>
Date:   Tue Oct 14 08:46:22 2025 -0400

    tracing: Fix race condition in kprobe initialization causing NULL pointer dereference
    
    [ Upstream commit 9cf9aa7b0acfde7545c1a1d912576e9bab28dc6f ]
    
    There is a critical race condition in kprobe initialization that can lead to
    NULL pointer dereference and kernel crash.
    
    [1135630.084782] Unable to handle kernel paging request at virtual address 0000710a04630000
    ...
    [1135630.260314] pstate: 404003c9 (nZcv DAIF +PAN -UAO)
    [1135630.269239] pc : kprobe_perf_func+0x30/0x260
    [1135630.277643] lr : kprobe_dispatcher+0x44/0x60
    [1135630.286041] sp : ffffaeff4977fa40
    [1135630.293441] x29: ffffaeff4977fa40 x28: ffffaf015340e400
    [1135630.302837] x27: 0000000000000000 x26: 0000000000000000
    [1135630.312257] x25: ffffaf029ed108a8 x24: ffffaf015340e528
    [1135630.321705] x23: ffffaeff4977fc50 x22: ffffaeff4977fc50
    [1135630.331154] x21: 0000000000000000 x20: ffffaeff4977fc50
    [1135630.340586] x19: ffffaf015340e400 x18: 0000000000000000
    [1135630.349985] x17: 0000000000000000 x16: 0000000000000000
    [1135630.359285] x15: 0000000000000000 x14: 0000000000000000
    [1135630.368445] x13: 0000000000000000 x12: 0000000000000000
    [1135630.377473] x11: 0000000000000000 x10: 0000000000000000
    [1135630.386411] x9 : 0000000000000000 x8 : 0000000000000000
    [1135630.395252] x7 : 0000000000000000 x6 : 0000000000000000
    [1135630.403963] x5 : 0000000000000000 x4 : 0000000000000000
    [1135630.412545] x3 : 0000710a04630000 x2 : 0000000000000006
    [1135630.421021] x1 : ffffaeff4977fc50 x0 : 0000710a04630000
    [1135630.429410] Call trace:
    [1135630.434828]  kprobe_perf_func+0x30/0x260
    [1135630.441661]  kprobe_dispatcher+0x44/0x60
    [1135630.448396]  aggr_pre_handler+0x70/0xc8
    [1135630.454959]  kprobe_breakpoint_handler+0x140/0x1e0
    [1135630.462435]  brk_handler+0xbc/0xd8
    [1135630.468437]  do_debug_exception+0x84/0x138
    [1135630.475074]  el1_dbg+0x18/0x8c
    [1135630.480582]  security_file_permission+0x0/0xd0
    [1135630.487426]  vfs_write+0x70/0x1c0
    [1135630.493059]  ksys_write+0x5c/0xc8
    [1135630.498638]  __arm64_sys_write+0x24/0x30
    [1135630.504821]  el0_svc_common+0x78/0x130
    [1135630.510838]  el0_svc_handler+0x38/0x78
    [1135630.516834]  el0_svc+0x8/0x1b0
    
    kernel/trace/trace_kprobe.c: 1308
    0xffff3df8995039ec <kprobe_perf_func+0x2c>:     ldr     x21, [x24,#120]
    include/linux/compiler.h: 294
    0xffff3df8995039f0 <kprobe_perf_func+0x30>:     ldr     x1, [x21,x0]
    
    kernel/trace/trace_kprobe.c
    1308: head = this_cpu_ptr(call->perf_events);
    1309: if (hlist_empty(head))
    1310:   return 0;
    
    crash> struct trace_event_call -o
    struct trace_event_call {
      ...
      [120] struct hlist_head *perf_events;  //(call->perf_event)
      ...
    }
    
    crash> struct trace_event_call ffffaf015340e528
    struct trace_event_call {
      ...
      perf_events = 0xffff0ad5fa89f088, //this value is correct, but x21 = 0
      ...
    }
    
    Race Condition Analysis:
    
    The race occurs between kprobe activation and perf_events initialization:
    
      CPU0                                    CPU1
      ====                                    ====
      perf_kprobe_init
        perf_trace_event_init
          tp_event->perf_events = list;(1)
          tp_event->class->reg (2)← KPROBE ACTIVE
                                              Debug exception triggers
                                              ...
                                              kprobe_dispatcher
                                                kprobe_perf_func (tk->tp.flags & TP_FLAG_PROFILE)
                                                  head = this_cpu_ptr(call->perf_events)(3)
                                                  (perf_events is still NULL)
    
    Problem:
    1. CPU0 executes (1) assigning tp_event->perf_events = list
    2. CPU0 executes (2) enabling kprobe functionality via class->reg()
    3. CPU1 triggers and reaches kprobe_dispatcher
    4. CPU1 checks TP_FLAG_PROFILE - condition passes (step 2 completed)
    5. CPU1 calls kprobe_perf_func() and crashes at (3) because
       call->perf_events is still NULL
    
    CPU1 sees that kprobe functionality is enabled but does not see that
    perf_events has been assigned.
    
    Add pairing read and write memory barriers to guarantee that if CPU1
    sees that kprobe functionality is enabled, it must also see that
    perf_events has been assigned.
    
    Link: https://lore.kernel.org/all/[email protected]/
    
    Fixes: 50d780560785 ("tracing/kprobes: Add probe handler dispatcher to support perf and ftrace concurrent use")
    Cc: [email protected]
    Signed-off-by: Yuan Chen <[email protected]>
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    [ Dropped ftrace changes + context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
udf: fix uninit-value use in udf_get_fileshortad [+ + +]
Author: Gianfranco Trad <[email protected]>
Date:   Mon Oct 13 16:41:23 2025 -0400

    udf: fix uninit-value use in udf_get_fileshortad
    
    [ Upstream commit 264db9d666ad9a35075cc9ed9ec09d021580fbb1 ]
    
    Check for overflow when computing alen in udf_current_aext to mitigate
    later uninit-value use in udf_get_fileshortad KMSAN bug[1].
    After applying the patch reproducer did not trigger any issue[2].
    
    [1] https://syzkaller.appspot.com/bug?extid=8901c4560b7ab5c2f9df
    [2] https://syzkaller.appspot.com/x/log.txt?x=10242227980000
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=8901c4560b7ab5c2f9df
    Tested-by: [email protected]
    Suggested-by: Jan Kara <[email protected]>
    Signed-off-by: Gianfranco Trad <[email protected]>
    Signed-off-by: Jan Kara <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Stable-dep-of: 3bd5e45c2ce3 ("fs: udf: fix OOB read in lengthAllocDescs handling")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
udp: Fix memory accounting leak. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Tue Apr 1 11:44:43 2025 -0700

    udp: Fix memory accounting leak.
    
    commit df207de9d9e7a4d92f8567e2c539d9c8c12fd99d upstream.
    
    Matt Dowling reported a weird UDP memory usage issue.
    
    Under normal operation, the UDP memory usage reported in /proc/net/sockstat
    remains close to zero.  However, it occasionally spiked to 524,288 pages
    and never dropped.  Moreover, the value doubled when the application was
    terminated.  Finally, it caused intermittent packet drops.
    
    We can reproduce the issue with the script below [0]:
    
      1. /proc/net/sockstat reports 0 pages
    
        # cat /proc/net/sockstat | grep UDP:
        UDP: inuse 1 mem 0
    
      2. Run the script till the report reaches 524,288
    
        # python3 test.py & sleep 5
        # cat /proc/net/sockstat | grep UDP:
        UDP: inuse 3 mem 524288  <-- (INT_MAX + 1) >> PAGE_SHIFT
    
      3. Kill the socket and confirm the number never drops
    
        # pkill python3 && sleep 5
        # cat /proc/net/sockstat | grep UDP:
        UDP: inuse 1 mem 524288
    
      4. (necessary since v6.0) Trigger proto_memory_pcpu_drain()
    
        # python3 test.py & sleep 1 && pkill python3
    
      5. The number doubles
    
        # cat /proc/net/sockstat | grep UDP:
        UDP: inuse 1 mem 1048577
    
    The application set INT_MAX to SO_RCVBUF, which triggered an integer
    overflow in udp_rmem_release().
    
    When a socket is close()d, udp_destruct_common() purges its receive
    queue and sums up skb->truesize in the queue.  This total is calculated
    and stored in a local unsigned integer variable.
    
    The total size is then passed to udp_rmem_release() to adjust memory
    accounting.  However, because the function takes a signed integer
    argument, the total size can wrap around, causing an overflow.
    
    Then, the released amount is calculated as follows:
    
      1) Add size to sk->sk_forward_alloc.
      2) Round down sk->sk_forward_alloc to the nearest lower multiple of
          PAGE_SIZE and assign it to amount.
      3) Subtract amount from sk->sk_forward_alloc.
      4) Pass amount >> PAGE_SHIFT to __sk_mem_reduce_allocated().
    
    When the issue occurred, the total in udp_destruct_common() was 2147484480
    (INT_MAX + 833), which was cast to -2147482816 in udp_rmem_release().
    
    At 1) sk->sk_forward_alloc is changed from 3264 to -2147479552, and
    2) sets -2147479552 to amount.  3) reverts the wraparound, so we don't
    see a warning in inet_sock_destruct().  However, udp_memory_allocated
    ends up doubling at 4).
    
    Since commit 3cd3399dd7a8 ("net: implement per-cpu reserves for
    memory_allocated"), memory usage no longer doubles immediately after
    a socket is close()d because __sk_mem_reduce_allocated() caches the
    amount in udp_memory_per_cpu_fw_alloc.  However, the next time a UDP
    socket receives a packet, the subtraction takes effect, causing UDP
    memory usage to double.
    
    This issue makes further memory allocation fail once the socket's
    sk->sk_rmem_alloc exceeds net.ipv4.udp_rmem_min, resulting in packet
    drops.
    
    To prevent this issue, let's use unsigned int for the calculation and
    call sk_forward_alloc_add() only once for the small delta.
    
    Note that first_packet_length() also potentially has the same problem.
    
    [0]:
    from socket import *
    
    SO_RCVBUFFORCE = 33
    INT_MAX = (2 ** 31) - 1
    
    s = socket(AF_INET, SOCK_DGRAM)
    s.bind(('', 0))
    s.setsockopt(SOL_SOCKET, SO_RCVBUFFORCE, INT_MAX)
    
    c = socket(AF_INET, SOCK_DGRAM)
    c.connect(s.getsockname())
    
    data = b'a' * 100
    
    while True:
        c.send(data)
    
    Fixes: f970bd9e3a06 ("udp: implement memory accounting helpers")
    Reported-by: Matt Dowling <[email protected]>
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    [ Yifei: resolve minor conflicts ]
    Signed-off-by: Yifei Liu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
uio_hv_generic: Let userspace take care of interrupt mask [+ + +]
Author: Naman Jain <[email protected]>
Date:   Thu Aug 28 10:12:00 2025 +0530

    uio_hv_generic: Let userspace take care of interrupt mask
    
    commit b15b7d2a1b09ef5428a8db260251897405a19496 upstream.
    
    Remove the logic to set interrupt mask by default in uio_hv_generic
    driver as the interrupt mask value is supposed to be controlled
    completely by the user space. If the mask bit gets changed
    by the driver, concurrently with user mode operating on the ring,
    the mask bit may be set when it is supposed to be clear, and the
    user-mode driver will miss an interrupt which will cause a hang.
    
    For eg- when the driver sets inbound ring buffer interrupt mask to 1,
    the host does not interrupt the guest on the UIO VMBus channel.
    However, setting the mask does not prevent the host from putting a
    message in the inbound ring buffer. So let’s assume that happens,
    the host puts a message into the ring buffer but does not interrupt.
    
    Subsequently, the user space code in the guest sets the inbound ring
    buffer interrupt mask to 0, saying “Hey, I’m ready for interrupts”.
    User space code then calls pread() to wait for an interrupt.
    Then one of two things happens:
    
    * The host never sends another message. So the pread() waits forever.
    * The host does send another message. But because there’s already a
      message in the ring buffer, it doesn’t generate an interrupt.
      This is the correct behavior, because the host should only send an
      interrupt when the inbound ring buffer transitions from empty to
      not-empty. Adding an additional message to a ring buffer that is not
      empty is not supposed to generate an interrupt on the guest.
      Since the guest is waiting in pread() and not removing messages from
      the ring buffer, the pread() waits forever.
    
    This could be easily reproduced in hv_fcopy_uio_daemon if we delay
    setting interrupt mask to 0.
    
    Similarly if hv_uio_channel_cb() sets the interrupt_mask to 1,
    there’s a race condition. Once user space empties the inbound ring
    buffer, but before user space sets interrupt_mask to 0, the host could
    put another message in the ring buffer but it wouldn’t interrupt.
    Then the next pread() would hang.
    
    Fix these by removing all instances where interrupt_mask is changed,
    while keeping the one in set_event() unchanged to enable userspace
    control the interrupt mask by writing 0/1 to /dev/uioX.
    
    Fixes: 95096f2fbd10 ("uio-hv-generic: new userspace i/o driver for VMBus")
    Suggested-by: John Starks <[email protected]>
    Signed-off-by: Naman Jain <[email protected]>
    Cc: [email protected]
    Reviewed-by: Michael Kelley <[email protected]>
    Reviewed-by: Long Li <[email protected]>
    Reviewed-by: Tianyu Lan <[email protected]>
    Tested-by: Tianyu Lan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

 
usb: gadget: configfs: Correctly set use_os_string at bind [+ + +]
Author: William Wu <[email protected]>
Date:   Fri Aug 22 11:36:09 2025 +0800

    usb: gadget: configfs: Correctly set use_os_string at bind
    
    [ Upstream commit e271cc0d25015f4be6c88bd7731444644eb352c2 ]
    
    Once the use_os_string flag is set to true for some functions
    (e.g. adb/mtp) which need to response the OS string, and then
    if we re-bind the ConfigFS gadget to use the other functions
    (e.g. hid) which should not to response the OS string, however,
    because the use_os_string flag is still true, so the usb gadget
    response the OS string descriptor incorrectly, this can cause
    the USB device to be unrecognizable on the Windows system.
    
    An example of this as follows:
    
    echo 1 > os_desc/use
    ln -s functions/ffs.adb configs/b.1/function0
    start adbd
    echo "<udc device>" > UDC   #succeed
    
    stop adbd
    rm configs/b.1/function0
    echo 0 > os_desc/use
    ln -s functions/hid.gs0 configs/b.1/function0
    echo "<udc device>" > UDC  #fail to connect on Windows
    
    This patch sets the use_os_string flag to false at bind if
    the functions not support OS Descriptors.
    
    Signed-off-by: William Wu <[email protected]>
    Fixes: 87213d388e92 ("usb: gadget: configfs: OS String support")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: host: max3421-hcd: Fix error pointer dereference in probe cleanup [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Thu Aug 7 18:55:00 2025 +0300

    usb: host: max3421-hcd: Fix error pointer dereference in probe cleanup
    
    [ Upstream commit 186e8f2bdba551f3ae23396caccd452d985c23e3 ]
    
    The kthread_run() function returns error pointers so the
    max3421_hcd->spi_thread pointer can be either error pointers or NULL.
    Check for both before dereferencing it.
    
    Fixes: 05dfa5c9bc37 ("usb: host: max3421-hcd: fix "spi_rd8" uses dynamic stack allocation warning")
    Signed-off-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

usb: phy: twl6030: Fix incorrect type for ret [+ + +]
Author: Xichao Zhao <[email protected]>
Date:   Fri Aug 22 17:22:24 2025 +0800

    usb: phy: twl6030: Fix incorrect type for ret
    
    [ Upstream commit b570b346ddd727c4b41743a6a2f49e7217c5317f ]
    
    In the twl6030_usb_probe(), the variable ret is declared as
    a u32 type. However, since ret may receive -ENODEV when accepting
    the return value of omap_usb2_set_comparator().Therefore, its type
    should be changed to int.
    
    Fixes: 0e98de67bacba ("usb: otg: make twl6030_usb as a comparator driver to omap_usb2")
    Signed-off-by: Xichao Zhao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

USB: serial: option: add SIMCom 8230C compositions [+ + +]
Author: Xiaowei Li <[email protected]>
Date:   Wed Sep 24 11:16:50 2025 +0800

    USB: serial: option: add SIMCom 8230C compositions
    
    commit 0e0ba0ecec3d6e819e0c2348331ff99afe2eb5d5 upstream.
    
    Add support for SIMCom 8230C which is based on Qualcomm SDX35 chip.
    
    USB Device Listings:
    
    0x9071: tty (DM) + tty (NMEA) + tty (AT) + rmnet (QMI mode) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#= 10 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=9071 Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x9078: tty (DM) + tty (NMEA) + tty (AT) + ECM + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#=  9 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=9078 Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=86(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x907b: RNDIS + tty (DM) + tty (NMEA) + tty (AT) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#=  8 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=907b Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=ef(misc ) Sub=04 Prot=01
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Xiaowei Li <[email protected]>
    Cc: [email protected]
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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

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

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

 
usb: vhci-hcd: Prevent suspending virtually attached devices [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Tue Sep 2 15:15:46 2025 +0300

    usb: vhci-hcd: Prevent suspending virtually attached devices
    
    [ Upstream commit e40b984b6c4ce3f80814f39f86f87b2a48f2e662 ]
    
    The VHCI platform driver aims to forbid entering system suspend when at
    least one of the virtual USB ports are bound to an active USB/IP
    connection.
    
    However, in some cases, the detection logic doesn't work reliably, i.e.
    when all devices attached to the virtual root hub have been already
    suspended, leading to a broken suspend state, with unrecoverable resume.
    
    Ensure the virtually attached devices do not enter suspend by setting
    the syscore PM flag.  Note this is currently limited to the client side
    only, since the server side doesn't implement system suspend prevention.
    
    Fixes: 04679b3489e0 ("Staging: USB/IP: add client driver")
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Acked-by: Shuah Khan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

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

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

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

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

 
watchdog: mpc8xxx_wdt: Reload the watchdog timer when enabling the watchdog [+ + +]
Author: Christophe Leroy <[email protected]>
Date:   Tue Aug 12 14:51:26 2025 +0200

    watchdog: mpc8xxx_wdt: Reload the watchdog timer when enabling the watchdog
    
    [ Upstream commit 7dfd80f70ef00d871df5af7c391133f7ba61ad9b ]
    
    When the watchdog gets enabled with this driver, it leaves enough time
    for the core watchdog subsystem to start pinging it. But when the
    watchdog is already started by hardware or by the boot loader, little
    time remains before it fires and it happens that the core watchdog
    subsystem doesn't have time to start pinging it.
    
    Until commit 19ce9490aa84 ("watchdog: mpc8xxx: use the core worker
    function") pinging was managed by the driver itself and the watchdog
    was immediately pinged by setting the timer expiry to 0.
    
    So restore similar behaviour by pinging it when enabling it so that
    if it was already enabled the watchdog timer counter is reloaded.
    
    Fixes: 19ce9490aa84 ("watchdog: mpc8xxx: use the core worker function")
    Signed-off-by: Christophe Leroy <[email protected]>
    Reviewed-by: Guenter Roeck <[email protected]>
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Wim Van Sebroeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: ath11k: HAL SRNG: don't deinitialize and re-initialize again [+ + +]
Author: Muhammad Usama Anjum <[email protected]>
Date:   Mon Oct 20 12:18:13 2025 -0400

    wifi: ath11k: HAL SRNG: don't deinitialize and re-initialize again
    
    [ Upstream commit 32be3ca4cf78b309dfe7ba52fe2d7cc3c23c5634 ]
    
    Don't deinitialize and reinitialize the HAL helpers. The dma memory is
    deallocated and there is high possibility that we'll not be able to get
    the same memory allocated from dma when there is high memory pressure.
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03926.13-QCAHSPSWPL_V2_SILICONZ_CE-2.52297.6
    
    Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
    Cc: [email protected]
    Cc: Baochen Qiang <[email protected]>
    Reviewed-by: Baochen Qiang <[email protected]>
    Signed-off-by: Muhammad Usama Anjum <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: mt76: fix potential memory leak in mt76_wmac_probe() [+ + +]
Author: Abdun Nihaal <[email protected]>
Date:   Wed Jul 9 20:25:30 2025 +0530

    wifi: mt76: fix potential memory leak in mt76_wmac_probe()
    
    [ Upstream commit 42754b7de2b1a2cf116c5e3f1e8e78392f4ed700 ]
    
    In mt76_wmac_probe(), when the mt76_alloc_device() call succeeds, memory
    is allocated for both struct ieee80211_hw and a workqueue. However, on
    the error path, the workqueue is not freed. Fix that by calling
    mt76_free_device() on the error path.
    
    Fixes: c8846e101502 ("mt76: add driver for MT7603E and MT7628/7688")
    Signed-off-by: Abdun Nihaal <[email protected]>
    Reviewed-by: Jiri Slaby <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mwifiex: send world regulatory domain to driver [+ + +]
Author: Stefan Kerkmann <[email protected]>
Date:   Mon Aug 4 16:16:59 2025 +0200

    wifi: mwifiex: send world regulatory domain to driver
    
    [ Upstream commit 56819d00bc2ebaa6308913c28680da5d896852b8 ]
    
    The world regulatory domain is a restrictive subset of channel
    configurations which allows legal operation of the adapter all over the
    world. Changing to this domain should not be prevented.
    
    Fixes: dd4a9ac05c8e1 ("mwifiex: send regulatory domain info to firmware only if alpha2 changed") changed
    Signed-off-by: Stefan Kerkmann <[email protected]>
    Reviewed-by: Jeff Chen <[email protected]>
    Link: https://patch.msgid.link/20250804-fix-mwifiex-regulatory-domain-v1-1-e4715c770c4d@pengutronix.de
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rt2x00: use explicitly signed or unsigned types [+ + +]
Author: Jason A. Donenfeld <[email protected]>
Date:   Wed Oct 19 09:55:41 2022 -0600

    wifi: rt2x00: use explicitly signed or unsigned types
    
    commit 66063033f77e10b985258126a97573f84bb8d3b4 upstream.
    
    On some platforms, `char` is unsigned, but this driver, for the most
    part, assumed it was signed. In other places, it uses `char` to mean an
    unsigned number, but only in cases when the values are small. And in
    still other places, `char` is used as a boolean. Put an end to this
    confusion by declaring explicit types, depending on the context.
    
    Cc: Andrew Morton <[email protected]>
    Cc: Andy Shevchenko <[email protected]>
    Cc: Stanislaw Gruszka <[email protected]>
    Cc: Helmut Schaa <[email protected]>
    Cc: Kalle Valo <[email protected]>
    Signed-off-by: Jason A. Donenfeld <[email protected]>
    Acked-by: Stanislaw Gruszka <[email protected]>
    Signed-off-by: Kalle Valo <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Eliav Farber <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: rtlwifi: rtl8192cu: Don't claim USB ID 07b8:8188 [+ + +]
Author: Bitterblue Smith <[email protected]>
Date:   Mon Aug 11 18:32:55 2025 +0300

    wifi: rtlwifi: rtl8192cu: Don't claim USB ID 07b8:8188
    
    commit e798f2ac6040f46a04795d7de977341fa9aeabae upstream.
    
    This ID appears to be RTL8188SU, not RTL8188CU. This is the wrong driver
    for RTL8188SU. The r8712u driver from staging used to handle this ID.
    
    Closes: https://lore.kernel.org/linux-wireless/[email protected]/
    Cc: [email protected]
    Signed-off-by: Bitterblue Smith <[email protected]>
    Acked-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/umip: Check that the instruction opcode is at least two bytes [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Fri Aug 8 10:23:56 2025 -0700

    x86/umip: Check that the instruction opcode is at least two bytes
    
    commit 32278c677947ae2f042c9535674a7fff9a245dd3 upstream.
    
    When checking for a potential UMIP violation on #GP, verify the decoder found
    at least two opcode bytes to avoid false positives when the kernel encounters
    an unknown instruction that starts with 0f.  Because the array of opcode.bytes
    is zero-initialized by insn_init(), peeking at bytes[1] will misinterpret
    garbage as a potential SLDT or STR instruction, and can incorrectly trigger
    emulation.
    
    E.g. if a VPALIGNR instruction
    
       62 83 c5 05 0f 08 ff     vpalignr xmm17{k5},xmm23,XMMWORD PTR [r8],0xff
    
    hits a #GP, the kernel emulates it as STR and squashes the #GP (and corrupts
    the userspace code stream).
    
    Arguably the check should look for exactly two bytes, but no three byte
    opcodes use '0f 00 xx' or '0f 01 xx' as an escape, i.e. it should be
    impossible to get a false positive if the first two opcode bytes match '0f 00'
    or '0f 01'.  Go with a more conservative check with respect to the existing
    code to minimize the chances of breaking userspace, e.g. due to decoder
    weirdness.
    
    Analyzed by Nick Bray <[email protected]>.
    
    Fixes: 1e5db223696a ("x86/umip: Add emulation code for UMIP instructions")
    Reported-by: Dan Snyder <[email protected]>
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Acked-by: Peter Zijlstra (Intel) <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

x86/umip: Fix decoding of register forms of 0F 01 (SGDT and SIDT aliases) [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Fri Aug 8 10:23:57 2025 -0700

    x86/umip: Fix decoding of register forms of 0F 01 (SGDT and SIDT aliases)
    
    commit 27b1fd62012dfe9d3eb8ecde344d7aa673695ecf upstream.
    
    Filter out the register forms of 0F 01 when determining whether or not to
    emulate in response to a potential UMIP violation #GP, as SGDT and SIDT only
    accept memory operands.  The register variants of 0F 01 are used to encode
    instructions for things like VMX and SGX, i.e. not checking the Mod field
    would cause the kernel to incorrectly emulate on #GP, e.g. due to a CPL
    violation on VMLAUNCH.
    
    Fixes: 1e5db223696a ("x86/umip: Add emulation code for UMIP instructions")
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Acked-by: Peter Zijlstra (Intel) <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/vdso: Fix output operand size of RDPID [+ + +]
Author: Uros Bizjak <[email protected]>
Date:   Mon Jun 16 11:52:57 2025 +0200

    x86/vdso: Fix output operand size of RDPID
    
    [ Upstream commit ac9c408ed19d535289ca59200dd6a44a6a2d6036 ]
    
    RDPID instruction outputs to a word-sized register (64-bit on x86_64 and
    32-bit on x86_32). Use an unsigned long variable to store the correct size.
    
    LSL outputs to 32-bit register, use %k operand prefix to always print the
    32-bit name of the register.
    
    Use RDPID insn mnemonic while at it as the minimum binutils version of
    2.30 supports it.
    
      [ bp: Merge two patches touching the same function into a single one. ]
    
    Fixes: ffebbaedc861 ("x86/vdso: Introduce helper functions for CPU and node number")
    Signed-off-by: Uros Bizjak <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
xen/events: Cleanup find_virq() return codes [+ + +]
Author: Jason Andryuk <[email protected]>
Date:   Wed Aug 27 20:36:01 2025 -0400

    xen/events: Cleanup find_virq() return codes
    
    commit 08df2d7dd4ab2db8a172d824cda7872d5eca460a upstream.
    
    rc is overwritten by the evtchn_status hypercall in each iteration, so
    the return value will be whatever the last iteration is.  This could
    incorrectly return success even if the event channel was not found.
    Change to an explicit -ENOENT for an un-found virq and return 0 on a
    successful match.
    
    Fixes: 62cc5fc7b2e0 ("xen/pv-on-hvm kexec: rebind virqs to existing eventchannel ports")
    Cc: [email protected]
    Signed-off-by: Jason Andryuk <[email protected]>
    Reviewed-by: Jan Beulich <[email protected]>
    Reviewed-by: Juergen Gross <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

xen/events: Update virq_to_irq on migration [+ + +]
Author: Jason Andryuk <[email protected]>
Date:   Fri Oct 17 10:50:07 2025 -0400

    xen/events: Update virq_to_irq on migration
    
    [ Upstream commit 3fcc8e146935415d69ffabb5df40ecf50e106131 ]
    
    VIRQs come in 3 flavors, per-VPU, per-domain, and global, and the VIRQs
    are tracked in per-cpu virq_to_irq arrays.
    
    Per-domain and global VIRQs must be bound on CPU 0, and
    bind_virq_to_irq() sets the per_cpu virq_to_irq at registration time
    Later, the interrupt can migrate, and info->cpu is updated.  When
    calling __unbind_from_irq(), the per-cpu virq_to_irq is cleared for a
    different cpu.  If bind_virq_to_irq() is called again with CPU 0, the
    stale irq is returned.  There won't be any irq_info for the irq, so
    things break.
    
    Make xen_rebind_evtchn_to_cpu() update the per_cpu virq_to_irq mappings
    to keep them update to date with the current cpu.  This ensures the
    correct virq_to_irq is cleared in __unbind_from_irq().
    
    Fixes: e46cdb66c8fc ("xen: event channels")
    Cc: [email protected]
    Signed-off-by: Jason Andryuk <[email protected]>
    Reviewed-by: Juergen Gross <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Message-ID: <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
xen/manage: Fix suspend error path [+ + +]
Author: Lukas Wunner <[email protected]>
Date:   Thu Sep 4 15:11:09 2025 +0200

    xen/manage: Fix suspend error path
    
    commit f770c3d858687252f1270265ba152d5c622e793f upstream.
    
    The device power management API has the following asymmetry:
    * dpm_suspend_start() does not clean up on failure
      (it requires a call to dpm_resume_end())
    * dpm_suspend_end() does clean up on failure
      (it does not require a call to dpm_resume_start())
    
    The asymmetry was introduced by commit d8f3de0d2412 ("Suspend-related
    patches for 2.6.27") in June 2008:  It removed a call to device_resume()
    from device_suspend() (which was later renamed to dpm_suspend_start()).
    
    When Xen began using the device power management API in May 2008 with
    commit 0e91398f2a5d ("xen: implement save/restore"), the asymmetry did
    not yet exist.  But since it was introduced, a call to dpm_resume_end()
    is missing in the error path of dpm_suspend_start().  Fix it.
    
    Fixes: d8f3de0d2412 ("Suspend-related patches for 2.6.27")
    Signed-off-by: Lukas Wunner <[email protected]>
    Cc: [email protected]  # v2.6.27
    Reviewed-by: "Rafael J. Wysocki (Intel)" <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Message-ID: <22453676d1ddcebbe81641bb68ddf587fee7e21e.1756990799.git.lukas@wunner.de>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

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

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