Changelog in Linux kernel 6.12.34

 
9p: Add a migrate_folio method [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Wed Apr 2 15:59:55 2025 +0100

    9p: Add a migrate_folio method
    
    commit 03ddd7725ed1b39cf9251e1a420559f25dac49b3 upstream.
    
    The migration code used to be able to migrate dirty 9p folios by writing
    them back using writepage.  When the writepage method was removed,
    we neglected to add a migrate_folio method, which means that dirty 9p
    folios have been unmovable ever since.  This reduced our success at
    defragmenting memory on machines which use 9p heavily.
    
    Fixes: 80105ed2fd27 (9p: Use netfslib read/write_iter)
    Cc: [email protected]
    Cc: David Howells <[email protected]>
    Cc: [email protected]
    Signed-off-by: "Matthew Wilcox (Oracle)" <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Acked-by: Dominique Martinet <[email protected]>
    Reviewed-by: David Howells <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ACPI: CPPC: Fix NULL pointer dereference when nosmp is used [+ + +]
Author: Yunhui Cui <[email protected]>
Date:   Wed Jun 4 10:30:36 2025 +0800

    ACPI: CPPC: Fix NULL pointer dereference when nosmp is used
    
    [ Upstream commit 15eece6c5b05e5f9db0711978c3e3b7f1a2cfe12 ]
    
    With nosmp in cmdline, other CPUs are not brought up, leaving
    their cpc_desc_ptr NULL. CPU0's iteration via for_each_possible_cpu()
    dereferences these NULL pointers, causing panic.
    
    Panic backtrace:
    
    [    0.401123] Unable to handle kernel NULL pointer dereference at virtual address 00000000000000b8
    ...
    [    0.403255] [<ffffffff809a5818>] cppc_allow_fast_switch+0x6a/0xd4
    ...
    Kernel panic - not syncing: Attempted to kill init!
    
    Fixes: 3cc30dd00a58 ("cpufreq: CPPC: Enable fast_switch")
    Reported-by: Xu Lu <[email protected]>
    Signed-off-by: Yunhui Cui <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: New subject ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: OSI: Stop advertising support for "3.0 _SCP Extensions" [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Thu Apr 10 18:54:54 2025 +0200

    ACPI: OSI: Stop advertising support for "3.0 _SCP Extensions"
    
    [ Upstream commit 8cf4fdac9bdead7bca15fc56fdecdf78d11c3ec6 ]
    
    As specified in section 5.7.2 of the ACPI specification the feature
    group string "3.0 _SCP Extensions" implies that the operating system
    evaluates the _SCP control method with additional parameters.
    
    However the ACPI thermal driver evaluates the _SCP control method
    without those additional parameters, conflicting with the above
    feature group string advertised to the firmware thru _OSI.
    
    Stop advertising support for this feature string to avoid confusing
    the ACPI firmware.
    
    Fixes: e5f660ebef68 ("ACPI / osi: Collect _OSI handling into one single file")
    Signed-off-by: Armin Wolf <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: resource: fix a typo for MECHREVO in irq1_edge_low_force_override[] [+ + +]
Author: Mingcong Bai <[email protected]>
Date:   Thu Apr 17 15:39:46 2025 +0800

    ACPI: resource: fix a typo for MECHREVO in irq1_edge_low_force_override[]
    
    [ Upstream commit 113e04276018bd13978051d8b05a613b4d390cc9 ]
    
    The vendor name for MECHREVO was incorrectly spelled in commit
    b53f09ecd602 ("ACPI: resource: Do IRQ override on MECHREV GM7XG0M").
    
    Correct this typo in this trivial patch.
    
    Fixes: b53f09ecd602 ("ACPI: resource: Do IRQ override on MECHREV GM7XG0M")
    Signed-off-by: Mingcong Bai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ACPICA: exserial: don't forget to handle FFixedHW opregions for reading [+ + +]
Author: Daniil Tatianin <[email protected]>
Date:   Tue Apr 1 21:43:11 2025 +0300

    ACPICA: exserial: don't forget to handle FFixedHW opregions for reading
    
    [ Upstream commit 0f8af0356a45547683a216e4921006a3c6a6d922 ]
    
    The initial commit that introduced support for FFixedHW operation
    regions did add a special case in the AcpiExReadSerialBus If, but
    forgot to actually handle it inside the switch, so add the missing case
    to prevent reads from failing with AE_AML_INVALID_SPACE_ID.
    
    Link: https://github.com/acpica/acpica/pull/998
    Fixes: ee64b827a9a ("ACPICA: Add support for FFH Opregion special context data")
    Signed-off-by: Daniil Tatianin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ALSA: core: fix up bus match const issues. [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu May 22 12:08:05 2025 +0200

    ALSA: core: fix up bus match const issues.
    
    [ Upstream commit 62f134ab190c5fd5c9f68fe638ad8e13bb8a4cb4 ]
    
    In commit d69d80484598 ("driver core: have match() callback in struct
    bus_type take a const *"), the match bus callback was changed to have
    the driver be a const pointer.  Unfortunately that const attribute was
    thrown away when container_of() is called, which is not correct and was
    not caught by the compiler due to how container_of() is implemented.
    Fix this up by correctly preserving the const attribute of the driver
    passed to the bus match function which requires the hdac_driver match
    function to also take a const pointer for the driver structure.
    
    Cc: Jaroslav Kysela <[email protected]>
    Cc: Takashi Iwai <[email protected]>
    Fixes: d69d80484598 ("driver core: have match() callback in struct bus_type take a const *")
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Link: https://patch.msgid.link/2025052204-hyphen-thermal-3e72@gregkh
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup [+ + +]
Author: Chris Chiu <[email protected]>
Date:   Tue May 20 21:21:01 2025 +0800

    ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup
    
    [ Upstream commit f709b78aecab519dbcefa9a6603b94ad18c553e3 ]
    
    New HP ZBook with Realtek HDA codec ALC3247 needs the quirk
    ALC236_FIXUP_HP_GPIO_LED to fix the micmute LED.
    
    Signed-off-by: Chris Chiu <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek - Support mute led function for HP platform [+ + +]
Author: Kailang Yang <[email protected]>
Date:   Tue Apr 1 16:50:08 2025 +0800

    ALSA: hda/realtek - Support mute led function for HP platform
    
    [ Upstream commit 22c7f77247a84d27b785ec5b706f673421ab269d ]
    
    This patch was integrated CS Amp and support mute led function for HP platform.
    
    Signed-off-by: Kailang Yang <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Stable-dep-of: f709b78aecab ("ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup")
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: Add support for HP Agusta using CS35L41 HDA [+ + +]
Author: Stefan Binding <[email protected]>
Date:   Tue May 20 13:47:43 2025 +0100

    ALSA: hda/realtek: Add support for HP Agusta using CS35L41 HDA
    
    [ Upstream commit 7150d57c370f9e61b7d0e82c58002f1c5a205ac4 ]
    
    Add support for HP Agusta.
    
    Laptops use 2 CS35L41 Amps with HDA, using Internal boost, with I2C
    
    Signed-off-by: Stefan Binding <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: Add support for various HP Laptops using CS35L41 HDA [+ + +]
Author: Stefan Binding <[email protected]>
Date:   Fri Mar 21 23:16:36 2025 +0000

    ALSA: hda/realtek: Add support for various HP Laptops using CS35L41 HDA
    
    [ Upstream commit 29951021367f3a6f10e5b7a11c666fc914746f0c ]
    
    Add support for HP Cadet, Clipper OmniBook, Turbine OmniBook, Trekker,
    Enstrom Onmibook, Piston Omnibook
    
    Laptops use 2 CS35L41 Amps with HDA, using Internal boost, with I2C
    
    Signed-off-by: Stefan Binding <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Stable-dep-of: f709b78aecab ("ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup")
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: fix micmute LEDs on HP Laptops with ALC3247 [+ + +]
Author: Chris Chiu <[email protected]>
Date:   Fri Mar 21 18:49:14 2025 +0800

    ALSA: hda/realtek: fix micmute LEDs on HP Laptops with ALC3247
    
    [ Upstream commit 78f4ca3c6f6fd305b9af8c51470643617df85e11 ]
    
    More HP EliteBook with Realtek HDA codec ALC3247 with combined CS35L56
    Amplifiers need quirk ALC236_FIXUP_HP_GPIO_LED to fix the micmute LED.
    
    Signed-off-by: Chris Chiu <[email protected]>
    Reviewed-by: Simon Trimmer <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Stable-dep-of: f709b78aecab ("ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup")
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: fix micmute LEDs on HP Laptops with ALC3315 [+ + +]
Author: Chris Chiu <[email protected]>
Date:   Fri Mar 21 18:49:13 2025 +0800

    ALSA: hda/realtek: fix micmute LEDs on HP Laptops with ALC3315
    
    [ Upstream commit 0b1b5161648f35fb96967fb9d80965614657a84e ]
    
    More HP laptops with Realtek HDA codec ALC3315 with combined CS35L56
    Amplifiers need quirk ALC285_FIXUP_HP_GPIO_LED to fix the micmute LED.
    
    Signed-off-by: Chris Chiu <[email protected]>
    Reviewed-by: Simon Trimmer <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Stable-dep-of: f709b78aecab ("ALSA: hda/realtek - Add new HP ZBook laptop with micmute led fixup")
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: usb-audio: Add implicit feedback quirk for RODE AI-1 [+ + +]
Author: David Heimann <[email protected]>
Date:   Sun Jun 1 12:41:16 2025 -0400

    ALSA: usb-audio: Add implicit feedback quirk for RODE AI-1
    
    commit 6a3439a417b910e662c666993798e0691bc81147 upstream.
    
    The RODE AI-1 audio interface requires implicit feedback sync between
    playback endpoint 0x03 and feedback endpoint 0x84 on interface 3, but
    doesn't advertise this in its USB descriptors.
    
    Without this quirk, the device receives audio data but produces no output.
    
    Signed-off-by: David Heimann <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
arm64/fpsimd: Avoid clobbering kernel FPSIMD state with SMSTOP [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Wed Apr 9 17:40:04 2025 +0100

    arm64/fpsimd: Avoid clobbering kernel FPSIMD state with SMSTOP
    
    [ Upstream commit 01098d893fa8a6edb2b56e178b798e3e6b674f02 ]
    
    On system with SME, a thread's kernel FPSIMD state may be erroneously
    clobbered during a context switch immediately after that state is
    restored. Systems without SME are unaffected.
    
    If the CPU happens to be in streaming SVE mode before a context switch
    to a thread with kernel FPSIMD state, fpsimd_thread_switch() will
    restore the kernel FPSIMD state using fpsimd_load_kernel_state() while
    the CPU is still in streaming SVE mode. When fpsimd_thread_switch()
    subsequently calls fpsimd_flush_cpu_state(), this will execute an
    SMSTOP, causing an exit from streaming SVE mode. The exit from
    streaming SVE mode will cause the hardware to reset a number of
    FPSIMD/SVE/SME registers, clobbering the FPSIMD state.
    
    Fix this by calling fpsimd_flush_cpu_state() before restoring the kernel
    FPSIMD state.
    
    Fixes: e92bee9f861b ("arm64/fpsimd: Avoid erroneous elide of user state reload")
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: Ard Biesheuvel <[email protected]>
    Cc: Mark Brown <[email protected]>
    Cc: Will Deacon <[email protected]>
    Reviewed-by: Mark Brown <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64/fpsimd: Avoid RES0 bits in the SME trap handler [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Wed Apr 9 17:39:58 2025 +0100

    arm64/fpsimd: Avoid RES0 bits in the SME trap handler
    
    [ Upstream commit 95507570fb2f75544af69760cd5d8f48fc5c7f20 ]
    
    The SME trap handler consumes RES0 bits from the ESR when determining
    the reason for the trap, and depends upon those bits reading as zero.
    This may break in future when those RES0 bits are allocated a meaning
    and stop reading as zero.
    
    For SME traps taken with ESR_ELx.EC == 0b011101, the specific reason for
    the trap is indicated by ESR_ELx.ISS.SMTC ("SME Trap Code"). This field
    occupies bits [2:0] of ESR_ELx.ISS, and as of ARM DDI 0487 L.a, bits
    [24:3] of ESR_ELx.ISS are RES0. ESR_ELx.ISS itself occupies bits [24:0]
    of ESR_ELx.
    
    Extract the SMTC field specifically, matching the way we handle ESR_ELx
    fields elsewhere, and ensuring that the handler is future-proof.
    
    Fixes: 8bd7f91c03d8 ("arm64/sme: Implement traps and syscall handling for SME")
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Cc: Mark Brown <[email protected]>
    Cc: Will Deacon <[email protected]>
    Reviewed-by: Mark Brown <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64/fpsimd: Avoid warning when sve_to_fpsimd() is unused [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Wed Apr 30 18:32:40 2025 +0100

    arm64/fpsimd: Avoid warning when sve_to_fpsimd() is unused
    
    [ Upstream commit f699c66691fb7e08a5a631c5baf5f2a19b7a6468 ]
    
    Historically fpsimd_to_sve() and sve_to_fpsimd() were (conditionally)
    called by functions which were defined regardless of CONFIG_ARM64_SVE.
    Hence it was necessary that both fpsimd_to_sve() and sve_to_fpsimd()
    were always defined and not guarded by ifdeffery.
    
    As a result of the removal of fpsimd_signal_preserve_current_state() in
    commit:
    
      929fa99b1215966f ("arm64/fpsimd: signal: Always save+flush state early")
    
    ... sve_to_fpsimd() has no callers when CONFIG_ARM64_SVE=n, resulting in
    a build-time warnign that it is unused:
    
    | arch/arm64/kernel/fpsimd.c:676:13: warning: unused function 'sve_to_fpsimd' [-Wunused-function]
    |   676 | static void sve_to_fpsimd(struct task_struct *task)
    |       |             ^~~~~~~~~~~~~
    | 1 warning generated.
    
    In contrast, fpsimd_to_sve() still has callers which are defined when
    CONFIG_ARM64_SVE=n, and it would be awkward to hide this behind
    ifdeffery and/or to use stub functions.
    
    For now, suppress the warning by marking both fpsimd_to_sve() and
    sve_to_fpsimd() as 'static inline', as we usually do for stub functions.
    The compiler will no longer warn if either function is unused.
    
    Aside from suppressing the warning, there should be no functional change
    as a result of this patch.
    
    Link: https://lore.kernel.org/linux-arm-kernel/20250429194600.GA26883@willie-the-truck/
    Reported-by: Will Deacon <[email protected]>
    Fixes: 929fa99b1215 ("arm64/fpsimd: signal: Always save+flush state early")
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Cc: Mark Brown <[email protected]>
    Cc: Will Deacon <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64/fpsimd: Discard stale CPU state when handling SME traps [+ + +]
Author: Mark Brown <[email protected]>
Date:   Wed Apr 9 17:40:02 2025 +0100

    arm64/fpsimd: Discard stale CPU state when handling SME traps
    
    [ Upstream commit d3eaab3c70905c5467e5c4ea403053d67505adeb ]
    
    The logic for handling SME traps manipulates saved FPSIMD/SVE/SME state
    incorrectly, and a race with preemption can result in a task having
    TIF_SME set and TIF_FOREIGN_FPSTATE clear even though the live CPU state
    is stale (e.g. with SME traps enabled). This can result in warnings from
    do_sme_acc() where SME traps are not expected while TIF_SME is set:
    
    |        /* With TIF_SME userspace shouldn't generate any traps */
    |        if (test_and_set_thread_flag(TIF_SME))
    |                WARN_ON(1);
    
    This is very similar to the SVE issue we fixed in commit:
    
      751ecf6afd6568ad ("arm64/sve: Discard stale CPU state when handling SVE traps")
    
    The race can occur when the SME trap handler is preempted before and
    after manipulating the saved FPSIMD/SVE/SME state, starting and ending on
    the same CPU, e.g.
    
    | void do_sme_acc(unsigned long esr, struct pt_regs *regs)
    | {
    |         // Trap on CPU 0 with TIF_SME clear, SME traps enabled
    |         // task->fpsimd_cpu is 0.
    |         // per_cpu_ptr(&fpsimd_last_state, 0) is task.
    |
    |         ...
    |
    |         // Preempted; migrated from CPU 0 to CPU 1.
    |         // TIF_FOREIGN_FPSTATE is set.
    |
    |         get_cpu_fpsimd_context();
    |
    |         /* With TIF_SME userspace shouldn't generate any traps */
    |         if (test_and_set_thread_flag(TIF_SME))
    |                 WARN_ON(1);
    |
    |         if (!test_thread_flag(TIF_FOREIGN_FPSTATE)) {
    |                 unsigned long vq_minus_one =
    |                         sve_vq_from_vl(task_get_sme_vl(current)) - 1;
    |                 sme_set_vq(vq_minus_one);
    |
    |                 fpsimd_bind_task_to_cpu();
    |         }
    |
    |         put_cpu_fpsimd_context();
    |
    |         // Preempted; migrated from CPU 1 to CPU 0.
    |         // task->fpsimd_cpu is still 0
    |         // If per_cpu_ptr(&fpsimd_last_state, 0) is still task then:
    |         // - Stale HW state is reused (with SME traps enabled)
    |         // - TIF_FOREIGN_FPSTATE is cleared
    |         // - A return to userspace skips HW state restore
    | }
    
    Fix the case where the state is not live and TIF_FOREIGN_FPSTATE is set
    by calling fpsimd_flush_task_state() to detach from the saved CPU
    state. This ensures that a subsequent context switch will not reuse the
    stale CPU state, and will instead set TIF_FOREIGN_FPSTATE, forcing the
    new state to be reloaded from memory prior to a return to userspace.
    
    Note: this was originallly posted as [1].
    
    Fixes: 8bd7f91c03d8 ("arm64/sme: Implement traps and syscall handling for SME")
    Reported-by: Mark Rutland <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Link: https://lore.kernel.org/linux-arm-kernel/[email protected]/
    [ Rutland: rewrite commit message ]
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Cc: Will Deacon <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64/fpsimd: Do not discard modified SVE state [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Thu May 8 14:26:21 2025 +0100

    arm64/fpsimd: Do not discard modified SVE state
    
    [ Upstream commit 398edaa12f9cf2be7902f306fc023c20e3ebd3e4 ]
    
    Historically SVE state was discarded deterministically early in the
    syscall entry path, before ptrace is notified of syscall entry. This
    permitted ptrace to modify SVE state before and after the "real" syscall
    logic was executed, with the modified state being retained.
    
    This behaviour was changed by commit:
    
      8c845e2731041f0f ("arm64/sve: Leave SVE enabled on syscall if we don't context switch")
    
    That commit was intended to speed up workloads that used SVE by
    opportunistically leaving SVE enabled when returning from a syscall.
    The syscall entry logic was modified to truncate the SVE state without
    disabling userspace access to SVE, and fpsimd_save_user_state() was
    modified to discard userspace SVE state whenever
    in_syscall(current_pt_regs()) is true, i.e. when
    current_pt_regs()->syscallno != NO_SYSCALL.
    
    Leaving SVE enabled opportunistically resulted in a couple of changes to
    userspace visible behaviour which weren't described at the time, but are
    logical consequences of opportunistically leaving SVE enabled:
    
    * Signal handlers can observe the type of saved state in the signal's
      sve_context record. When the kernel only tracks FPSIMD state, the 'vq'
      field is 0 and there is no space allocated for register contents. When
      the kernel tracks SVE state, the 'vq' field is non-zero and the
      register contents are saved into the record.
    
      As a result of the above commit, 'vq' (and the presence of SVE
      register state) is non-deterministically zero or non-zero for a period
      of time after a syscall. The effective register state is still
      deterministic.
    
      Hopefully no-one relies on this being deterministic. In general,
      handlers for asynchronous events cannot expect a deterministic state.
    
    * Similarly to signal handlers, ptrace requests can observe the type of
      saved state in the NT_ARM_SVE and NT_ARM_SSVE regsets, as this is
      exposed in the header flags. As a result of the above commit, this is
      now in a non-deterministic state after a syscall. The effective
      register state is still deterministic.
    
      Hopefully no-one relies on this being deterministic. In general,
      debuggers would have to handle this changing at arbitrary points
      during program flow.
    
    Discarding the SVE state within fpsimd_save_user_state() resulted in
    other changes to userspace visible behaviour which are not desirable:
    
    * A ptrace tracer can modify (or create) a tracee's SVE state at syscall
      entry or syscall exit. As a result of the above commit, the tracee's
      SVE state can be discarded non-deterministically after modification,
      rather than being retained as it previously was.
    
      Note that for co-operative tracer/tracee pairs, the tracer may
      (re)initialise the tracee's state arbitrarily after the tracee sends
      itself an initial SIGSTOP via a syscall, so this affects realistic
      design patterns.
    
    * The current_pt_regs()->syscallno field can be modified via ptrace, and
      can be altered even when the tracee is not really in a syscall,
      causing non-deterministic discarding to occur in situations where this
      was not previously possible.
    
    Further, using current_pt_regs()->syscallno in this way is unsound:
    
    * There are data races between readers and writers of the
      current_pt_regs()->syscallno field.
    
      The current_pt_regs()->syscallno field is written in interruptible
      task context using plain C accesses, and is read in irq/softirq
      context using plain C accesses. These accesses are subject to data
      races, with the usual concerns with tearing, etc.
    
    * Writes to current_pt_regs()->syscallno are subject to compiler
      reordering.
    
      As current_pt_regs()->syscallno is written with plain C accesses,
      the compiler is free to move those writes arbitrarily relative to
      anything which doesn't access the same memory location.
    
      In theory this could break signal return, where prior to restoring the
      SVE state, restore_sigframe() calls forget_syscall(). If the write
      were hoisted after restore of some SVE state, that state could be
      discarded unexpectedly.
    
      In practice that reordering cannot happen in the absence of LTO (as
      cross compilation-unit function calls happen prevent this reordering),
      and that reordering appears to be unlikely in the presence of LTO.
    
    Additionally, since commit:
    
      f130ac0ae4412dbe ("arm64: syscall: unmask DAIF earlier for SVCs")
    
    ... DAIF is unmasked before el0_svc_common() sets regs->syscallno to the
    real syscall number. Consequently state may be saved in SVE format prior
    to this point.
    
    Considering all of the above, current_pt_regs()->syscallno should not be
    used to infer whether the SVE state can be discarded. Luckily we can
    instead use cpu_fp_state::to_save to track when it is safe to discard
    the SVE state:
    
    * At syscall entry, after the live SVE register state is truncated, set
      cpu_fp_state::to_save to FP_STATE_FPSIMD to indicate that only the
      FPSIMD portion is live and needs to be saved.
    
    * At syscall exit, once the task's state is guaranteed to be live, set
      cpu_fp_state::to_save to FP_STATE_CURRENT to indicate that TIF_SVE
      must be considered to determine which state needs to be saved.
    
    * Whenever state is modified, it must be saved+flushed prior to
      manipulation. The state will be truncated if necessary when it is
      saved, and reloading the state will set fp_state::to_save to
      FP_STATE_CURRENT, preventing subsequent discarding.
    
    This permits SVE state to be discarded *only* when it is known to have
    been truncated (and the non-FPSIMD portions must be zero), and ensures
    that SVE state is retained after it is explicitly modified.
    
    For backporting, note that this fix depends on the following commits:
    
    * b2482807fbd4 ("arm64/sme: Optimise SME exit on syscall entry")
    * f130ac0ae441 ("arm64: syscall: unmask DAIF earlier for SVCs")
    * 929fa99b1215 ("arm64/fpsimd: signal: Always save+flush state early")
    
    Fixes: 8c845e273104 ("arm64/sve: Leave SVE enabled on syscall if we don't context switch")
    Fixes: f130ac0ae441 ("arm64: syscall: unmask DAIF earlier for SVCs")
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: Catalin Marinas <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Cc: Mark Brown <[email protected]>
    Cc: Will Deacon <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64/fpsimd: Don't corrupt FPMR when streaming mode changes [+ + +]
Author: Mark Brown <[email protected]>
Date:   Wed Apr 9 17:40:03 2025 +0100

    arm64/fpsimd: Don't corrupt FPMR when streaming mode changes
    
    [ Upstream commit e5fa85fce08b21ed41643cb7968bf66bbd0532e3 ]
    
    When the effective value of PSTATE.SM is changed from 0 to 1 or from 1
    to 0 by any method, an entry or exit to/from streaming SVE mode is
    performed, and hardware automatically resets a number of registers. As
    of ARM DDI 0487 L.a, this means:
    
    * All implemented bits of the SVE vector registers are set to zero.
    
    * All implemented bits of the SVE predicate registers are set to zero.
    
    * All implemented bits of FFR are set to zero, if FFR is implemented in
      the new mode.
    
    * FPSR is set to 0x0000_0000_0800_009f.
    
    * FPMR is set to 0, if FPMR is implemented.
    
    Currently task_fpsimd_load() restores FPMR before restoring SVCR (which
    is an accessor for PSTATE.{SM,ZA}), and so the restored value of FPMR
    may be clobbered if the restored value of PSTATE.SM happens to differ
    from the initial value of PSTATE.SM.
    
    Fix this by moving the restore of FPMR later.
    
    Note: this was originally posted as [1].
    
    Fixes: 203f2b95a882 ("arm64/fpsimd: Support FEAT_FPMR")
    Signed-off-by: Mark Brown <[email protected]>
    Link: https://lore.kernel.org/linux-arm-kernel/[email protected]/
    [ Rutland: rewrite commit message ]
    Signed-off-by: Mark Rutland <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64/fpsimd: Fix merging of FPSIMD state during signal return [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Wed Apr 9 17:40:06 2025 +0100

    arm64/fpsimd: Fix merging of FPSIMD state during signal return
    
    [ Upstream commit c94f2f326146a34066a0070ed90b8bc656b1842f ]
    
    For backwards compatibility reasons, when a signal return occurs which
    restores SVE state, the effective lower 128 bits of each of the SVE
    vector registers are restored from the corresponding FPSIMD vector
    register in the FPSIMD signal frame, overriding the values in the SVE
    signal frame. This is intended to be the case regardless of streaming
    mode.
    
    To make this happen, restore_sve_fpsimd_context() uses
    fpsimd_update_current_state() to merge the lower 128 bits from the
    FPSIMD signal frame into the SVE register state. Unfortunately,
    fpsimd_update_current_state() performs this merging dependent upon
    TIF_SVE, which is not always correct for streaming SVE register state:
    
    * When restoring non-streaming SVE register state there is no observable
      problem, as the signal return code configures TIF_SVE and the saved
      fp_type to match before calling fpsimd_update_current_state(), which
      observes either:
    
      - TIF_SVE set    AND  fp_type == FP_STATE_SVE
      - TIF_SVE clear  AND  fp_type == FP_STATE_FPSIMD
    
    * On systems which have SME but not SVE, TIF_SVE cannot be set. Thus the
      merging will never happen for the streaming SVE register state.
    
    * On systems which have SVE and SME, TIF_SVE can be set and cleared
      independently of PSTATE.SM. Thus the merging may or may not happen for
      streaming SVE register state.
    
      As TIF_SVE can be cleared non-deterministically during syscalls
      (including at the start of sigreturn()), the merging may occur
      non-deterministically from the perspective of userspace.
    
    This logic has been broken since its introduction in commit:
    
      85ed24dad2904f7c ("arm64/sme: Implement streaming SVE signal handling")
    
    ... at which point both fpsimd_signal_preserve_current_state() and
    fpsimd_update_current_state() only checked TIF SVE. When PSTATE.SM==1
    and TIF_SVE was clear, signal delivery would place stale FPSIMD state
    into the FPSIMD signal frame, and signal return would not merge this
    into the restored register state.
    
    Subsequently, signal delivery was fixed as part of commit:
    
      61da7c8e2a602f66 ("arm64/signal: Don't assume that TIF_SVE means we saved SVE state")
    
    ... but signal restore was not given a corresponding fix, and when
    TIF_SVE was clear, signal restore would still fail to merge the FPSIMD
    state into the restored SVE register state. The 'Fixes' tag did not
    indicate that this had been broken since its introduction.
    
    Fix this by merging the FPSIMD state dependent upon the saved fp_type,
    matching what we (currently) do during signal delivery.
    
    As described above, when backporting this commit, it will also be
    necessary to backport commit:
    
      61da7c8e2a602f66 ("arm64/signal: Don't assume that TIF_SVE means we saved SVE state")
    
    ... and prior to commit:
    
      baa8515281b30861 ("arm64/fpsimd: Track the saved FPSIMD state type separately to TIF_SVE")
    
    ... it will be necessary for fpsimd_signal_preserve_current_state() and
    fpsimd_update_current_state() to consider both TIF_SVE and
    thread_sm_enabled(¤t->thread), in place of the saved fp_type.
    
    Fixes: 85ed24dad290 ("arm64/sme: Implement streaming SVE signal handling")
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Cc: Mark Brown <[email protected]>
    Cc: Will Deacon <[email protected]>
    Reviewed-by: Mark Brown <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64/fpsimd: Reset FPMR upon exec() [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Wed Apr 9 17:40:05 2025 +0100

    arm64/fpsimd: Reset FPMR upon exec()
    
    [ Upstream commit a90878f297d3dba906a6261deccb1bd4a791ba52 ]
    
    An exec() is expected to reset all FPSIMD/SVE/SME state, and barring
    special handling of the vector lengths, the state is expected to reset
    to zero. This reset is handled in fpsimd_flush_thread(), which the core
    exec() code calls via flush_thread().
    
    When support was added for FPMR, no logic was added to
    fpsimd_flush_thread() to reset the FPMR value, and thus it is
    erroneously inherited across an exec().
    
    Add the missing reset of FPMR.
    
    Fixes: 203f2b95a882 ("arm64/fpsimd: Support FEAT_FPMR")
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: Marc Zyngier <[email protected]>
    Cc: Mark Brown <[email protected]>
    Cc: Will Deacon <[email protected]>
    Reviewed-by: Mark Brown <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: defconfig: mediatek: enable PHY drivers [+ + +]
Author: Vignesh Raman <[email protected]>
Date:   Mon May 12 18:49:24 2025 +0530

    arm64: defconfig: mediatek: enable PHY drivers
    
    [ Upstream commit f52cd248d844f9451858992f924988ac413fdc7e ]
    
    The mediatek display driver fails to probe on mt8173-elm-hana and
    mt8183-kukui-jacuzzi-juniper-sku16 in v6.14-rc4 due to missing PHY
    configurations.
    
    Commit 924d66011f24 ("drm/mediatek: stop selecting foreign drivers")
    stopped selecting the MediaTek PHY drivers, requiring them to be
    explicitly enabled in defconfig.
    
    Enable the following PHY drivers for MediaTek platforms:
    CONFIG_PHY_MTK_HDMI=m for HDMI display
    CONFIG_PHY_MTK_MIPI_DSI=m for DSI display
    CONFIG_PHY_MTK_DP=m for DP display
    
    Fixes: 924d66011f24 ("drm/mediatek: stop selecting foreign drivers")
    Reviewed-by: Nícolas F. R. A. Prado <[email protected]>
    Signed-off-by: Vignesh Raman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: imx8mm-beacon: Fix RTC capacitive load [+ + +]
Author: Adam Ford <[email protected]>
Date:   Tue Apr 15 20:01:27 2025 -0500

    arm64: dts: imx8mm-beacon: Fix RTC capacitive load
    
    [ Upstream commit 2e98d456666d63f897ba153210bcef9d78ba0f3a ]
    
    Although not noticeable when used every day, the RTC appears to drift when
    left to sit over time.  This is due to the capacitive load not being
    properly set. Fix RTC drift by correcting the capacitive load setting
    from 7000 to 12500, which matches the actual hardware configuration.
    
    Fixes: 593816fa2f35 ("arm64: dts: imx: Add Beacon i.MX8m-Mini development kit")
    Signed-off-by: Adam Ford <[email protected]>
    Signed-off-by: Shawn Guo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: imx8mm-beacon: Set SAI5 MCLK direction to output for HDMI audio [+ + +]
Author: Adam Ford <[email protected]>
Date:   Tue Apr 15 20:01:30 2025 -0500

    arm64: dts: imx8mm-beacon: Set SAI5 MCLK direction to output for HDMI audio
    
    [ Upstream commit 8c716f80dfe8cd6ed9a2696847cea1affeeff6ff ]
    
    The HDMI bridge chip fails to generate an audio source due to the SAI5
    master clock (MCLK) direction not being set to output. This prevents proper
    clocking of the HDMI audio interface.
    
    Add the `fsl,sai-mclk-direction-output` property to the SAI5 node to ensure
    the MCLK is driven by the SoC, resolving the HDMI sound issue.
    
    Fixes: 8ad7d14d99f3 ("arm64: dts: imx8mm-beacon: Add HDMI video with sound")
    Signed-off-by: Adam Ford <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Signed-off-by: Shawn Guo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: imx8mn-beacon: Fix RTC capacitive load [+ + +]
Author: Adam Ford <[email protected]>
Date:   Tue Apr 15 20:01:28 2025 -0500

    arm64: dts: imx8mn-beacon: Fix RTC capacitive load
    
    [ Upstream commit c3f03bec30efd5082b55876846d57b5d17dae7b9 ]
    
    Although not noticeable when used every day, the RTC appears to drift when
    left to sit over time.  This is due to the capacitive load not being
    properly set. Fix RTC drift by correcting the capacitive load setting
    from 7000 to 12500, which matches the actual hardware configuration.
    
    Fixes: 36ca3c8ccb53 ("arm64: dts: imx: Add Beacon i.MX8M Nano development kit")
    Signed-off-by: Adam Ford <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Signed-off-by: Shawn Guo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: imx8mn-beacon: Set SAI5 MCLK direction to output for HDMI audio [+ + +]
Author: Adam Ford <[email protected]>
Date:   Tue Apr 15 20:01:31 2025 -0500

    arm64: dts: imx8mn-beacon: Set SAI5 MCLK direction to output for HDMI audio
    
    [ Upstream commit a747c4dd2a60c4d0179b372032a4b98548135096 ]
    
    The HDMI bridge chip fails to generate an audio source due to the SAI5
    master clock (MCLK) direction not being set to output. This prevents proper
    clocking of the HDMI audio interface.
    
    Add the `fsl,sai-mclk-direction-output` property to the SAI5 node to ensure
    the MCLK is driven by the SoC, resolving the HDMI sound issue.
    
    Fixes: 1d6880ceef43 ("arm64: dts: imx8mn-beacon: Add HDMI video with sound")
    Signed-off-by: Adam Ford <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Signed-off-by: Shawn Guo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: imx8mp-beacon: Fix RTC capacitive load [+ + +]
Author: Adam Ford <[email protected]>
Date:   Tue Apr 15 20:01:29 2025 -0500

    arm64: dts: imx8mp-beacon: Fix RTC capacitive load
    
    [ Upstream commit 6821ee17537938e919e8b86a541aae451f73165b ]
    
    Although not noticeable when used every day, the RTC appears to drift when
    left to sit over time.  This is due to the capacitive load not being
    properly set. Fix RTC drift by correcting the capacitive load setting
    from 7000 to 12500, which matches the actual hardware configuration.
    
    Fixes: 25a5ccdce767 ("arm64: dts: freescale: Introduce imx8mp-beacon-kit")
    Signed-off-by: Adam Ford <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Signed-off-by: Shawn Guo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt6357: Drop regulator-fixed compatibles [+ + +]
Author: Nícolas F. R. A. Prado <[email protected]>
Date:   Fri May 2 11:32:10 2025 -0400

    arm64: dts: mediatek: mt6357: Drop regulator-fixed compatibles
    
    [ Upstream commit d77e89b7b03fb945b4353f2dcc4a70b34baa7bcb ]
    
    Some of the regulators in the MT6357 PMIC dtsi have compatible set to
    regulator-fixed, even though they don't serve any purpose: all those
    regulators are handled as a whole by the mt6357-regulator driver. In
    fact this is the only dtsi in this family of chips where this is the
    case: mt6359 and mt6358 don't have any such compatibles.
    
    A side-effect caused by this is that the DT kselftest, which is supposed
    to identify nodes with compatibles that can be probed, but haven't,
    shows these nodes as failures.
    
    Remove the useless compatibles to move the dtsi in line with the others
    in its family and fix the DT kselftest failures.
    
    Fixes: 55749bb478f8 ("arm64: dts: mediatek: add mt6357 device-tree")
    Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
    Link: https://lore.kernel.org/r/20250502-mt6357-regulator-fixed-compatibles-removal-v1-1-a582c16743fe@collabora.com
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mediatek: mt8195: Reparent vdec1/2 and venc1 power domains [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Wed Apr 2 11:06:15 2025 +0200

    arm64: dts: mediatek: mt8195: Reparent vdec1/2 and venc1 power domains
    
    [ Upstream commit 394f29033324e2317bfd6a7ed99b9a60832b36a2 ]
    
    By hardware, the first and second core of the video decoder IP
    need the VDEC_SOC to be powered up in order to be able to be
    accessed (both internally, by firmware, and externally, by the
    kernel).
    Similarly, for the video encoder IP, the second core needs the
    first core to be powered up in order to be accessible.
    
    Fix that by reparenting the VDEC1/2 power domains to be children
    of VDEC0 (VDEC_SOC), and the VENC1 to be a child of VENC0.
    
    Fixes: 2b515194bf0c ("arm64: dts: mt8195: Add power domains controller")
    Reviewed-by: Chen-Yu Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mt6359: Add missing 'compatible' property to regulators node [+ + +]
Author: Julien Massot <[email protected]>
Date:   Mon May 5 15:23:39 2025 +0200

    arm64: dts: mt6359: Add missing 'compatible' property to regulators node
    
    [ Upstream commit 1fe38d2a19950fa6dbc384ee8967c057aef9faf4 ]
    
    The 'compatible' property is required by the
    'mfd/mediatek,mt6397.yaml' binding. Add it to fix the following
    dtb-check error:
    mediatek/mt8395-radxa-nio-12l.dtb: pmic: regulators:
    'compatible' is a required property
    
    Fixes: 3b7d143be4b7 ("arm64: dts: mt6359: add PMIC MT6359 related nodes")
    Signed-off-by: Julien Massot <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mt6359: Rename RTC node to match binding expectations [+ + +]
Author: Julien Massot <[email protected]>
Date:   Wed May 14 10:19:58 2025 +0200

    arm64: dts: mt6359: Rename RTC node to match binding expectations
    
    [ Upstream commit cfe035d8662cfbd6edff9bd89c4b516bbb34c350 ]
    
    Rename the node 'mt6359rtc' to 'rtc', as required by the binding.
    
    Fix the following dtb-check error:
    
    mediatek/mt8395-radxa-nio-12l.dtb: pmic: 'mt6359rtc' do not match
    any of the regexes: 'pinctrl-[0-9]+'
    
    Fixes: 3b7d143be4b7 ("arm64: dts: mt6359: add PMIC MT6359 related nodes")
    Signed-off-by: Julien Massot <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: mt8183: Add port node to mt8183.dtsi [+ + +]
Author: Pin-yen Lin <[email protected]>
Date:   Wed Apr 23 12:03:39 2025 +0800

    arm64: dts: mt8183: Add port node to mt8183.dtsi
    
    [ Upstream commit d15059f7be59f887c1a370037cc2337c2ff2ad56 ]
    
    Add the port node to fix the binding schema check. Also update
    mt8183-kukui to reference the new port node.
    
    Fixes: 88ec840270e6 ("arm64: dts: mt8183: Add dsi node")
    Fixes: 27eaf34df364 ("arm64: dts: mt8183: config dsi node")
    Signed-off-by: Pin-yen Lin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: ipq9574: Fix USB vdd info [+ + +]
Author: Varadarajan Narayanan <[email protected]>
Date:   Fri Feb 7 13:05:45 2025 +0530

    arm64: dts: qcom: ipq9574: Fix USB vdd info
    
    [ Upstream commit 4f4c905e6a2a4e884f4e9b7326c94fac3500e0f9 ]
    
    USB phys in ipq9574 use the 'L5' regulator. The commit ec4f047679d5
    ("arm64: dts: qcom: ipq9574: Enable USB") incorrectly specified it as
    'L2'. Because of this when the phy module turns off/on its regulators,
    the wrong regulator is turned off/on resulting in 2 issues, namely the
    correct regulator related to the USB phy is not turned off/on and the
    module powered by the incorrect regulator is affected.
    
    Fixes: ec4f047679d5 ("arm64: dts: qcom: ipq9574: Enable USB")
    Signed-off-by: Varadarajan Narayanan <[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: Sasha Levin <[email protected]>

arm64: dts: qcom: qcm2290: fix (some) of QUP interconnects [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Fri Feb 7 22:41:18 2025 +0200

    arm64: dts: qcom: qcm2290: fix (some) of QUP interconnects
    
    [ Upstream commit e07d2d57a1c7254d25597dcdd34f318a91ec9398 ]
    
    While adding interconnect support for the QCM2290 platform some of them
    got the c&p error, rogue MASTER_APPSS_PROC for the config_noc
    interconnect. Turn that into SLAVE_QUP_0 as expected.
    
    Fixes: 5b970ff0193d ("arm64: dts: qcom: qcm2290: Hook up interconnects")
    Reported-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sc8280xp-x13s: Drop duplicate DMIC supplies [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Tue Dec 3 18:44:02 2024 +0100

    arm64: dts: qcom: sc8280xp-x13s: Drop duplicate DMIC supplies
    
    [ Upstream commit a2e617f4e6981aa514a569e927f90b0d39bb31b2 ]
    
    The WCD938x codec provides two controls for each of the MIC_BIASn outputs:
    
     - "MIC BIASn" enables an internal regulator to generate the output
       with a configurable voltage (qcom,micbiasN-microvolt).
    
     - "VA MIC BIASn" enables "pull-up mode" that bypasses the internal
       regulator and directly outputs fixed 1.8V from the VDD_PX pin.
       This is intended for low-power VA (voice activation) use cases.
    
    The audio-routing setup for the ThinkPad X13s currently specifies both
    as power supplies for the DMICs, but only one of them can be active
    at the same time. In practice, only the internal regulator is used
    with the current setup because the driver prefers it over pull-up mode.
    
    Make this more clear by dropping the redundant routes to the pull-up
    "VA MIC BIASn" supply. There is no functional difference except that we
    skip briefly switching to pull-up mode when shutting down the microphone.
    
    Fixes: 2e498f35c385 ("arm64: dts: qcom: sc8280xp-x13s: fix va dmic dai links and routing")
    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]>

arm64: dts: qcom: sda660-ifc6560: Fix dt-validate warning [+ + +]
Author: Alexey Minnekhanov <[email protected]>
Date:   Sun May 4 14:51:20 2025 +0300

    arm64: dts: qcom: sda660-ifc6560: Fix dt-validate warning
    
    [ Upstream commit f5110806b41eaa0eb0ab1bf2787876a580c6246c ]
    
    If you remove clocks property, you should remove clock-names, too.
    Fixes warning with dtbs check:
    
     'clocks' is a dependency of 'clock-names'
    
    Fixes: 34279d6e3f32c ("arm64: dts: qcom: sdm660: Add initial Inforce IFC6560 board support")
    Signed-off-by: Alexey Minnekhanov <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm660-lavender: Add missing USB phy supply [+ + +]
Author: Alexey Minnekhanov <[email protected]>
Date:   Sun May 4 14:51:19 2025 +0300

    arm64: dts: qcom: sdm660-lavender: Add missing USB phy supply
    
    [ Upstream commit dbf62a117a1b7f605a98dd1fd1fd6c85ec324ea0 ]
    
    Fixes the following dtbs check error:
    
     phy@c012000: 'vdda-pll-supply' is a required property
    
    Fixes: e5d3e752b050e ("arm64: dts: qcom: sdm660-xiaomi-lavender: Add USB")
    Signed-off-by: Alexey Minnekhanov <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm660-xiaomi-lavender: Add missing SD card detect GPIO [+ + +]
Author: Alexey Minnekhanov <[email protected]>
Date:   Tue Apr 15 16:01:01 2025 +0300

    arm64: dts: qcom: sdm660-xiaomi-lavender: Add missing SD card detect GPIO
    
    [ Upstream commit 2eca6af66709de0d1ba14cdf8b6d200a1337a3a2 ]
    
    During initial porting these cd-gpios were missed. Having card detect is
    beneficial because driver does not need to do polling every second and it
    can just use IRQ. SD card detection in U-Boot is also fixed by this.
    
    Fixes: cf85e9aee210 ("arm64: dts: qcom: sdm660-xiaomi-lavender: Add eMMC and SD")
    Signed-off-by: Alexey Minnekhanov <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845-starqltechn: fix usb regulator mistake [+ + +]
Author: Dzmitry Sankouski <[email protected]>
Date:   Tue Feb 25 19:38:54 2025 +0300

    arm64: dts: qcom: sdm845-starqltechn: fix usb regulator mistake
    
    [ Upstream commit 242e4126ee007b95765c21a9d74651fdcf221f2b ]
    
    Usb regulator was wrongly pointed to vreg_l1a_0p875.
    However, on starqltechn it's powered from vreg_l5a_0p8.
    
    Fixes: d711b22eee55 ("arm64: dts: qcom: starqltechn: add initial device tree for starqltechn")
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Dzmitry Sankouski <[email protected]>
    Link: https://lore.kernel.org/r/20250225-starqltechn_integration_upstream-v9-3-a5d80375cb66@gmail.com
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845-starqltechn: refactor node order [+ + +]
Author: Dzmitry Sankouski <[email protected]>
Date:   Tue Feb 25 19:38:55 2025 +0300

    arm64: dts: qcom: sdm845-starqltechn: refactor node order
    
    [ Upstream commit cba1dd3d851ebc1b6c5ae4000208a9753320694b ]
    
    Fixes: d711b22eee55 ("arm64: dts: qcom: starqltechn: add initial device tree for starqltechn")
    Signed-off-by: Dzmitry Sankouski <[email protected]>
    Link: https://lore.kernel.org/r/20250225-starqltechn_integration_upstream-v9-4-a5d80375cb66@gmail.com
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845-starqltechn: remove excess reserved gpios [+ + +]
Author: Dzmitry Sankouski <[email protected]>
Date:   Tue Feb 25 19:38:56 2025 +0300

    arm64: dts: qcom: sdm845-starqltechn: remove excess reserved gpios
    
    [ Upstream commit fb5fce873b952f8b1c5f7edcabcc8611ef45ea7a ]
    
    Starqltechn has 2 reserved gpio ranges <27 4>, <85 4>.
    <27 4> is spi for eSE(embedded Secure Element).
    <85 4> is spi for fingerprint.
    
    Remove excess reserved gpio regions.
    
    Fixes: d711b22eee55 ("arm64: dts: qcom: starqltechn: add initial device tree for starqltechn")
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Dzmitry Sankouski <[email protected]>
    Link: https://lore.kernel.org/r/20250225-starqltechn_integration_upstream-v9-5-a5d80375cb66@gmail.com
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sdm845-starqltechn: remove wifi [+ + +]
Author: Dzmitry Sankouski <[email protected]>
Date:   Tue Feb 25 19:38:53 2025 +0300

    arm64: dts: qcom: sdm845-starqltechn: remove wifi
    
    [ Upstream commit 2d3dd4b237638853b8a99353401ab8d88a6afb6c ]
    
    Starqltechn has broadcom chip for wifi, so sdm845 wifi part
    can be disabled.
    
    Fixes: d711b22eee55 ("arm64: dts: qcom: starqltechn: add initial device tree for starqltechn")
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Dzmitry Sankouski <[email protected]>
    Fixes: d711b22eee55 ("arm64: dts: qcom: starqltechn: add initial device  tree for starqltechn")
    Reviewed-by: Bryan O'Donoghue <[email protected]>
    Link: https://lore.kernel.org/r/20250225-starqltechn_integration_upstream-v9-2-a5d80375cb66@gmail.com
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sm8250: Fix CPU7 opp table [+ + +]
Author: Xilin Wu <[email protected]>
Date:   Sat Mar 8 18:27:51 2025 +0800

    arm64: dts: qcom: sm8250: Fix CPU7 opp table
    
    [ Upstream commit 28f997b89967afdc0855d8aa7538b251fb44f654 ]
    
    There is a typo in cpu7_opp9. Fix it to get rid of the following
    errors.
    
    [    0.198043] cpu cpu7: Voltage update failed freq=1747200
    [    0.198052] cpu cpu7: failed to update OPP for freq=1747200
    
    Fixes: 8e0e8016cb79 ("arm64: dts: qcom: sm8250: Add CPU opp tables")
    Signed-off-by: Xilin Wu <[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: Sasha Levin <[email protected]>

arm64: dts: qcom: sm8350: Reenable crypto & cryptobam [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Wed Feb 12 18:03:47 2025 +0100

    arm64: dts: qcom: sm8350: Reenable crypto & cryptobam
    
    [ Upstream commit 75eefd474469abf95aa9ef6da8161d69f86b98b4 ]
    
    When num-channels and qcom,num-ees is not provided in devicetree, the
    driver will try to read these values from the registers during probe but
    this fails if the interconnect is not on and then crashes the system.
    
    So we can provide these properties in devicetree (queried after patching
    BAM driver to enable the necessary interconnect) so we can probe
    cryptobam without reading registers and then also use the QCE as
    expected.
    
    Fixes: 4d29db204361 ("arm64: dts: qcom: sm8350: fix BAM DMA crash and reboot")
    Fixes: f1040a7fe8f0 ("arm64: dts: qcom: sm8350: Add Crypto Engine support")
    Signed-off-by: Luca Weiss <[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]>

arm64: dts: qcom: sm8650: add missing cpu-cfg interconnect path in the mdss node [+ + +]
Author: Neil Armstrong <[email protected]>
Date:   Thu Feb 27 10:00:33 2025 +0100

    arm64: dts: qcom: sm8650: add missing cpu-cfg interconnect path in the mdss node
    
    [ Upstream commit f22be5c1dd3e12519e3f3b80c14d10b90be2c2fc ]
    
    The bindings requires the mdp0-mem and the cpu-cfg interconnect path,
    add the missing cpu-cfg path to fix the dtbs check error and also to ensure
    that MDSS has enough bandwidth to let HLOS write config registers.
    
    Fixes: 9fa33cbca3d2 ("arm64: dts: qcom: sm8650: correct MDSS interconnects")
    Reviewed-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/20250227-topic-sm8x50-mdss-interconnect-bindings-fix-v5-2-bf6233c6ebe5@linaro.org
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures [+ + +]
Author: Neil Armstrong <[email protected]>
Date:   Mon Feb 3 14:23:18 2025 +0100

    arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures
    
    [ Upstream commit 2250f65b32565eb8b757e89248c75977f370f498 ]
    
    On the SM8650, the dynamic clock and voltage scaling (DCVS) for the GPU
    is done from the HLOS, but the GPU can achieve a much higher temperature
    before failing according the reference downstream implementation.
    
    Set higher temperatures in the GPU trip points corresponding to
    the temperatures provided by Qualcomm in the dowstream source, much
    closer to the junction temperature and with a higher critical
    temperature trip in the case the HLOS DCVS cannot handle the
    temperature surge.
    
    The tsens MAX_THRESHOLD is set to 120C on those platforms, so set
    the hot to 110C to leave a chance to HLOS to react and critical to
    115C to avoid the monitor thermal shutdown.
    
    Fixes: 497624ed5506 ("arm64: dts: qcom: sm8650: Throttle the GPU when overheating")
    Signed-off-by: Neil Armstrong <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Link: https://lore.kernel.org/r/20250203-topic-sm8650-thermal-cpu-idle-v4-2-65e35f307301@linaro.org
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: x1e80100-romulus: Keep L12B and L15B always on [+ + +]
Author: Konrad Dybcio <[email protected]>
Date:   Tue Mar 4 18:10:46 2025 +0100

    arm64: dts: qcom: x1e80100-romulus: Keep L12B and L15B always on
    
    [ Upstream commit 0783c8b3c06b9cf16b5108d558e2faffb8c533b7 ]
    
    These regulators power some electronic components onboard. They're
    most likely kept online by other pieces of firmware, but you can never
    be sure enough.
    
    Fixes: 09d77be56093 ("arm64: dts: qcom: Add support for X1-based Surface Laptop 7 devices")
    Reported-by: Johan Hovold <[email protected]>
    Signed-off-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Johan Hovold <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: qcom: x1e80100: Add GPU cooling [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Wed Feb 19 12:36:20 2025 +0100

    arm64: dts: qcom: x1e80100: Add GPU cooling
    
    [ Upstream commit 5ba21fa11f473c9827f378ace8c9f983de9e0287 ]
    
    Unlike the CPU, the GPU does not throttle its speed automatically when it
    reaches high temperatures. With certain high GPU loads it is possible to
    reach the critical hardware shutdown temperature of 120°C, endangering the
    hardware and making it impossible to run certain applications.
    
    Set up GPU cooling similar to the ACPI tables, by throttling the GPU speed
    when reaching 95°C and polling every 200ms.
    
    Cc: [email protected]
    Fixes: 721e38301b79 ("arm64: dts: qcom: x1e80100: Add gpu support")
    Signed-off-by: Stephan Gerhold <[email protected]>
    Reviewed-by: Johan Hovold <[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: Sasha Levin <[email protected]>

arm64: dts: qcom: x1e80100: Apply consistent critical thermal shutdown [+ + +]
Author: Stephan Gerhold <[email protected]>
Date:   Wed Feb 19 12:36:19 2025 +0100

    arm64: dts: qcom: x1e80100: Apply consistent critical thermal shutdown
    
    [ Upstream commit 03f2b8eed73418269a158ccebad5d8d8f2f6daa1 ]
    
    The firmware configures the TSENS controller with a maximum temperature of
    120°C. When reaching that temperature, the hardware automatically triggers
    a reset of the entire platform. Some of the thermal zones in x1e80100.dtsi
    use a critical trip point of 125°C. It's impossible to reach those.
    
    It's preferable to shut down the system cleanly before reaching the
    hardware trip point. Make the critical temperature trip points consistent
    by setting all of them to 115°C and apply a consistent hysteresis.
    The ACPI tables also specify 115°C as critical shutdown temperature.
    
    Cc: [email protected]
    Fixes: 4e915987ff5b ("arm64: dts: qcom: x1e80100: Enable tsens and thermal zone nodes")
    Signed-off-by: Stephan Gerhold <[email protected]>
    Reviewed-by: Johan Hovold <[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: Sasha Levin <[email protected]>

arm64: dts: qcom: x1e80100: Mark usb_2 as dma-coherent [+ + +]
Author: Mark Kettenis <[email protected]>
Date:   Thu Jan 9 21:52:31 2025 +0100

    arm64: dts: qcom: x1e80100: Mark usb_2 as dma-coherent
    
    [ Upstream commit 45bd6ff900cfe5038e2718a900f153ded3fa5392 ]
    
    Make this USB controller consistent with the others on this platform.
    
    Fixes: 4af46b7bd66f ("arm64: dts: qcom: x1e80100: Add USB nodes")
    Signed-off-by: Mark Kettenis <[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: Sasha Levin <[email protected]>

arm64: dts: renesas: white-hawk-ard-audio: Fix TPU0 groups [+ + +]
Author: Thuan Nguyen <[email protected]>
Date:   Mon May 19 06:43:24 2025 +0000

    arm64: dts: renesas: white-hawk-ard-audio: Fix TPU0 groups
    
    [ Upstream commit 652eea251dd852f02cef6223f367220acb3d1867 ]
    
    White Hawk ARD audio uses a clock generated by the TPU, but commit
    3d144ef10a44 ("pinctrl: renesas: r8a779g0: Fix TPU suffixes") renamed
    pin group "tpu_to0_a" to "tpu_to0_b".  Update DTS accordingly otherwise
    the sound driver does not receive a clock signal.
    
    Fixes: 3d144ef10a448f89 ("pinctrl: renesas: r8a779g0: Fix TPU suffixes")
    Signed-off-by: Thuan Nguyen <[email protected]>
    Signed-off-by: Duy Nguyen <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Acked-by: Kuninori Morimoto <[email protected]>
    Link: https://lore.kernel.org/TYCPR01MB8740608B675365215ADB0374B49CA@TYCPR01MB8740.jpnprd01.prod.outlook.com
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3566-rock3c [+ + +]
Author: Peter Robinson <[email protected]>
Date:   Tue May 6 20:56:55 2025 +0100

    arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3566-rock3c
    
    [ Upstream commit a706a593cb19796f31d3a888423ef1a71885ae72 ]
    
    As described in the radxa_rock_3c_v1400_schematic.pdf, the SPI Flash's
    VCC connector is connected to VCCIO_FLASH and according to the
    that same schematic, that belongs to the VCC_1V8 power source.
    
    This fixes the following warning:
    
      spi-nor spi4.0: supply vcc not found, using dummy regulator
    
    Fixes: ee219017ddb5 ("arm64: dts: rockchip: Add Radxa ROCK 3C")
    Signed-off-by: Peter Robinson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Heiko Stuebner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: rockchip: disable unrouted USB controllers and PHY on RK3399 Puma with Haikou [+ + +]
Author: Quentin Schulz <[email protected]>
Date:   Fri Apr 25 17:18:10 2025 +0200

    arm64: dts: rockchip: disable unrouted USB controllers and PHY on RK3399 Puma with Haikou
    
    [ Upstream commit febd8c6ab52c683b447fe22fc740918c86feae43 ]
    
    The u2phy0_host port is the part of the USB PHY0 (namely the
    HOST0_DP/DM lanes) which routes directly to the USB2.0 HOST
    controller[1]. The other lanes of the PHY are routed to the USB3.0 OTG
    controller (dwc3), which we do use.
    
    The HOST0_DP/DM lanes aren't routed on RK3399 Puma so let's simply
    disable the USB2.0 controllers.
    
    USB3 OTG has been known to be unstable on RK3399 Puma Haikou for a
    while, one of the recurring issues being that only USB2 is detected and
    not USB3 in host mode. Reading the justification above and seeing that
    we are keeping u2phy0_host in the Haikou carrierboard DTS probably may
    have bothered you since it should be changed to u2phy0_otg. The issue is
    that if it's switched to that, USB OTG on Haikou is entirely broken. I
    have checked the routing in the Gerber file, the lanes are going to the
    expected ball pins (that is, NOT HOST0_DP/DM).
    u2phy0_host is for sure the wrong part of the PHY to use, but it's the
    only one that works at the moment for that board so keep it until we
    figure out what exactly is broken.
    
    No intended functional change.
    
    [1] https://rockchip.fr/Rockchip%20RK3399%20TRM%20V1.3%20Part2.pdf
        Chapter 2 USB2.0 PHY
    
    Fixes: 2c66fc34e945 ("arm64: dts: rockchip: add RK3399-Q7 (Puma) SoM")
    Signed-off-by: Quentin Schulz <[email protected]>
    Signed-off-by: Lukasz Czechowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Heiko Stuebner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: rockchip: Move SHMEM memory to reserved memory on rk3588 [+ + +]
Author: Chukun Pan <[email protected]>
Date:   Tue Apr 1 17:00:09 2025 +0800

    arm64: dts: rockchip: Move SHMEM memory to reserved memory on rk3588
    
    [ Upstream commit 8ecd096d018be8a6bd3bd930f3a41a85db66a67d ]
    
    0x0 to 0xf0000000 are SDRAM memory areas where 0x10f000 is located.
    So move the SHMEM memory of arm_scmi to the reserved memory node.
    
    Fixes: c9211fa2602b ("arm64: dts: rockchip: Add base DT for rk3588 SoC")
    Signed-off-by: Chukun Pan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Heiko Stuebner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: rockchip: Update eMMC for NanoPi R5 series [+ + +]
Author: Peter Robinson <[email protected]>
Date:   Tue May 6 23:25:28 2025 +0100

    arm64: dts: rockchip: Update eMMC for NanoPi R5 series
    
    [ Upstream commit 8eca9e979a1efbcc3d090f6eb3f4da621e7c87e0 ]
    
    Add the 3.3v and 1.8v regulators that are connected to
    the eMMC on the R5 series devices, as well as adding the
    eMMC data strobe, and enable eMMC HS200 mode as the
    Foresee FEMDNN0xxG-A3A55 modules support it.
    
    Fixes: c8ec73b05a95d ("arm64: dts: rockchip: create common dtsi for NanoPi R5 series")
    Signed-off-by: Peter Robinson <[email protected]>
    Reviewed-by: Diederik de Haas <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Heiko Stuebner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: dts: ti: k3-j721e-common-proc-board: Enable OSPI1 on J721E [+ + +]
Author: Prasanth Babu Mantena <[email protected]>
Date:   Wed May 7 10:37:01 2025 +0530

    arm64: dts: ti: k3-j721e-common-proc-board: Enable OSPI1 on J721E
    
    [ Upstream commit 6b8deb2ff0d31848c43a73f6044e69ba9276b3ec ]
    
    J721E SoM has MT25QU512AB Serial NOR flash connected to
    OSPI1 controller. Enable ospi1 node in device tree.
    
    Fixes: 73676c480b72 ("arm64: dts: ti: k3-j721e: Enable OSPI nodes at the board level")
    Signed-off-by: Prasanth Babu Mantena <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Nishanth Menon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: Support ARM64_VA_BITS=52 when setting ARCH_MMAP_RND_BITS_MAX [+ + +]
Author: Kornel Dulęba <[email protected]>
Date:   Thu Apr 17 11:47:54 2025 +0000

    arm64: Support ARM64_VA_BITS=52 when setting ARCH_MMAP_RND_BITS_MAX
    
    [ Upstream commit f101c56447717c595d803894ba0e215f56c6fba4 ]
    
    When the 52-bit virtual addressing was introduced the select like
    ARCH_MMAP_RND_BITS_MAX logic was never updated to account for it.
    Because of that the rnd max bits knob is set to the default value of 18
    when ARM64_VA_BITS=52.
    Fix this by setting ARCH_MMAP_RND_BITS_MAX to the same value that would
    be used if 48-bit addressing was used. Higher values can't used here
    because 52-bit addressing is used only if the caller provides a hint to
    mmap, with a fallback to 48-bit. The knob in question is an upper bound
    for what the user can set in /proc/sys/vm/mmap_rnd_bits, which in turn
    is used to determine how many random bits can be inserted into the base
    address used for mmap allocations. Since 48-bit allocations are legal
    with ARM64_VA_BITS=52, we need to make sure that the base address is
    small enough to facilitate this.
    
    Fixes: b6d00d47e81a ("arm64: mm: Introduce 52-bit Kernel VAs")
    Signed-off-by: Kornel Dulęba <[email protected]>
    Reviewed-by: Anshuman Khandual <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: tegra: Add uartd serial alias for Jetson TX1 module [+ + +]
Author: Aaron Kling <[email protected]>
Date:   Sun Apr 20 09:35:37 2025 -0500

    arm64: tegra: Add uartd serial alias for Jetson TX1 module
    
    [ Upstream commit dfb25484bd73c8590954ead6fd58a1587ba3bbc5 ]
    
    If a serial-tegra interface does not have an alias, the driver fails to
    probe with an error:
    serial-tegra 70006300.serial: failed to get alias id, errno -19
    This prevents the bluetooth device from being accessible.
    
    Fixes: 6eba6471bbb7 ("arm64: tegra: Wire up Bluetooth on Jetson TX1 module")
    Signed-off-by: Aaron Kling <[email protected]>
    Reviewed-by: Tomasz Maciej Nowak <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

arm64: tegra: Drop remaining serial clock-names and reset-names [+ + +]
Author: Aaron Kling <[email protected]>
Date:   Mon Apr 28 20:51:47 2025 -0500

    arm64: tegra: Drop remaining serial clock-names and reset-names
    
    [ Upstream commit 4cd763297c2203c6ba587d7d4a9105f96597b998 ]
    
    The referenced commit only removed some of the names, missing all that
    weren't in use at the time. The commit removes the rest.
    
    Fixes: 71de0a054d0e ("arm64: tegra: Drop serial clock-names and reset-names")
    Signed-off-by: Aaron Kling <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Thierry Reding <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: aspeed: Don't select SRAM [+ + +]
Author: Joel Stanley <[email protected]>
Date:   Thu May 15 16:00:42 2025 +0930

    ARM: aspeed: Don't select SRAM
    
    [ Upstream commit e4f59f873c3ffe2a0150e11115a83e2dfb671dbf ]
    
    The ASPEED devices have SRAM, but don't require it for basic function
    (or any function; there's no known users of the driver).
    
    Fixes: 8c2ed9bcfbeb ("arm: Add Aspeed machine")
    Signed-off-by: Joel Stanley <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Andrew Jeffery <[email protected]>
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARM: dts: at91: at91sam9263: fix NAND chip selects [+ + +]
Author: Wolfram Sang <[email protected]>
Date:   Wed Apr 2 23:04:46 2025 +0200

    ARM: dts: at91: at91sam9263: fix NAND chip selects
    
    [ Upstream commit c72ede1c24be689733bcd2233a3a56f2478429c8 ]
    
    NAND did not work on my USB-A9263. I discovered that the offending
    commit converted the PIO bank for chip selects wrongly, so all A9263
    boards need to be fixed.
    
    Fixes: 1004a2977bdc ("ARM: dts: at91: Switch to the new NAND bindings")
    Signed-off-by: Wolfram Sang <[email protected]>
    Reviewed-by: Alexandre Belloni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARM: dts: at91: usb_a9263: fix GPIO for Dataflash chip select [+ + +]
Author: Wolfram Sang <[email protected]>
Date:   Fri Apr 4 13:27:43 2025 +0200

    ARM: dts: at91: usb_a9263: fix GPIO for Dataflash chip select
    
    [ Upstream commit 67ba341e57ab158423818ed33bfa1c40eb0e5e7e ]
    
    Dataflash did not work on my board. After checking schematics and using
    the proper GPIO, it works now. Also, make it active low to avoid:
    
    flash@0 enforce active low on GPIO handle
    
    Fixes: 2432d201468d ("ARM: at91: dt: usb-a9263: add dataflash support")
    Signed-off-by: Wolfram Sang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Claudiu Beznea <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ARM: dts: qcom: apq8064 merge hw splinlock into corresponding syscon device [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Mar 18 15:22:00 2025 +0200

    ARM: dts: qcom: apq8064 merge hw splinlock into corresponding syscon device
    
    [ Upstream commit 325c6a441ae1f8fcb1db9bb945b8bdbd3142141e ]
    
    Follow up the expected way of describing the SFPB hwspinlock and merge
    hwspinlock node into corresponding syscon node, fixing several dt-schema
    warnings.
    
    Fixes: 24a9baf933dc ("ARM: dts: qcom: apq8064: Add hwmutex and SMEM nodes")
    Signed-off-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: Sasha Levin <[email protected]>

ARM: dts: qcom: apq8064: add missing clocks to the timer node [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Mar 18 15:21:59 2025 +0200

    ARM: dts: qcom: apq8064: add missing clocks to the timer node
    
    [ Upstream commit 4b0eb149df58b6750cd8113e5ee5b3ac7cc51743 ]
    
    In order to fix DT schema warning and describe hardware properly, add
    missing sleep clock to the timer node.
    
    Fixes: f335b8af4fd5 ("ARM: dts: qcom: Add initial APQ8064 SoC and IFC6410 board device trees")
    Signed-off-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: Sasha Levin <[email protected]>

ARM: dts: qcom: apq8064: move replicator out of soc node [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Tue Mar 18 15:22:03 2025 +0200

    ARM: dts: qcom: apq8064: move replicator out of soc node
    
    [ Upstream commit f2420037d90a8354594b3da541e19dcbb60c75e1 ]
    
    The CoreSight static replicator device isn't a part of the system MMIO
    bus, as such it should not be a part of the soc node. Follow the example
    of other platforms and move it out of the soc bus to the top-level (and
    reoder ports to follow alphabetic order).
    
    Fixes: 7a5c275fd821 ("ARM: dts: qcom: Add apq8064 CoreSight components")
    Signed-off-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: Sasha Levin <[email protected]>

 
ASoC: apple: mca: Constrain channels according to TDM mask [+ + +]
Author: Martin Povišer <[email protected]>
Date:   Sun May 18 20:50:46 2025 +1000

    ASoC: apple: mca: Constrain channels according to TDM mask
    
    [ Upstream commit e717c661e2d1a660e96c40b0fe9933e23a1d7747 ]
    
    We don't (and can't) configure the hardware correctly if the number of
    channels exceeds the weight of the TDM mask. Report that constraint in
    startup of FE.
    
    Fixes: 3df5d0d97289 ("ASoC: apple: mca: Start new platform driver")
    Signed-off-by: Martin Povišer <[email protected]>
    Signed-off-by: James Calligeros <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: codecs: hda: Fix RPM usage count underflow [+ + +]
Author: Cezary Rojewski <[email protected]>
Date:   Fri May 30 16:10:17 2025 +0200

    ASoC: codecs: hda: Fix RPM usage count underflow
    
    [ Upstream commit ff0045de4ee0288dec683690f66f2f369b7d3466 ]
    
    RPM manipulation in hda_codec_probe_complete()'s error path is
    superfluous and leads to RPM usage count underflow if the
    build-controls operation fails.
    
    hda_codec_probe_complete() is called in:
    
    1) hda_codec_probe() for all non-HDMI codecs
    2) in card->late_probe() for HDMI codecs
    
    Error path for hda_codec_probe() takes care of bus' RPM already.
    For 2) if late_probe() fails, ASoC performs card cleanup what
    triggers hda_codec_remote() - same treatment is in 1).
    
    Fixes: b5df2a7dca1c ("ASoC: codecs: Add HD-Audio codec driver")
    Reviewed-by: Amadeusz Sławiński <[email protected]>
    Signed-off-by: Cezary Rojewski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: avs: Fix deadlock when the failing IPC is SET_D0IX [+ + +]
Author: Cezary Rojewski <[email protected]>
Date:   Fri May 30 16:10:18 2025 +0200

    ASoC: Intel: avs: Fix deadlock when the failing IPC is SET_D0IX
    
    [ Upstream commit 9ad1f3cd0d60444c69948854c7e50d2a61b63755 ]
    
    The procedure handling IPC timeouts and EXCEPTION_CAUGHT notification
    shall cancel any D0IX work before proceeding with DSP recovery. If
    SET_D0IX called from delayed_work is the failing IPC the procedure will
    deadlock. Conditionally skip cancelling the work to fix that.
    
    Fixes: 335c4cbd201d ("ASoC: Intel: avs: D0ix power state support")
    Reviewed-by: Amadeusz Sławiński <[email protected]>
    Signed-off-by: Cezary Rojewski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: Intel: avs: Verify content returned by parse_int_array() [+ + +]
Author: Cezary Rojewski <[email protected]>
Date:   Fri May 30 16:10:23 2025 +0200

    ASoC: Intel: avs: Verify content returned by parse_int_array()
    
    [ Upstream commit 93e246b6769bdacb09cfff4ea0f00fe5ab4f0d7a ]
    
    The first element of the returned array stores its length. If it is 0,
    any manipulation beyond the element at index 0 ends with null-ptr-deref.
    
    Fixes: 5a565ba23abe ("ASoC: Intel: avs: Probing and firmware tracing over debugfs")
    Reviewed-by: Amadeusz Sławiński <[email protected]>
    Signed-off-by: Cezary Rojewski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: mediatek: mt8195: Set ETDM1/2 IN/OUT to COMP_DUMMY() [+ + +]
Author: Julien Massot <[email protected]>
Date:   Thu Apr 17 10:44:33 2025 +0200

    ASoC: mediatek: mt8195: Set ETDM1/2 IN/OUT to COMP_DUMMY()
    
    [ Upstream commit 7af317f7faaab09d5a78f24605057d11f5955115 ]
    
    ETDM2_IN_BE and ETDM1_OUT_BE are defined as COMP_EMPTY(),
    in the case the codec dai_name will be null.
    
    Avoid a crash if the device tree is not assigning a codec
    to these links.
    
    [    1.179936] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
    [    1.181065] Mem abort info:
    [    1.181420]   ESR = 0x0000000096000004
    [    1.181892]   EC = 0x25: DABT (current EL), IL = 32 bits
    [    1.182576]   SET = 0, FnV = 0
    [    1.182964]   EA = 0, S1PTW = 0
    [    1.183367]   FSC = 0x04: level 0 translation fault
    [    1.183983] Data abort info:
    [    1.184406]   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
    [    1.185097]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
    [    1.185766]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    [    1.186439] [0000000000000000] user address but active_mm is swapper
    [    1.187239] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
    [    1.188029] Modules linked in:
    [    1.188420] CPU: 7 UID: 0 PID: 70 Comm: kworker/u32:1 Not tainted 6.14.0-rc4-next-20250226+ #85
    [    1.189515] Hardware name: Radxa NIO 12L (DT)
    [    1.190065] Workqueue: events_unbound deferred_probe_work_func
    [    1.190808] pstate: 40400009 (nZcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [    1.191683] pc : __pi_strcmp+0x24/0x140
    [    1.192170] lr : mt8195_mt6359_soc_card_probe+0x224/0x7b0
    [    1.192854] sp : ffff800083473970
    [    1.193271] x29: ffff800083473a10 x28: 0000000000001008 x27: 0000000000000002
    [    1.194168] x26: ffff800082408960 x25: ffff800082417db0 x24: ffff800082417d88
    [    1.195065] x23: 000000000000001e x22: ffff800082dbf480 x21: ffff800082dc07b8
    [    1.195961] x20: 0000000000000000 x19: 0000000000000013 x18: 00000000ffffffff
    [    1.196858] x17: 000000040044ffff x16: 005000f2b5503510 x15: 0000000000000006
    [    1.197755] x14: ffff800082407af0 x13: 6e6f69737265766e x12: 692d6b636f6c6374
    [    1.198651] x11: 0000000000000002 x10: ffff80008240b920 x9 : 0000000000000018
    [    1.199547] x8 : 0101010101010101 x7 : 0000000000000000 x6 : 0000000000000000
    [    1.200443] x5 : 0000000000000000 x4 : 8080808080000000 x3 : 303933383978616d
    [    1.201339] x2 : 0000000000000000 x1 : ffff80008240b920 x0 : 0000000000000000
    [    1.202236] Call trace:
    [    1.202545]  __pi_strcmp+0x24/0x140 (P)
    [    1.203029]  mtk_soundcard_common_probe+0x3bc/0x5b8
    [    1.203644]  platform_probe+0x70/0xe8
    [    1.204106]  really_probe+0xc8/0x3a0
    [    1.204556]  __driver_probe_device+0x84/0x160
    [    1.205104]  driver_probe_device+0x44/0x130
    [    1.205630]  __device_attach_driver+0xc4/0x170
    [    1.206189]  bus_for_each_drv+0x8c/0xf8
    [    1.206672]  __device_attach+0xa8/0x1c8
    [    1.207155]  device_initial_probe+0x1c/0x30
    [    1.207681]  bus_probe_device+0xb0/0xc0
    [    1.208165]  deferred_probe_work_func+0xa4/0x100
    [    1.208747]  process_one_work+0x158/0x3e0
    [    1.209254]  worker_thread+0x2c4/0x3e8
    [    1.209727]  kthread+0x134/0x1f0
    [    1.210136]  ret_from_fork+0x10/0x20
    [    1.210589] Code: 54000401 b50002c6 d503201f f86a6803 (f8408402)
    [    1.211355] ---[ end trace 0000000000000000 ]---
    
    Signed-off-by: Julien Massot <[email protected]>
    Fixes: e70b8dd26711 ("ASoC: mediatek: mt8195: Remove afe-dai component and rework codec link")
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: SOF: amd: add missing acp descriptor field [+ + +]
Author: Vijendar Mukunda <[email protected]>
Date:   Fri May 2 21:12:41 2025 +0530

    ASoC: SOF: amd: add missing acp descriptor field
    
    [ Upstream commit 7c2bad7b95db5b4b978853cd4dd042ae3ec83e63 ]
    
    Add missing acp descriptor field acp_error_stat for ACP7.0 platform.
    
    Fixes: 490be7ba2a01 ("ASoC: SOF: amd: add support for acp7.0 based platform")
    
    Signed-off-by: Vijendar Mukunda <[email protected]>
    Reviewed-by: Ranjani Sridharan <[email protected]>
    Reviewed-by: Bard Liao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: SOF: ipc4-pcm: Adjust pipeline_list->pipelines allocation type [+ + +]
Author: Kees Cook <[email protected]>
Date:   Fri Apr 25 23:25:12 2025 -0700

    ASoC: SOF: ipc4-pcm: Adjust pipeline_list->pipelines allocation type
    
    [ Upstream commit 00a371adbbfb46db561db85a9d7b53b2363880a1 ]
    
    In preparation for making the kmalloc family of allocators type aware,
    we need to make sure that the returned type from the allocation matches
    the type of the variable being assigned. (Before, the allocator would
    always return "void *", which can be implicitly cast to any pointer type.)
    
    The assigned type is "struct snd_sof_pipeline **", but the returned type
    will be "struct snd_sof_widget **". These are the same size allocation
    (pointer size) but the types don't match. Adjust the allocation type to
    match the assignment.
    
    Signed-off-by: Kees Cook <[email protected]>
    Fixes: 9c04363d222b ("ASoC: SOF: Introduce struct snd_sof_pipeline")
    Acked-by: Peter Ujfalusi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: tas2764: Enable main IRQs [+ + +]
Author: Hector Martin <[email protected]>
Date:   Sun Apr 6 09:15:08 2025 +1000

    ASoC: tas2764: Enable main IRQs
    
    [ Upstream commit dd50f0e38563f15819059c923bf142200453e003 ]
    
    IRQ handling was added in commit dae191fb957f ("ASoC: tas2764: Add IRQ
    handling") however that same commit masks all interrupts coming from
    the chip. Unmask the "main" interrupts so that we can see and
    deal with a number of errors including clock, voltage, and current.
    
    Fixes: dae191fb957f ("ASoC: tas2764: Add IRQ handling")
    Reviewed-by: Neal Gompa <[email protected]>
    Signed-off-by: Hector Martin <[email protected]>
    Signed-off-by: James Calligeros <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: ti: omap-hdmi: Re-add dai_link->platform to fix card init [+ + +]
Author: Yuuki NAGAO <[email protected]>
Date:   Sat May 31 23:13:41 2025 +0900

    ASoC: ti: omap-hdmi: Re-add dai_link->platform to fix card init
    
    [ Upstream commit bae071aa7bcd034054cec91666c80f812adeccd9 ]
    
    The removed dai_link->platform component cause a fail which
    is exposed at runtime. (ex: when a sound tool is used)
    This patch re-adds the dai_link->platform component to have
    a full card registered.
    
    Before this patch:
    $ aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 1: HDMI [HDMI], device 0: HDMI snd-soc-dummy-dai-0 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    
    $ speaker-test -D plughw:1,0 -t sine
    speaker-test 1.2.8
    Playback device is plughw:1,0
    Stream parameters are 48000Hz, S16_LE, 1 channels
    Sine wave rate is 440.0000Hz
    Playback open error: -22,Invalid argument
    
    After this patch which restores the platform component:
    $ aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: HDMI [HDMI], device 0: HDMI snd-soc-dummy-dai-0 [HDMI snd-soc-dummy-dai-0]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    
    -> Resolve the playback error.
    
    Fixes: 3b0db249cf8f ("ASoC: ti: remove unnecessary dai_link->platform")
    
    Signed-off-by: Yuuki NAGAO <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ath10k: snoc: fix unbalanced IRQ enable in crash recovery [+ + +]
Author: Casey Connolly <[email protected]>
Date:   Tue Mar 18 20:50:27 2025 +0000

    ath10k: snoc: fix unbalanced IRQ enable in crash recovery
    
    [ Upstream commit 1650d32b92b01db03a1a95d69ee74fcbc34d4b00 ]
    
    In ath10k_snoc_hif_stop() we skip disabling the IRQs in the crash
    recovery flow, but we still unconditionally call enable again in
    ath10k_snoc_hif_start().
    
    We can't check the ATH10K_FLAG_CRASH_FLUSH bit since it is cleared
    before hif_start() is called, so instead check the
    ATH10K_SNOC_FLAG_RECOVERY flag and skip enabling the IRQs during crash
    recovery.
    
    This fixes unbalanced IRQ enable splats that happen after recovering from
    a crash.
    
    Fixes: 0e622f67e041 ("ath10k: add support for WCN3990 firmware crash recovery")
    Signed-off-by: Caleb Connolly <[email protected]>
    Tested-by: Loic Poulain <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
backlight: pm8941: Add NULL check in wled_configure() [+ + +]
Author: Henry Martin <[email protected]>
Date:   Tue Apr 1 17:16:47 2025 +0800

    backlight: pm8941: Add NULL check in wled_configure()
    
    [ Upstream commit e12d3e1624a02706cdd3628bbf5668827214fa33 ]
    
    devm_kasprintf() returns NULL when memory allocation fails. Currently,
    wled_configure() does not check for this case, which results in a NULL
    pointer dereference.
    
    Add NULL check after devm_kasprintf() to prevent this issue.
    
    Fixes: f86b77583d88 ("backlight: pm8941: Convert to using %pOFn instead of device_node.name")
    Signed-off-by: Henry Martin <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: "Daniel Thompson (RISCstar)" <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bio: Fix bio_first_folio() for SPARSEMEM without VMEMMAP [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Thu Jun 12 15:41:25 2025 +0100

    bio: Fix bio_first_folio() for SPARSEMEM without VMEMMAP
    
    [ Upstream commit f826ec7966a63d48e16e0868af4e038bf9a1a3ae ]
    
    It is possible for physically contiguous folios to have discontiguous
    struct pages if SPARSEMEM is enabled and SPARSEMEM_VMEMMAP is not.
    This is correctly handled by folio_page_idx(), so remove this open-coded
    implementation.
    
    Fixes: 640d1930bef4 (block: Add bio_for_each_folio_all())
    Signed-off-by: Matthew Wilcox (Oracle) <[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: don't use submit_bio_noacct_nocheck in blk_zone_wplug_bio_work [+ + +]
Author: Christoph Hellwig <[email protected]>
Date:   Wed Jun 11 06:44:16 2025 +0200

    block: don't use submit_bio_noacct_nocheck in blk_zone_wplug_bio_work
    
    [ Upstream commit cf625013d8741c01407bbb4a60c111b61b9fa69d ]
    
    Bios queued up in the zone write plug have already gone through all all
    preparation in the submit_bio path, including the freeze protection.
    
    Submitting them through submit_bio_noacct_nocheck duplicates the work
    and can can cause deadlocks when freezing a queue with pending bio
    write plugs.
    
    Go straight to ->submit_bio or blk_mq_submit_bio to bypass the
    superfluous extra freeze protection and checks.
    
    Fixes: 9b1ce7f0c6f8 ("block: Implement zone append emulation")
    Reported-by: Bart Van Assche <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Reviewed-by: Damien Le Moal <[email protected]>
    Tested-by: Damien Le Moal <[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: Fix bvec_set_folio() for very large folios [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Thu Jun 12 15:42:53 2025 +0100

    block: Fix bvec_set_folio() for very large folios
    
    [ Upstream commit 5e223e06ee7c6d8f630041a0645ac90e39a42cc6 ]
    
    Similarly to 26064d3e2b4d ("block: fix adding folio to bio"), if
    we attempt to add a folio that is larger than 4GB, we'll silently
    truncate the offset and len.  Widen the parameters to size_t, assert
    that the length is less than 4GB and set the first page that contains
    the interesting data rather than the first page of the folio.
    
    Fixes: 26db5ee15851 (block: add a bvec_set_folio helper)
    Signed-off-by: Matthew Wilcox (Oracle) <[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 q->elevator with ->elevator_lock held in elv_iosched_show() [+ + +]
Author: Ming Lei <[email protected]>
Date:   Mon May 5 22:17:42 2025 +0800

    block: use q->elevator with ->elevator_lock held in elv_iosched_show()
    
    [ Upstream commit 94209d27d14104ed828ca88cd5403a99162fe51a ]
    
    Use q->elevator with ->elevator_lock held in elv_iosched_show(), since
    the local cached elevator reference may become stale after getting
    ->elevator_lock.
    
    Reviewed-by: Hannes Reinecke <[email protected]>
    Reviewed-by: Nilay Shroff <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Ming Lei <[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: btintel: Check dsbr size from EFI variable [+ + +]
Author: Kees Cook <[email protected]>
Date:   Tue May 20 09:31:35 2025 -0700

    Bluetooth: btintel: Check dsbr size from EFI variable
    
    [ Upstream commit 3aa1dc3c9060e335e82e9c182bf3d1db29220b1b ]
    
    Since the size of struct btintel_dsbr is already known, we can just
    start there instead of querying the EFI variable size. If the final
    result doesn't match what we expect also fail. This fixes a stack buffer
    overflow when the EFI variable is larger than struct btintel_dsbr.
    
    Reported-by: zepta <[email protected]>
    Closes: https://lore.kernel.org/all/CAPBS6KoaWV9=dtjTESZiU6KK__OZX0KpDk-=JEH8jCHFLUYv3Q@mail.gmail.com
    Fixes: eb9e749c0182 ("Bluetooth: btintel: Allow configuring drive strength of BRI")
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: btintel_pcie: Fix driver not posting maximum rx buffers [+ + +]
Author: Kiran K <[email protected]>
Date:   Tue Jun 3 15:34:38 2025 +0530

    Bluetooth: btintel_pcie: Fix driver not posting maximum rx buffers
    
    [ Upstream commit daabd276985055250528da97e9ce6d277d7009c2 ]
    
    The driver was posting only 6 rx buffers, despite the maximum rx buffers
    being defined as 16. Having fewer RX buffers caused firmware exceptions
    in HID use cases when events arrived in bursts.
    
    Exception seen on android 6.12 kernel.
    
    E Bluetooth: hci0: Received hw exception interrupt
    E Bluetooth: hci0: Received gp1 mailbox interrupt
    D Bluetooth: hci0: 00000000: ff 3e 87 80 03 01 01 01 03 01 0c 0d 02 1c 10 0e
    D Bluetooth: hci0: 00000010: 01 00 05 14 66 b0 28 b0 c0 b0 28 b0 ac af 28 b0
    D Bluetooth: hci0: 00000020: 14 f1 28 b0 00 00 00 00 fa 04 00 00 00 00 40 10
    D Bluetooth: hci0: 00000030: 08 00 00 00 7a 7a 7a 7a 47 00 fb a0 10 00 00 00
    D Bluetooth: hci0: 00000000: 10 01 0a
    E Bluetooth: hci0: ---- Dump of debug registers —
    E Bluetooth: hci0: boot stage: 0xe0fb0047
    E Bluetooth: hci0: ipc status: 0x00000004
    E Bluetooth: hci0: ipc control: 0x00000000
    E Bluetooth: hci0: ipc sleep control: 0x00000000
    E Bluetooth: hci0: mbox_1: 0x00badbad
    E Bluetooth: hci0: mbox_2: 0x0000101c
    E Bluetooth: hci0: mbox_3: 0x00000008
    E Bluetooth: hci0: mbox_4: 0x7a7a7a7a
    
    Signed-off-by: Chandrashekar Devegowda <[email protected]>
    Signed-off-by: Kiran K <[email protected]>
    Fixes: c2b636b3f788 ("Bluetooth: btintel_pcie: Add support for PCIe transport")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: btintel_pcie: Increase the tx and rx descriptor count [+ + +]
Author: Chandrashekar Devegowda <[email protected]>
Date:   Tue Jun 3 15:34:39 2025 +0530

    Bluetooth: btintel_pcie: Increase the tx and rx descriptor count
    
    [ Upstream commit 2dd711102ce69ae41f65d09c012441227d4aa983 ]
    
    This change addresses latency issues observed in HID use cases where
    events arrive in bursts. By increasing the Rx descriptor count to 64,
    the firmware can handle bursty data more effectively, reducing latency
    and preventing buffer overflows.
    
    Signed-off-by: Chandrashekar Devegowda <[email protected]>
    Signed-off-by: Kiran K <[email protected]>
    Fixes: c2b636b3f788 ("Bluetooth: btintel_pcie: Add support for PCIe transport")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: btintel_pcie: Reduce driver buffer posting to prevent race condition [+ + +]
Author: Chandrashekar Devegowda <[email protected]>
Date:   Tue Jun 3 15:34:40 2025 +0530

    Bluetooth: btintel_pcie: Reduce driver buffer posting to prevent race condition
    
    [ Upstream commit bf2ffc4d14db29cab781549912d2dc69127f4d3e ]
    
    Modify the driver to post 3 fewer buffers than the maximum rx buffers
    (64) allowed for the firmware. This change mitigates a hardware issue
    causing a race condition in the firmware, improving stability and data
    handling.
    
    Signed-off-by: Chandrashekar Devegowda <[email protected]>
    Signed-off-by: Kiran K <[email protected]>
    Fixes: c2b636b3f788 ("Bluetooth: btintel_pcie: Add support for PCIe transport")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: eir: Fix possible crashes on eir_create_adv_data [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Tue Jun 10 10:14:35 2025 -0400

    Bluetooth: eir: Fix possible crashes on eir_create_adv_data
    
    [ Upstream commit 47c03902269aff377f959dc3fd94a9733aa31d6e ]
    
    eir_create_adv_data may attempt to add EIR_FLAGS and EIR_TX_POWER
    without checking if that would fit.
    
    Link: https://github.com/bluez/bluez/issues/1117#issuecomment-2958244066
    Fixes: 01ce70b0a274 ("Bluetooth: eir: Move EIR/Adv Data functions to its own file")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: Fix NULL pointer deference on eir_get_service_data [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Thu Jun 5 11:14:25 2025 -0400

    Bluetooth: Fix NULL pointer deference on eir_get_service_data
    
    [ Upstream commit 20a2aa01f5aeb6daad9aeaa7c33dd512c58d81eb ]
    
    The len parameter is considered optional so it can be NULL so it cannot
    be used for skipping to next entry of EIR_SERVICE_DATA.
    
    Fixes: 8f9ae5b3ae80 ("Bluetooth: eir: Add helpers for managing service data")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_core: fix list_for_each_entry_rcu usage [+ + +]
Author: Pauli Virtanen <[email protected]>
Date:   Sat May 31 18:24:58 2025 +0300

    Bluetooth: hci_core: fix list_for_each_entry_rcu usage
    
    [ Upstream commit 308a3a8ce8ea41b26c46169f3263e50f5997c28e ]
    
    Releasing + re-acquiring RCU lock inside list_for_each_entry_rcu() loop
    body is not correct.
    
    Fix by taking the update-side hdev->lock instead.
    
    Fixes: c7eaf80bfb0c ("Bluetooth: Fix hci_link_tx_to RCU lock usage")
    Signed-off-by: Pauli Virtanen <[email protected]>
    Reviewed-by: Paul Menzel <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_sync: Fix broadcast/PA when using an existing instance [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Thu Jun 5 11:15:16 2025 -0400

    Bluetooth: hci_sync: Fix broadcast/PA when using an existing instance
    
    [ Upstream commit 5725bc608252050ed8a4d47d59225b7dd73474c8 ]
    
    When using and existing adv_info instance for broadcast source it
    needs to be updated to periodic first before it can be reused, also in
    case the existing instance already have data hci_set_adv_instance_data
    cannot be used directly since it would overwrite the existing data so
    this reappend the original data after the Broadcast ID, if one was
    generated.
    
    Example:
    
    bluetoothctl># Add PBP to EA so it can be later referenced as the BIS ID
    bluetoothctl> advertise.service 0x1856 0x00 0x00
    bluetoothctl> advertise on
    ...
    < HCI Command: LE Set Extended Advertising Data (0x08|0x0037) plen 13
            Handle: 0x01
            Operation: Complete extended advertising data (0x03)
            Fragment preference: Minimize fragmentation (0x01)
            Data length: 0x09
            Service Data: Public Broadcast Announcement (0x1856)
              Data[2]: 0000
            Flags: 0x06
              LE General Discoverable Mode
              BR/EDR Not Supported
    ...
    bluetoothctl># Attempt to acquire Broadcast Source transport
    bluetoothctl>transport.acquire /org/bluez/hci0/pac_bcast0/fd0
    ...
    < HCI Command: LE Set Extended Advertising Data (0x08|0x0037) plen 255
            Handle: 0x01
            Operation: Complete extended advertising data (0x03)
            Fragment preference: Minimize fragmentation (0x01)
            Data length: 0x0e
            Service Data: Broadcast Audio Announcement (0x1852)
            Broadcast ID: 11371620 (0xad8464)
            Service Data: Public Broadcast Announcement (0x1856)
              Data[2]: 0000
            Flags: 0x06
              LE General Discoverable Mode
              BR/EDR Not Supported
    
    Link: https://github.com/bluez/bluez/issues/1117
    Fixes: eca0ae4aea66 ("Bluetooth: Add initial implementation of BIS connections")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: ISO: Fix not using SID from adv report [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Fri Apr 11 12:37:50 2025 -0400

    Bluetooth: ISO: Fix not using SID from adv report
    
    [ Upstream commit e2d471b7806b09744d65a64bcf41337468f2443b ]
    
    Up until now it has been assumed that the application would be able to
    enter the advertising SID in sockaddr_iso_bc.bc_sid, but userspace has
    no access to SID since the likes of MGMT_EV_DEVICE_FOUND cannot carry
    it, so it was left unset (0x00) which means it would be unable to
    synchronize if the broadcast source is using a different SID e.g. 0x04:
    
    > HCI Event: LE Meta Event (0x3e) plen 57
          LE Extended Advertising Report (0x0d)
            Num reports: 1
            Entry 0
              Event type: 0x0000
                Props: 0x0000
                Data status: Complete
              Address type: Random (0x01)
              Address: 0B:82:E8:50:6D:C8 (Non-Resolvable)
              Primary PHY: LE 1M
              Secondary PHY: LE 2M
              SID: 0x04
              TX power: 127 dBm
              RSSI: -55 dBm (0xc9)
              Periodic advertising interval: 180.00 msec (0x0090)
              Direct address type: Public (0x00)
              Direct address: 00:00:00:00:00:00 (OUI 00-00-00)
              Data length: 0x1f
            06 16 52 18 5b 0b e1 05 16 56 18 04 00 11 30 4c  ..R.[....V....0L
            75 69 7a 27 73 20 53 32 33 20 55 6c 74 72 61     uiz's S23 Ultra
            Service Data: Broadcast Audio Announcement (0x1852)
            Broadcast ID: 14748507 (0xe10b5b)
            Service Data: Public Broadcast Announcement (0x1856)
              Data[2]: 0400
            Unknown EIR field 0x30[16]: 4c75697a27732053323320556c747261
    < HCI Command: LE Periodic Advertising Create Sync (0x08|0x0044) plen 14
            Options: 0x0000
            Use advertising SID, Advertiser Address Type and address
            Reporting initially enabled
            SID: 0x00 (<- Invalid)
            Adv address type: Random (0x01)
            Adv address: 0B:82:E8:50:6D:C8 (Non-Resolvable)
            Skip: 0x0000
            Sync timeout: 20000 msec (0x07d0)
            Sync CTE type: 0x0000
    
    So instead this changes now allow application to set HCI_SID_INVALID
    which will make hci_le_pa_create_sync to wait for a report, update the
    conn->sid using the report SID and only then issue PA create sync
    command:
    
    < HCI Command: LE Periodic Advertising Create Sync
            Options: 0x0000
            Use advertising SID, Advertiser Address Type and address
            Reporting initially enabled
            SID: 0x04
            Adv address type: Random (0x01)
            Adv address: 0B:82:E8:50:6D:C8 (Non-Resolvable)
            Skip: 0x0000
            Sync timeout: 20000 msec (0x07d0)
            Sync CTE type: 0x0000
    > HCI Event: LE Meta Event (0x3e) plen 16
          LE Periodic Advertising Sync Established (0x0e)
            Status: Success (0x00)
            Sync handle: 64
            Advertising SID: 0x04
            Advertiser address type: Random (0x01)
            Advertiser address: 0B:82:E8:50:6D:C8 (Non-Resolvable)
            Advertiser PHY: LE 2M (0x02)
            Periodic advertising interval: 180.00 msec (0x0090)
            Advertiser clock accuracy: 0x05
    
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: L2CAP: Fix not responding with L2CAP_CR_LE_ENCRYPTION [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Wed May 28 14:53:11 2025 -0400

    Bluetooth: L2CAP: Fix not responding with L2CAP_CR_LE_ENCRYPTION
    
    [ Upstream commit 03dba9cea72f977e873e4e60e220fa596959dd8f ]
    
    Depending on the security set the response to L2CAP_LE_CONN_REQ shall be
    just L2CAP_CR_LE_ENCRYPTION if only encryption when BT_SECURITY_MEDIUM
    is selected since that means security mode 2 which doesn't require
    authentication which is something that is covered in the qualification
    test L2CAP/LE/CFC/BV-25-C.
    
    Link: https://github.com/bluez/bluez/issues/1270
    Fixes: 27e2d4c8d28b ("Bluetooth: Add basic LE L2CAP connect request receiving support")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: MGMT: Fix sparse errors [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Wed Jun 11 16:36:27 2025 -0400

    Bluetooth: MGMT: Fix sparse errors
    
    [ Upstream commit 7dd38ba4acbea9875b4ee061e20a26413e39d9f4 ]
    
    This fixes the following errors:
    
    net/bluetooth/mgmt.c:5400:59: sparse: sparse: incorrect type in argument 3
    (different base types) @@     expected unsigned short [usertype] handle @@
    got restricted __le16 [usertype] monitor_handle @@
    net/bluetooth/mgmt.c:5400:59: sparse:     expected unsigned short [usertype] handle
    net/bluetooth/mgmt.c:5400:59: sparse:     got restricted __le16 [usertype] monitor_handle
    
    Fixes: e6ed54e86aae ("Bluetooth: MGMT: Fix UAF on mgmt_remove_adv_monitor_complete")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: MGMT: Fix UAF on mgmt_remove_adv_monitor_complete [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Tue Jun 3 16:12:39 2025 -0400

    Bluetooth: MGMT: Fix UAF on mgmt_remove_adv_monitor_complete
    
    [ Upstream commit e6ed54e86aae9e4f7286ce8d5c73780f91b48d1c ]
    
    This reworks MGMT_OP_REMOVE_ADV_MONITOR to not use mgmt_pending_add to
    avoid crashes like bellow:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in mgmt_remove_adv_monitor_complete+0xe5/0x540 net/bluetooth/mgmt.c:5406
    Read of size 8 at addr ffff88801c53f318 by task kworker/u5:5/5341
    
    CPU: 0 UID: 0 PID: 5341 Comm: kworker/u5:5 Not tainted 6.15.0-syzkaller-10402-g4cb6c8af8591 #0 PREEMPT(full)
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    Workqueue: hci0 hci_cmd_sync_work
    Call Trace:
     <TASK>
     dump_stack_lvl+0x189/0x250 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:408 [inline]
     print_report+0xd2/0x2b0 mm/kasan/report.c:521
     kasan_report+0x118/0x150 mm/kasan/report.c:634
     mgmt_remove_adv_monitor_complete+0xe5/0x540 net/bluetooth/mgmt.c:5406
     hci_cmd_sync_work+0x261/0x3a0 net/bluetooth/hci_sync.c:334
     process_one_work kernel/workqueue.c:3238 [inline]
     process_scheduled_works+0xade/0x17b0 kernel/workqueue.c:3321
     worker_thread+0x8a0/0xda0 kernel/workqueue.c:3402
     kthread+0x711/0x8a0 kernel/kthread.c:464
     ret_from_fork+0x3fc/0x770 arch/x86/kernel/process.c:148
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
     </TASK>
    
    Allocated by task 5987:
     kasan_save_stack mm/kasan/common.c:47 [inline]
     kasan_save_track+0x3e/0x80 mm/kasan/common.c:68
     poison_kmalloc_redzone mm/kasan/common.c:377 [inline]
     __kasan_kmalloc+0x93/0xb0 mm/kasan/common.c:394
     kasan_kmalloc include/linux/kasan.h:260 [inline]
     __kmalloc_cache_noprof+0x230/0x3d0 mm/slub.c:4358
     kmalloc_noprof include/linux/slab.h:905 [inline]
     kzalloc_noprof include/linux/slab.h:1039 [inline]
     mgmt_pending_new+0x65/0x240 net/bluetooth/mgmt_util.c:252
     mgmt_pending_add+0x34/0x120 net/bluetooth/mgmt_util.c:279
     remove_adv_monitor+0x103/0x1b0 net/bluetooth/mgmt.c:5454
     hci_mgmt_cmd+0x9c9/0xef0 net/bluetooth/hci_sock.c:1719
     hci_sock_sendmsg+0x6ca/0xef0 net/bluetooth/hci_sock.c:1839
     sock_sendmsg_nosec net/socket.c:712 [inline]
     __sock_sendmsg+0x219/0x270 net/socket.c:727
     sock_write_iter+0x258/0x330 net/socket.c:1131
     new_sync_write fs/read_write.c:593 [inline]
     vfs_write+0x548/0xa90 fs/read_write.c:686
     ksys_write+0x145/0x250 fs/read_write.c:738
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xfa/0x3b0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 5989:
     kasan_save_stack mm/kasan/common.c:47 [inline]
     kasan_save_track+0x3e/0x80 mm/kasan/common.c:68
     kasan_save_free_info+0x46/0x50 mm/kasan/generic.c:576
     poison_slab_object mm/kasan/common.c:247 [inline]
     __kasan_slab_free+0x62/0x70 mm/kasan/common.c:264
     kasan_slab_free include/linux/kasan.h:233 [inline]
     slab_free_hook mm/slub.c:2380 [inline]
     slab_free mm/slub.c:4642 [inline]
     kfree+0x18e/0x440 mm/slub.c:4841
     mgmt_pending_foreach+0xc9/0x120 net/bluetooth/mgmt_util.c:242
     mgmt_index_removed+0x10d/0x2f0 net/bluetooth/mgmt.c:9366
     hci_sock_bind+0xbe9/0x1000 net/bluetooth/hci_sock.c:1314
     __sys_bind_socket net/socket.c:1810 [inline]
     __sys_bind+0x2c3/0x3e0 net/socket.c:1841
     __do_sys_bind net/socket.c:1846 [inline]
     __se_sys_bind net/socket.c:1844 [inline]
     __x64_sys_bind+0x7a/0x90 net/socket.c:1844
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xfa/0x3b0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 66bd095ab5d4 ("Bluetooth: advmon offload MSFT remove monitor")
    Closes: https://syzkaller.appspot.com/bug?extid=feb0dc579bbe30a13190
    Reported-by: [email protected]
    Tested-by: [email protected]
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: MGMT: iterate over mesh commands in mgmt_mesh_foreach() [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Tue May 20 11:42:30 2025 +0300

    Bluetooth: MGMT: iterate over mesh commands in mgmt_mesh_foreach()
    
    [ Upstream commit 3bb88524b7d030160bb3c9b35f928b2778092111 ]
    
    In 'mgmt_mesh_foreach()', iterate over mesh commands
    rather than generic mgmt ones. Compile tested only.
    
    Fixes: b338d91703fa ("Bluetooth: Implement support for Mesh")
    Signed-off-by: Dmitry Antipov <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: MGMT: Protect mgmt_pending list with its own lock [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Tue May 20 15:42:21 2025 -0400

    Bluetooth: MGMT: Protect mgmt_pending list with its own lock
    
    [ Upstream commit 6fe26f694c824b8a4dbf50c635bee1302e3f099c ]
    
    This uses a mutex to protect from concurrent access of mgmt_pending
    list which can cause crashes like:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in hci_sock_get_channel+0x60/0x68 net/bluetooth/hci_sock.c:91
    Read of size 2 at addr ffff0000c48885b2 by task syz.4.334/7318
    
    CPU: 0 UID: 0 PID: 7318 Comm: syz.4.334 Not tainted 6.15.0-rc7-syzkaller-g187899f4124a #0 PREEMPT
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/12/2025
    Call trace:
     show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:466 (C)
     __dump_stack+0x30/0x40 lib/dump_stack.c:94
     dump_stack_lvl+0xd8/0x12c lib/dump_stack.c:120
     print_address_description+0xa8/0x254 mm/kasan/report.c:408
     print_report+0x68/0x84 mm/kasan/report.c:521
     kasan_report+0xb0/0x110 mm/kasan/report.c:634
     __asan_report_load2_noabort+0x20/0x2c mm/kasan/report_generic.c:379
     hci_sock_get_channel+0x60/0x68 net/bluetooth/hci_sock.c:91
     mgmt_pending_find+0x7c/0x140 net/bluetooth/mgmt_util.c:223
     pending_find net/bluetooth/mgmt.c:947 [inline]
     remove_adv_monitor+0x44/0x1a4 net/bluetooth/mgmt.c:5445
     hci_mgmt_cmd+0x780/0xc00 net/bluetooth/hci_sock.c:1712
     hci_sock_sendmsg+0x544/0xbb0 net/bluetooth/hci_sock.c:1832
     sock_sendmsg_nosec net/socket.c:712 [inline]
     __sock_sendmsg net/socket.c:727 [inline]
     sock_write_iter+0x25c/0x378 net/socket.c:1131
     new_sync_write fs/read_write.c:591 [inline]
     vfs_write+0x62c/0x97c fs/read_write.c:684
     ksys_write+0x120/0x210 fs/read_write.c:736
     __do_sys_write fs/read_write.c:747 [inline]
     __se_sys_write fs/read_write.c:744 [inline]
     __arm64_sys_write+0x7c/0x90 fs/read_write.c:744
     __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
     invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:49
     el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:132
     do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:151
     el0_svc+0x58/0x17c arch/arm64/kernel/entry-common.c:767
     el0t_64_sync_handler+0x78/0x108 arch/arm64/kernel/entry-common.c:786
     el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600
    
    Allocated by task 7037:
     kasan_save_stack mm/kasan/common.c:47 [inline]
     kasan_save_track+0x40/0x78 mm/kasan/common.c:68
     kasan_save_alloc_info+0x44/0x54 mm/kasan/generic.c:562
     poison_kmalloc_redzone mm/kasan/common.c:377 [inline]
     __kasan_kmalloc+0x9c/0xb4 mm/kasan/common.c:394
     kasan_kmalloc include/linux/kasan.h:260 [inline]
     __do_kmalloc_node mm/slub.c:4327 [inline]
     __kmalloc_noprof+0x2fc/0x4c8 mm/slub.c:4339
     kmalloc_noprof include/linux/slab.h:909 [inline]
     sk_prot_alloc+0xc4/0x1f0 net/core/sock.c:2198
     sk_alloc+0x44/0x3ac net/core/sock.c:2254
     bt_sock_alloc+0x4c/0x300 net/bluetooth/af_bluetooth.c:148
     hci_sock_create+0xa8/0x194 net/bluetooth/hci_sock.c:2202
     bt_sock_create+0x14c/0x24c net/bluetooth/af_bluetooth.c:132
     __sock_create+0x43c/0x91c net/socket.c:1541
     sock_create net/socket.c:1599 [inline]
     __sys_socket_create net/socket.c:1636 [inline]
     __sys_socket+0xd4/0x1c0 net/socket.c:1683
     __do_sys_socket net/socket.c:1697 [inline]
     __se_sys_socket net/socket.c:1695 [inline]
     __arm64_sys_socket+0x7c/0x94 net/socket.c:1695
     __invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
     invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:49
     el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:132
     do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:151
     el0_svc+0x58/0x17c arch/arm64/kernel/entry-common.c:767
     el0t_64_sync_handler+0x78/0x108 arch/arm64/kernel/entry-common.c:786
     el0t_64_sync+0x198/0x19c arch/arm64/kernel/entry.S:600
    
    Freed by task 6607:
     kasan_save_stack mm/kasan/common.c:47 [inline]
     kasan_save_track+0x40/0x78 mm/kasan/common.c:68
     kasan_save_free_info+0x58/0x70 mm/kasan/generic.c:576
     poison_slab_object mm/kasan/common.c:247 [inline]
     __kasan_slab_free+0x68/0x88 mm/kasan/common.c:264
     kasan_slab_free include/linux/kasan.h:233 [inline]
     slab_free_hook mm/slub.c:2380 [inline]
     slab_free mm/slub.c:4642 [inline]
     kfree+0x17c/0x474 mm/slub.c:4841
     sk_prot_free net/core/sock.c:2237 [inline]
     __sk_destruct+0x4f4/0x760 net/core/sock.c:2332
     sk_destruct net/core/sock.c:2360 [inline]
     __sk_free+0x320/0x430 net/core/sock.c:2371
     sk_free+0x60/0xc8 net/core/sock.c:2382
     sock_put include/net/sock.h:1944 [inline]
     mgmt_pending_free+0x88/0x118 net/bluetooth/mgmt_util.c:290
     mgmt_pending_remove+0xec/0x104 net/bluetooth/mgmt_util.c:298
     mgmt_set_powered_complete+0x418/0x5cc net/bluetooth/mgmt.c:1355
     hci_cmd_sync_work+0x204/0x33c net/bluetooth/hci_sync.c:334
     process_one_work+0x7e8/0x156c kernel/workqueue.c:3238
     process_scheduled_works kernel/workqueue.c:3319 [inline]
     worker_thread+0x958/0xed8 kernel/workqueue.c:3400
     kthread+0x5fc/0x75c kernel/kthread.c:464
     ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:847
    
    Fixes: a380b6cff1a2 ("Bluetooth: Add generic mgmt helper API")
    Closes: https://syzkaller.appspot.com/bug?extid=0a7039d5d9986ff4ecec
    Closes: https://syzkaller.appspot.com/bug?extid=cc0cc52e7f43dc9e6df1
    Reported-by: [email protected]
    Tested-by: [email protected]
    Tested-by: [email protected]
    Signed-off-by: Dmitry Antipov <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: MGMT: Remove unused mgmt_pending_find_data [+ + +]
Author: Dr. David Alan Gilbert <[email protected]>
Date:   Mon Jan 27 21:37:15 2025 +0000

    Bluetooth: MGMT: Remove unused mgmt_pending_find_data
    
    [ Upstream commit 276af34d82f13bda0b2a4d9786c90b8bbf1cd064 ]
    
    mgmt_pending_find_data() last use was removed in 2021 by
    commit 5a7501374664 ("Bluetooth: hci_sync: Convert MGMT_OP_GET_CLOCK_INFO")
    
    Remove it.
    
    Signed-off-by: Dr. David Alan Gilbert <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Stable-dep-of: 6fe26f694c82 ("Bluetooth: MGMT: Protect mgmt_pending list with its own lock")
    Signed-off-by: Sasha Levin <[email protected]>

 
bonding: assign random address if device address is same as bond [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Thu Apr 24 04:22:38 2025 +0000

    bonding: assign random address if device address is same as bond
    
    [ Upstream commit 5c3bf6cba7911f470afd748606be5c03a9512fcc ]
    
    This change addresses a MAC address conflict issue in failover scenarios,
    similar to the problem described in commit a951bc1e6ba5 ("bonding: correct
    the MAC address for 'follow' fail_over_mac policy").
    
    In fail_over_mac=follow mode, the bonding driver expects the formerly active
    slave to swap MAC addresses with the newly active slave during failover.
    However, under certain conditions, two slaves may end up with the same MAC
    address, which breaks this policy:
    
    1) ip link set eth0 master bond0
       -> bond0 adopts eth0's MAC address (MAC0).
    
    2) ip link set eth1 master bond0
       -> eth1 is added as a backup with its own MAC (MAC1).
    
    3) ip link set eth0 nomaster
       -> eth0 is released and restores its MAC (MAC0).
       -> eth1 becomes the active slave, and bond0 assigns MAC0 to eth1.
    
    4) ip link set eth0 master bond0
       -> eth0 is re-added to bond0, now both eth0 and eth1 have MAC0.
    
    This results in a MAC address conflict and violates the expected behavior
    of the failover policy.
    
    To fix this, we assign a random MAC address to any newly added slave if
    its current MAC address matches that of the bond. The original (permanent)
    MAC address is saved and will be restored when the device is released
    from the bond.
    
    This ensures that each slave has a unique MAC address during failover
    transitions, preserving the integrity of the fail_over_mac=follow policy.
    
    Fixes: 3915c1e8634a ("bonding: Add "follow" option to fail_over_mac")
    Signed-off-by: Hangbin Liu <[email protected]>
    Acked-by: Jay Vosburgh <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf, sockmap: Avoid using sk_socket after free when sending [+ + +]
Author: Jiayuan Chen <[email protected]>
Date:   Fri May 16 22:17:12 2025 +0800

    bpf, sockmap: Avoid using sk_socket after free when sending
    
    [ Upstream commit 8259eb0e06d8f64c700f5fbdb28a5c18e10de291 ]
    
    The sk->sk_socket is not locked or referenced in backlog thread, and
    during the call to skb_send_sock(), there is a race condition with
    the release of sk_socket. All types of sockets(tcp/udp/unix/vsock)
    will be affected.
    
    Race conditions:
    '''
    CPU0                               CPU1
    
    backlog::skb_send_sock
      sendmsg_unlocked
        sock_sendmsg
          sock_sendmsg_nosec
                                       close(fd):
                                         ...
                                         ops->release() -> sock_map_close()
                                         sk_socket->ops = NULL
                                         free(socket)
          sock->ops->sendmsg
                ^
                panic here
    '''
    
    The ref of psock become 0 after sock_map_close() executed.
    '''
    void sock_map_close()
    {
        ...
        if (likely(psock)) {
        ...
        // !! here we remove psock and the ref of psock become 0
        sock_map_remove_links(sk, psock)
        psock = sk_psock_get(sk);
        if (unlikely(!psock))
            goto no_psock; <=== Control jumps here via goto
            ...
            cancel_delayed_work_sync(&psock->work); <=== not executed
            sk_psock_put(sk, psock);
            ...
    }
    '''
    
    Based on the fact that we already wait for the workqueue to finish in
    sock_map_close() if psock is held, we simply increase the psock
    reference count to avoid race conditions.
    
    With this patch, if the backlog thread is running, sock_map_close() will
    wait for the backlog thread to complete and cancel all pending work.
    
    If no backlog running, any pending work that hasn't started by then will
    fail when invoked by sk_psock_get(), as the psock reference count have
    been zeroed, and sk_psock_drop() will cancel all jobs via
    cancel_delayed_work_sync().
    
    In summary, we require synchronization to coordinate the backlog thread
    and close() thread.
    
    The panic I catched:
    '''
    Workqueue: events sk_psock_backlog
    RIP: 0010:sock_sendmsg+0x21d/0x440
    RAX: 0000000000000000 RBX: ffffc9000521fad8 RCX: 0000000000000001
    ...
    Call Trace:
     <TASK>
     ? die_addr+0x40/0xa0
     ? exc_general_protection+0x14c/0x230
     ? asm_exc_general_protection+0x26/0x30
     ? sock_sendmsg+0x21d/0x440
     ? sock_sendmsg+0x3e0/0x440
     ? __pfx_sock_sendmsg+0x10/0x10
     __skb_send_sock+0x543/0xb70
     sk_psock_backlog+0x247/0xb80
    ...
    '''
    
    Fixes: 4b4647add7d3 ("sock_map: avoid race between sock_map_close and sk_psock_put")
    Reported-by: Michal Luczaj <[email protected]>
    Signed-off-by: Jiayuan Chen <[email protected]>
    Signed-off-by: Martin KaFai Lau <[email protected]>
    Reviewed-by: John Fastabend <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

bpf, sockmap: fix duplicated data transmission [+ + +]
Author: Jiayuan Chen <[email protected]>
Date:   Mon Apr 7 22:21:21 2025 +0800

    bpf, sockmap: fix duplicated data transmission
    
    [ Upstream commit 3b4f14b794287be137ea2c6158765d1ea1e018a4 ]
    
    In the !ingress path under sk_psock_handle_skb(), when sending data to the
    remote under snd_buf limitations, partial skb data might be transmitted.
    
    Although we preserved the partial transmission state (offset/length), the
    state wasn't properly consumed during retries. This caused the retry path
    to resend the entire skb data instead of continuing from the previous
    offset, resulting in data overlap at the receiver side.
    
    Fixes: 405df89dd52c ("bpf, sockmap: Improved check for empty queue")
    Signed-off-by: Jiayuan Chen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf, sockmap: Fix panic when calling skb_linearize [+ + +]
Author: Jiayuan Chen <[email protected]>
Date:   Mon Apr 7 22:21:22 2025 +0800

    bpf, sockmap: Fix panic when calling skb_linearize
    
    [ Upstream commit 5ca2e29f6834c64c0e5a9ccf1278c21fb49b827e ]
    
    The panic can be reproduced by executing the command:
    ./bench sockmap -c 2 -p 1 -a --rx-verdict-ingress --rx-strp 100000
    
    Then a kernel panic was captured:
    '''
    [  657.460555] kernel BUG at net/core/skbuff.c:2178!
    [  657.462680] Tainted: [W]=WARN
    [  657.463287] Workqueue: events sk_psock_backlog
    ...
    [  657.469610]  <TASK>
    [  657.469738]  ? die+0x36/0x90
    [  657.469916]  ? do_trap+0x1d0/0x270
    [  657.470118]  ? pskb_expand_head+0x612/0xf40
    [  657.470376]  ? pskb_expand_head+0x612/0xf40
    [  657.470620]  ? do_error_trap+0xa3/0x170
    [  657.470846]  ? pskb_expand_head+0x612/0xf40
    [  657.471092]  ? handle_invalid_op+0x2c/0x40
    [  657.471335]  ? pskb_expand_head+0x612/0xf40
    [  657.471579]  ? exc_invalid_op+0x2d/0x40
    [  657.471805]  ? asm_exc_invalid_op+0x1a/0x20
    [  657.472052]  ? pskb_expand_head+0xd1/0xf40
    [  657.472292]  ? pskb_expand_head+0x612/0xf40
    [  657.472540]  ? lock_acquire+0x18f/0x4e0
    [  657.472766]  ? find_held_lock+0x2d/0x110
    [  657.472999]  ? __pfx_pskb_expand_head+0x10/0x10
    [  657.473263]  ? __kmalloc_cache_noprof+0x5b/0x470
    [  657.473537]  ? __pfx___lock_release.isra.0+0x10/0x10
    [  657.473826]  __pskb_pull_tail+0xfd/0x1d20
    [  657.474062]  ? __kasan_slab_alloc+0x4e/0x90
    [  657.474707]  sk_psock_skb_ingress_enqueue+0x3bf/0x510
    [  657.475392]  ? __kasan_kmalloc+0xaa/0xb0
    [  657.476010]  sk_psock_backlog+0x5cf/0xd70
    [  657.476637]  process_one_work+0x858/0x1a20
    '''
    
    The panic originates from the assertion BUG_ON(skb_shared(skb)) in
    skb_linearize(). A previous commit(see Fixes tag) introduced skb_get()
    to avoid race conditions between skb operations in the backlog and skb
    release in the recvmsg path. However, this caused the panic to always
    occur when skb_linearize is executed.
    
    The "--rx-strp 100000" parameter forces the RX path to use the strparser
    module which aggregates data until it reaches 100KB before calling sockmap
    logic. The 100KB payload exceeds MAX_MSG_FRAGS, triggering skb_linearize.
    
    To fix this issue, just move skb_get into sk_psock_skb_ingress_enqueue.
    
    '''
    sk_psock_backlog:
        sk_psock_handle_skb
           skb_get(skb) <== we move it into 'sk_psock_skb_ingress_enqueue'
           sk_psock_skb_ingress____________
                                           ↓
                                           |
                                           | → sk_psock_skb_ingress_self
                                           |      sk_psock_skb_ingress_enqueue
    sk_psock_verdict_apply_________________↑          skb_linearize
    '''
    
    Note that for verdict_apply path, the skb_get operation is unnecessary so
    we add 'take_ref' param to control it's behavior.
    
    Fixes: a454d84ee20b ("bpf, sockmap: Fix skb refcnt race after locking changes")
    Signed-off-by: Jiayuan Chen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: Allow XDP dev-bound programs to perform XDP_REDIRECT into maps [+ + +]
Author: Lorenzo Bianconi <[email protected]>
Date:   Mon Apr 28 17:44:02 2025 +0200

    bpf: Allow XDP dev-bound programs to perform XDP_REDIRECT into maps
    
    [ Upstream commit 714070c4cb7a10ff57450a618a936775f3036245 ]
    
    In the current implementation if the program is dev-bound to a specific
    device, it will not be possible to perform XDP_REDIRECT into a DEVMAP
    or CPUMAP even if the program is running in the driver NAPI context and
    it is not attached to any map entry. This seems in contrast with the
    explanation available in bpf_prog_map_compatible routine.
    Fix the issue introducing __bpf_prog_map_compatible utility routine in
    order to avoid bpf_prog_is_dev_bound() check running bpf_check_tail_call()
    at program load time (bpf_prog_select_runtime()).
    Continue forbidding to attach a dev-bound program to XDP maps
    (BPF_MAP_TYPE_PROG_ARRAY, BPF_MAP_TYPE_DEVMAP and BPF_MAP_TYPE_CPUMAP).
    
    Fixes: 3d76a4d3d4e59 ("bpf: XDP metadata RX kfuncs")
    Signed-off-by: Lorenzo Bianconi <[email protected]>
    Signed-off-by: Martin KaFai Lau <[email protected]>
    Acked-by: Stanislav Fomichev <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Avoid __bpf_prog_ret0_warn when jit fails [+ + +]
Author: KaFai Wan <[email protected]>
Date:   Mon May 26 21:33:58 2025 +0800

    bpf: Avoid __bpf_prog_ret0_warn when jit fails
    
    [ Upstream commit 86bc9c742426a16b52a10ef61f5b721aecca2344 ]
    
    syzkaller reported an issue:
    
    WARNING: CPU: 3 PID: 217 at kernel/bpf/core.c:2357 __bpf_prog_ret0_warn+0xa/0x20 kernel/bpf/core.c:2357
    Modules linked in:
    CPU: 3 UID: 0 PID: 217 Comm: kworker/u32:6 Not tainted 6.15.0-rc4-syzkaller-00040-g8bac8898fe39
    RIP: 0010:__bpf_prog_ret0_warn+0xa/0x20 kernel/bpf/core.c:2357
    Call Trace:
     <TASK>
     bpf_dispatcher_nop_func include/linux/bpf.h:1316 [inline]
     __bpf_prog_run include/linux/filter.h:718 [inline]
     bpf_prog_run include/linux/filter.h:725 [inline]
     cls_bpf_classify+0x74a/0x1110 net/sched/cls_bpf.c:105
     ...
    
    When creating bpf program, 'fp->jit_requested' depends on bpf_jit_enable.
    This issue is triggered because of CONFIG_BPF_JIT_ALWAYS_ON is not set
    and bpf_jit_enable is set to 1, causing the arch to attempt JIT the prog,
    but jit failed due to FAULT_INJECTION. As a result, incorrectly
    treats the program as valid, when the program runs it calls
    `__bpf_prog_ret0_warn` and triggers the WARN_ON_ONCE(1).
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/bpf/[email protected]
    Fixes: fa9dd599b4da ("bpf: get rid of pure_initcall dependency to enable jits")
    Signed-off-by: KaFai Wan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Check link_create.flags parameter for multi_kprobe [+ + +]
Author: Tao Chen <[email protected]>
Date:   Mon Apr 7 11:57:51 2025 +0800

    bpf: Check link_create.flags parameter for multi_kprobe
    
    [ Upstream commit 243911982aa9faf4361aa952f879331ad66933fe ]
    
    The link_create.flags are currently not used for multi-kprobes, so return
    -EINVAL if it is set, same as for other attach APIs.
    
    We allow target_fd, on the other hand, to have an arbitrary value for
    multi-kprobe, as there are existing users (libbpf) relying on this.
    
    Fixes: 0dcac2725406 ("bpf: Add multi kprobe link")
    Signed-off-by: Tao Chen <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

bpf: fix ktls panic with sockmap [+ + +]
Author: Jiayuan Chen <[email protected]>
Date:   Wed Feb 19 13:20:14 2025 +0800

    bpf: fix ktls panic with sockmap
    
    [ Upstream commit 54a3ecaeeeae8176da8badbd7d72af1017032c39 ]
    
    [ 2172.936997] ------------[ cut here ]------------
    [ 2172.936999] kernel BUG at lib/iov_iter.c:629!
    ......
    [ 2172.944996] PKRU: 55555554
    [ 2172.945155] Call Trace:
    [ 2172.945299]  <TASK>
    [ 2172.945428]  ? die+0x36/0x90
    [ 2172.945601]  ? do_trap+0xdd/0x100
    [ 2172.945795]  ? iov_iter_revert+0x178/0x180
    [ 2172.946031]  ? iov_iter_revert+0x178/0x180
    [ 2172.946267]  ? do_error_trap+0x7d/0x110
    [ 2172.946499]  ? iov_iter_revert+0x178/0x180
    [ 2172.946736]  ? exc_invalid_op+0x50/0x70
    [ 2172.946961]  ? iov_iter_revert+0x178/0x180
    [ 2172.947197]  ? asm_exc_invalid_op+0x1a/0x20
    [ 2172.947446]  ? iov_iter_revert+0x178/0x180
    [ 2172.947683]  ? iov_iter_revert+0x5c/0x180
    [ 2172.947913]  tls_sw_sendmsg_locked.isra.0+0x794/0x840
    [ 2172.948206]  tls_sw_sendmsg+0x52/0x80
    [ 2172.948420]  ? inet_sendmsg+0x1f/0x70
    [ 2172.948634]  __sys_sendto+0x1cd/0x200
    [ 2172.948848]  ? find_held_lock+0x2b/0x80
    [ 2172.949072]  ? syscall_trace_enter+0x140/0x270
    [ 2172.949330]  ? __lock_release.isra.0+0x5e/0x170
    [ 2172.949595]  ? find_held_lock+0x2b/0x80
    [ 2172.949817]  ? syscall_trace_enter+0x140/0x270
    [ 2172.950211]  ? lockdep_hardirqs_on_prepare+0xda/0x190
    [ 2172.950632]  ? ktime_get_coarse_real_ts64+0xc2/0xd0
    [ 2172.951036]  __x64_sys_sendto+0x24/0x30
    [ 2172.951382]  do_syscall_64+0x90/0x170
    ......
    
    After calling bpf_exec_tx_verdict(), the size of msg_pl->sg may increase,
    e.g., when the BPF program executes bpf_msg_push_data().
    
    If the BPF program sets cork_bytes and sg.size is smaller than cork_bytes,
    it will return -ENOSPC and attempt to roll back to the non-zero copy
    logic. However, during rollback, msg->msg_iter is reset, but since
    msg_pl->sg.size has been increased, subsequent executions will exceed the
    actual size of msg_iter.
    '''
    iov_iter_revert(&msg->msg_iter, msg_pl->sg.size - orig_size);
    '''
    
    The changes in this commit are based on the following considerations:
    
    1. When cork_bytes is set, rolling back to non-zero copy logic is
    pointless and can directly go to zero-copy logic.
    
    2. We can not calculate the correct number of bytes to revert msg_iter.
    
    Assume the original data is "abcdefgh" (8 bytes), and after 3 pushes
    by the BPF program, it becomes 11-byte data: "abc?de?fgh?".
    Then, we set cork_bytes to 6, which means the first 6 bytes have been
    processed, and the remaining 5 bytes "?fgh?" will be cached until the
    length meets the cork_bytes requirement.
    
    However, some data in "?fgh?" is not within 'sg->msg_iter'
    (but in msg_pl instead), especially the data "?" we pushed.
    
    So it doesn't seem as simple as just reverting through an offset of
    msg_iter.
    
    3. For non-TLS sockets in tcp_bpf_sendmsg, when a "cork" situation occurs,
    the user-space send() doesn't return an error, and the returned length is
    the same as the input length parameter, even if some data is cached.
    
    Additionally, I saw that the current non-zero-copy logic for handling
    corking is written as:
    '''
    line 1177
    else if (ret != -EAGAIN) {
            if (ret == -ENOSPC)
                    ret = 0;
            goto send_end;
    '''
    
    So it's ok to just return 'copied' without error when a "cork" situation
    occurs.
    
    Fixes: fcb14cb1bdac ("new iov_iter flavour - ITER_UBUF")
    Fixes: d3b18ad31f93 ("tls: add bpf support to sk_msg handling")
    Signed-off-by: Jiayuan Chen <[email protected]>
    Acked-by: John Fastabend <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Fix uninitialized values in BPF_{CORE,PROBE}_READ [+ + +]
Author: Anton Protopopov <[email protected]>
Date:   Fri May 2 19:30:31 2025 +0000

    bpf: Fix uninitialized values in BPF_{CORE,PROBE}_READ
    
    [ Upstream commit 41d4ce6df3f4945341ec509a840cc002a413b6cc ]
    
    With the latest LLVM bpf selftests build will fail with
    the following error message:
    
        progs/profiler.inc.h:710:31: error: default initialization of an object of type 'typeof ((parent_task)->real_cred->uid.val)' (aka 'const unsigned int') leaves the object uninitialized and is incompatible with C++ [-Werror,-Wdefault-const-init-unsafe]
          710 |         proc_exec_data->parent_uid = BPF_CORE_READ(parent_task, real_cred, uid.val);
              |                                      ^
        tools/testing/selftests/bpf/tools/include/bpf/bpf_core_read.h:520:35: note: expanded from macro 'BPF_CORE_READ'
          520 |         ___type((src), a, ##__VA_ARGS__) __r;                               \
              |                                          ^
    
    This happens because BPF_CORE_READ (and other macro) declare the
    variable __r using the ___type macro which can inherit const modifier
    from intermediate types.
    
    Fix this by using __typeof_unqual__, when supported. (And when it
    is not supported, the problem shouldn't appear, as older compilers
    haven't complained.)
    
    Fixes: 792001f4f7aa ("libbpf: Add user-space variants of BPF_CORE_READ() family of macros")
    Fixes: a4b09a9ef945 ("libbpf: Add non-CO-RE variants of BPF_CORE_READ() macro family")
    Signed-off-by: Anton Protopopov <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Fix WARN() in get_bpf_raw_tp_regs [+ + +]
Author: Tao Chen <[email protected]>
Date:   Tue May 13 12:27:47 2025 +0800

    bpf: Fix WARN() in get_bpf_raw_tp_regs
    
    [ Upstream commit 3880cdbed1c4607e378f58fa924c5d6df900d1d3 ]
    
    syzkaller reported an issue:
    
    WARNING: CPU: 3 PID: 5971 at kernel/trace/bpf_trace.c:1861 get_bpf_raw_tp_regs+0xa4/0x100 kernel/trace/bpf_trace.c:1861
    Modules linked in:
    CPU: 3 UID: 0 PID: 5971 Comm: syz-executor205 Not tainted 6.15.0-rc5-syzkaller-00038-g707df3375124 #0 PREEMPT(full)
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
    RIP: 0010:get_bpf_raw_tp_regs+0xa4/0x100 kernel/trace/bpf_trace.c:1861
    RSP: 0018:ffffc90003636fa8 EFLAGS: 00010293
    RAX: 0000000000000000 RBX: 0000000000000003 RCX: ffffffff81c6bc4c
    RDX: ffff888032efc880 RSI: ffffffff81c6bc83 RDI: 0000000000000005
    RBP: ffff88806a730860 R08: 0000000000000005 R09: 0000000000000003
    R10: 0000000000000004 R11: 0000000000000000 R12: 0000000000000004
    R13: 0000000000000001 R14: ffffc90003637008 R15: 0000000000000900
    FS:  0000000000000000(0000) GS:ffff8880d6cdf000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f7baee09130 CR3: 0000000029f5a000 CR4: 0000000000352ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     <TASK>
     ____bpf_get_stack_raw_tp kernel/trace/bpf_trace.c:1934 [inline]
     bpf_get_stack_raw_tp+0x24/0x160 kernel/trace/bpf_trace.c:1931
     bpf_prog_ec3b2eefa702d8d3+0x43/0x47
     bpf_dispatcher_nop_func include/linux/bpf.h:1316 [inline]
     __bpf_prog_run include/linux/filter.h:718 [inline]
     bpf_prog_run include/linux/filter.h:725 [inline]
     __bpf_trace_run kernel/trace/bpf_trace.c:2363 [inline]
     bpf_trace_run3+0x23f/0x5a0 kernel/trace/bpf_trace.c:2405
     __bpf_trace_mmap_lock_acquire_returned+0xfc/0x140 include/trace/events/mmap_lock.h:47
     __traceiter_mmap_lock_acquire_returned+0x79/0xc0 include/trace/events/mmap_lock.h:47
     __do_trace_mmap_lock_acquire_returned include/trace/events/mmap_lock.h:47 [inline]
     trace_mmap_lock_acquire_returned include/trace/events/mmap_lock.h:47 [inline]
     __mmap_lock_do_trace_acquire_returned+0x138/0x1f0 mm/mmap_lock.c:35
     __mmap_lock_trace_acquire_returned include/linux/mmap_lock.h:36 [inline]
     mmap_read_trylock include/linux/mmap_lock.h:204 [inline]
     stack_map_get_build_id_offset+0x535/0x6f0 kernel/bpf/stackmap.c:157
     __bpf_get_stack+0x307/0xa10 kernel/bpf/stackmap.c:483
     ____bpf_get_stack kernel/bpf/stackmap.c:499 [inline]
     bpf_get_stack+0x32/0x40 kernel/bpf/stackmap.c:496
     ____bpf_get_stack_raw_tp kernel/trace/bpf_trace.c:1941 [inline]
     bpf_get_stack_raw_tp+0x124/0x160 kernel/trace/bpf_trace.c:1931
     bpf_prog_ec3b2eefa702d8d3+0x43/0x47
    
    Tracepoint like trace_mmap_lock_acquire_returned may cause nested call
    as the corner case show above, which will be resolved with more general
    method in the future. As a result, WARN_ON_ONCE will be triggered. As
    Alexei suggested, remove the WARN_ON_ONCE first.
    
    Fixes: 9594dc3c7e71 ("bpf: fix nested bpf tracepoints with per-cpu data")
    Reported-by: [email protected]
    Suggested-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Tao Chen <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    
    Closes: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

bpf: Revert "bpf: remove unnecessary rcu_read_{lock,unlock}() in multi-uprobe attach logic" [+ + +]
Author: Di Shen <[email protected]>
Date:   Tue May 20 13:49:43 2025 +0800

    bpf: Revert "bpf: remove unnecessary rcu_read_{lock,unlock}() in multi-uprobe attach logic"
    
    [ Upstream commit 4e2e6841ff761cc15a54e8bebcf35d7325ec78a2 ]
    
    This reverts commit 4a8f635a6054.
    
    Althought get_pid_task() internally already calls rcu_read_lock() and
    rcu_read_unlock(), the find_vpid() was not.
    
    The documentation for find_vpid() clearly states:
    "Must be called with the tasklist_lock or rcu_read_lock() held."
    
    Add proper rcu_read_lock/unlock() to protect the find_vpid().
    
    Fixes: 4a8f635a6054 ("bpf: remove unnecessary rcu_read_{lock,unlock}() in multi-uprobe attach logic")
    Reported-by: Xuewen Yan <[email protected]>
    Signed-off-by: Di Shen <[email protected]>
    Acked-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpftool: Fix regression of "bpftool cgroup tree" EINVAL on older kernels [+ + +]
Author: YiFei Zhu <[email protected]>
Date:   Mon Apr 28 21:15:36 2025 +0000

    bpftool: Fix regression of "bpftool cgroup tree" EINVAL on older kernels
    
    [ Upstream commit 43745d11bfd9683abdf08ad7a5cc403d6a9ffd15 ]
    
    If cgroup_has_attached_progs queries an attach type not supported
    by the running kernel, due to the kernel being older than the bpftool
    build, it would encounter an -EINVAL from BPF_PROG_QUERY syscall.
    
    Prior to commit 98b303c9bf05 ("bpftool: Query only cgroup-related
    attach types"), this EINVAL would be ignored by the function, allowing
    the function to only consider supported attach types. The commit
    changed so that, instead of querying all attach types, only attach
    types from the array `cgroup_attach_types` is queried. The assumption
    is that because these are only cgroup attach types, they should all
    be supported. Unfortunately this assumption may be false when the
    kernel is older than the bpftool build, where the attach types queried
    by bpftool is not yet implemented in the kernel. This would result in
    errors such as:
    
      $ bpftool cgroup tree
      CgroupPath
      ID       AttachType      AttachFlags     Name
      Error: can't query bpf programs attached to /sys/fs/cgroup: Invalid argument
    
    This patch restores the logic of ignoring EINVAL from prior to that patch.
    
    Fixes: 98b303c9bf05 ("bpftool: Query only cgroup-related attach types")
    Reported-by: Sagarika Sharma <[email protected]>
    Reported-by: Minh-Anh Nguyen <[email protected]>
    Signed-off-by: YiFei Zhu <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Acked-by: Quentin Monnet <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
brd: fix aligned_sector from brd_do_discard() [+ + +]
Author: Yu Kuai <[email protected]>
Date:   Tue May 6 14:17:55 2025 +0800

    brd: fix aligned_sector from brd_do_discard()
    
    [ Upstream commit d4099f8893b057ad7e8d61df76bdeaf807ebd679 ]
    
    The calculation is just wrong, fix it by round_up().
    
    Fixes: 9ead7efc6f3f ("brd: implement discard support")
    Signed-off-by: Yu Kuai <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

brd: fix discard end sector [+ + +]
Author: Yu Kuai <[email protected]>
Date:   Tue May 6 14:17:56 2025 +0800

    brd: fix discard end sector
    
    [ Upstream commit a26a339a654b9403f0ee1004f1db4c2b2a355460 ]
    
    brd_do_discard() just aligned start sector to page, this can only work
    if the discard size if at least one page. For example:
    
    blkdiscard /dev/ram0 -o 5120 -l 1024
    
    In this case, size = (1024 - (8192 - 5120)), which is a huge value.
    
    Fix the problem by round_down() the end sector.
    
    Fixes: 9ead7efc6f3f ("brd: implement discard support")
    Signed-off-by: Yu Kuai <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
btrfs: exit after state insertion failure at btrfs_convert_extent_bit() [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Thu Apr 10 17:11:14 2025 +0100

    btrfs: exit after state insertion failure at btrfs_convert_extent_bit()
    
    [ Upstream commit 3bf179e36da917c5d9bec71c714573ed1649b7c1 ]
    
    If insert_state() state failed it returns an error pointer and we call
    extent_io_tree_panic() which will trigger a BUG() call. However if
    CONFIG_BUG is disabled, which is an uncommon and exotic scenario, then
    we fallthrough and call cache_state() which will dereference the error
    pointer, resulting in an invalid memory access.
    
    So jump to the 'out' label after calling extent_io_tree_panic(), it also
    makes the code more clear besides dealing with the exotic scenario where
    CONFIG_BUG is disabled.
    
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: exit after state split error at set_extent_bit() [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Wed Apr 16 16:00:28 2025 +0100

    btrfs: exit after state split error at set_extent_bit()
    
    [ Upstream commit 41d69d4d78d8b179bf3bcdfc56d28a12b3a608d2 ]
    
    If split_state() returned an error we call extent_io_tree_panic() which
    will trigger a BUG() call. However if CONFIG_BUG is disabled, which is an
    uncommon and exotic scenario, then we fallthrough and hit a use after free
    when calling set_state_bits() since the extent state record which the
    local variable 'prealloc' points to was freed by split_state().
    
    So jump to the label 'out' after calling extent_io_tree_panic() and set
    the 'prealloc' pointer to NULL since split_state() has already freed it
    when it hit an error.
    
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: fix invalid data space release when truncating block in NOCOW mode [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Fri May 9 17:08:50 2025 +0100

    btrfs: fix invalid data space release when truncating block in NOCOW mode
    
    [ Upstream commit d3914d6030aa6be2993dfc223d096ff93018c236 ]
    
    If when truncating a block we fail to reserve data space and then we
    proceed anyway because we can do a NOCOW write, if we later get an error
    when trying to get the folio from the inode's mapping, we end up releasing
    data space that we haven't reserved, screwing up the bytes_may_use counter
    from the data space_info, eventually resulting in an underflow when all
    other reservations done by other tasks are released, if any, or right away
    if there are no other reservations at the moment.
    
    This is because when we get an error when trying to grab the block's folio
    we call btrfs_delalloc_release_space(), which releases metadata (which we
    have reserved) and data (which we haven't reserved).
    
    Fix this by calling btrfs_delalloc_release_space() only if we did reserve
    data space, that is, if we aren't falling back to NOCOW, meaning the local
    variable @only_release_metadata has a false value, otherwise release only
    metadata by calling btrfs_delalloc_release_metadata().
    
    Fixes: 6d4572a9d71d ("btrfs: allow btrfs_truncate_block() to fallback to nocow for data space reservation")
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: scrub: fix a wrong error type when metadata bytenr mismatches [+ + +]
Author: Qu Wenruo <[email protected]>
Date:   Mon May 5 18:56:18 2025 +0930

    btrfs: scrub: fix a wrong error type when metadata bytenr mismatches
    
    [ Upstream commit f2c19541e421b3235efc515dad88b581f00592ae ]
    
    When the bytenr doesn't match for a metadata tree block, we will report
    it as an csum error, which is incorrect and should be reported as a
    metadata error instead.
    
    Fixes: a3ddbaebc7c9 ("btrfs: scrub: introduce a helper to verify one metadata block")
    Signed-off-by: Qu Wenruo <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: scrub: update device stats when an error is detected [+ + +]
Author: Qu Wenruo <[email protected]>
Date:   Thu May 1 08:37:54 2025 +0930

    btrfs: scrub: update device stats when an error is detected
    
    [ Upstream commit ec1f3a207cdf314eae4d4ae145f1ffdb829f0652 ]
    
    [BUG]
    Since the migration to the new scrub_stripe interface, scrub no longer
    updates the device stats when hitting an error, no matter if it's a read
    or checksum mismatch error. E.g:
    
      BTRFS info (device dm-2): scrub: started on devid 1
      BTRFS error (device dm-2): unable to fixup (regular) error at logical 13631488 on dev /dev/mapper/test-scratch1 physical 13631488
      BTRFS warning (device dm-2): checksum error at logical 13631488 on dev /dev/mapper/test-scratch1, physical 13631488, root 5, inode 257, offset 0, length 4096, links 1 (path: file)
      BTRFS error (device dm-2): unable to fixup (regular) error at logical 13631488 on dev /dev/mapper/test-scratch1 physical 13631488
      BTRFS warning (device dm-2): checksum error at logical 13631488 on dev /dev/mapper/test-scratch1, physical 13631488, root 5, inode 257, offset 0, length 4096, links 1 (path: file)
      BTRFS info (device dm-2): scrub: finished on devid 1 with status: 0
    
    Note there is no line showing the device stats error update.
    
    [CAUSE]
    In the migration to the new scrub_stripe interface, we no longer call
    btrfs_dev_stat_inc_and_print().
    
    [FIX]
    - Introduce a new bitmap for metadata generation errors
      * A new bitmap
        @meta_gen_error_bitmap is introduced to record which blocks have
        metadata generation mismatch errors.
    
      * A new counter for that bitmap
        @init_nr_meta_gen_errors, is also introduced to store the number of
        generation mismatch errors that are found during the initial read.
    
        This is for the error reporting at scrub_stripe_report_errors().
    
      * New dedicated error message for unrepaired generation mismatches
    
      * Update @meta_gen_error_bitmap if a transid mismatch is hit
    
    - Add btrfs_dev_stat_inc_and_print() calls to the following call sites
      * scrub_stripe_report_errors()
      * scrub_write_endio()
        This is only for the write errors.
    
    This means there is a minor behavior change:
    
    - The timing of device stats error message
      Since we concentrate the error messages at
      scrub_stripe_report_errors(), the device stats error messages will all
      show up in one go, after the detailed scrub error messages:
    
       BTRFS error (device dm-2): unable to fixup (regular) error at logical 13631488 on dev /dev/mapper/test-scratch1 physical 13631488
       BTRFS warning (device dm-2): checksum error at logical 13631488 on dev /dev/mapper/test-scratch1, physical 13631488, root 5, inode 257, offset 0, length 4096, links 1 (path: file)
       BTRFS error (device dm-2): unable to fixup (regular) error at logical 13631488 on dev /dev/mapper/test-scratch1 physical 13631488
       BTRFS warning (device dm-2): checksum error at logical 13631488 on dev /dev/mapper/test-scratch1, physical 13631488, root 5, inode 257, offset 0, length 4096, links 1 (path: file)
       BTRFS error (device dm-2): bdev /dev/mapper/test-scratch1 errs: wr 0, rd 0, flush 0, corrupt 1, gen 0
       BTRFS error (device dm-2): bdev /dev/mapper/test-scratch1 errs: wr 0, rd 0, flush 0, corrupt 2, gen 0
    
    Fixes: e02ee89baa66 ("btrfs: scrub: switch scrub_simple_mirror() to scrub_stripe infrastructure")
    Reviewed-by: Filipe Manana <[email protected]>
    Signed-off-by: Qu Wenruo <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bus: fsl-mc: fix double-free on mc_dev [+ + +]
Author: Ioana Ciornei <[email protected]>
Date:   Tue Apr 8 13:58:09 2025 +0300

    bus: fsl-mc: fix double-free on mc_dev
    
    [ Upstream commit d694bf8a9acdbd061596f3e7549bc8cb70750a60 ]
    
    The blamed commit tried to simplify how the deallocations are done but,
    in the process, introduced a double-free on the mc_dev variable.
    
    In case the MC device is a DPRC, a new mc_bus is allocated and the
    mc_dev variable is just a reference to one of its fields. In this
    circumstance, on the error path only the mc_bus should be freed.
    
    This commit introduces back the following checkpatch warning which is a
    false-positive.
    
    WARNING: kfree(NULL) is safe and this check is probably not required
    +       if (mc_bus)
    +               kfree(mc_bus);
    
    Fixes: a042fbed0290 ("staging: fsl-mc: simplify couple of deallocations")
    Signed-off-by: Ioana Ciornei <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Christophe Leroy <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
calipso: Don't call calipso functions for AF_INET sk. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu May 22 15:18:56 2025 -0700

    calipso: Don't call calipso functions for AF_INET sk.
    
    [ Upstream commit 6e9f2df1c550ead7cecb3e450af1105735020c92 ]
    
    syzkaller reported a null-ptr-deref in txopt_get(). [0]
    
    The offset 0x70 was of struct ipv6_txoptions in struct ipv6_pinfo,
    so struct ipv6_pinfo was NULL there.
    
    However, this never happens for IPv6 sockets as inet_sk(sk)->pinet6
    is always set in inet6_create(), meaning the socket was not IPv6 one.
    
    The root cause is missing validation in netlbl_conn_setattr().
    
    netlbl_conn_setattr() switches branches based on struct
    sockaddr.sa_family, which is passed from userspace.  However,
    netlbl_conn_setattr() does not check if the address family matches
    the socket.
    
    The syzkaller must have called connect() for an IPv6 address on
    an IPv4 socket.
    
    We have a proper validation in tcp_v[46]_connect(), but
    security_socket_connect() is called in the earlier stage.
    
    Let's copy the validation to netlbl_conn_setattr().
    
    [0]:
    Oops: general protection fault, probably for non-canonical address 0xdffffc000000000e: 0000 [#1] PREEMPT SMP KASAN NOPTI
    KASAN: null-ptr-deref in range [0x0000000000000070-0x0000000000000077]
    CPU: 2 UID: 0 PID: 12928 Comm: syz.9.1677 Not tainted 6.12.0 #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
    RIP: 0010:txopt_get include/net/ipv6.h:390 [inline]
    RIP: 0010:
    Code: 02 00 00 49 8b ac 24 f8 02 00 00 e8 84 69 2a fd e8 ff 00 16 fd 48 8d 7d 70 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 53 02 00 00 48 8b 6d 70 48 85 ed 0f 84 ab 01 00
    RSP: 0018:ffff88811b8afc48 EFLAGS: 00010212
    RAX: dffffc0000000000 RBX: 1ffff11023715f8a RCX: ffffffff841ab00c
    RDX: 000000000000000e RSI: ffffc90007d9e000 RDI: 0000000000000070
    RBP: 0000000000000000 R08: ffffed1023715f9d R09: ffffed1023715f9e
    R10: ffffed1023715f9d R11: 0000000000000003 R12: ffff888123075f00
    R13: ffff88810245bd80 R14: ffff888113646780 R15: ffff888100578a80
    FS:  00007f9019bd7640(0000) GS:ffff8882d2d00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f901b927bac CR3: 0000000104788003 CR4: 0000000000770ef0
    PKRU: 80000000
    Call Trace:
     <TASK>
     calipso_sock_setattr+0x56/0x80 net/netlabel/netlabel_calipso.c:557
     netlbl_conn_setattr+0x10c/0x280 net/netlabel/netlabel_kapi.c:1177
     selinux_netlbl_socket_connect_helper+0xd3/0x1b0 security/selinux/netlabel.c:569
     selinux_netlbl_socket_connect_locked security/selinux/netlabel.c:597 [inline]
     selinux_netlbl_socket_connect+0xb6/0x100 security/selinux/netlabel.c:615
     selinux_socket_connect+0x5f/0x80 security/selinux/hooks.c:4931
     security_socket_connect+0x50/0xa0 security/security.c:4598
     __sys_connect_file+0xa4/0x190 net/socket.c:2067
     __sys_connect+0x12c/0x170 net/socket.c:2088
     __do_sys_connect net/socket.c:2098 [inline]
     __se_sys_connect net/socket.c:2095 [inline]
     __x64_sys_connect+0x73/0xb0 net/socket.c:2095
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xaa/0x1b0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f901b61a12d
    Code: 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f9019bd6fa8 EFLAGS: 00000246 ORIG_RAX: 000000000000002a
    RAX: ffffffffffffffda RBX: 00007f901b925fa0 RCX: 00007f901b61a12d
    RDX: 000000000000001c RSI: 0000200000000140 RDI: 0000000000000003
    RBP: 00007f901b701505 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 0000000000000000 R14: 00007f901b5b62a0 R15: 00007f9019bb7000
     </TASK>
    Modules linked in:
    
    Fixes: ceba1832b1b2 ("calipso: Set the calipso socket label to match the secattr.")
    Reported-by: syzkaller <[email protected]>
    Reported-by: John Cheung <[email protected]>
    Closes: https://lore.kernel.org/netdev/CAP=Rh=M1LzunrcQB1fSGauMrJrhL6GGps5cPAKzHJXj6GQV+-g@mail.gmail.com/
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Acked-by: Paul Moore <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

calipso: unlock rcu before returning -EAFNOSUPPORT [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Jun 4 13:38:26 2025 +0000

    calipso: unlock rcu before returning -EAFNOSUPPORT
    
    commit 3cae906e1a6184cdc9e4d260e4dbdf9a118d94ad upstream.
    
    syzbot reported that a recent patch forgot to unlock rcu
    in the error path.
    
    Adopt the convention that netlbl_conn_setattr() is already using.
    
    Fixes: 6e9f2df1c550 ("calipso: Don't call calipso functions for AF_INET sk.")
    Reported-by: syzbot <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Kuniyuki Iwashima <[email protected]>
    Acked-by: Paul Moore <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cifs: Fix validation of SMB1 query reparse point response [+ + +]
Author: Pali Rohár <[email protected]>
Date:   Thu Dec 26 19:55:13 2024 +0100

    cifs: Fix validation of SMB1 query reparse point response
    
    [ Upstream commit 56e84c64fc257a95728ee73165456b025c48d408 ]
    
    Validate the SMB1 query reparse point response per [MS-CIFS] section
    2.2.7.2 NT_TRANSACT_IOCTL.
    
    NT_TRANSACT_IOCTL response contains one word long setup data after which is
    ByteCount member. So check that SetupCount is 1 before trying to read and
    use ByteCount member.
    
    Output setup data contains ReturnedDataLen member which is the output
    length of executed IOCTL command by remote system. So check that output was
    not truncated before transferring over network.
    
    Change MaxSetupCount of NT_TRANSACT_IOCTL request from 4 to 1 as io_rsp
    structure already expects one word long output setup data. This should
    prevent server sending incompatible structure (in case it would be extended
    in future, which is unlikely).
    
    Change MaxParameterCount of NT_TRANSACT_IOCTL request from 2 to 0 as
    NT IOCTL does not have any documented output parameters and this function
    does not parse any output parameters at all.
    
    Fixes: ed3e0a149b58 ("smb: client: implement ->query_reparse_point() for SMB1")
    Signed-off-by: Pali Rohár <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
clk: bcm: rpi: Add NULL check in raspberrypi_clk_register() [+ + +]
Author: Henry Martin <[email protected]>
Date:   Wed Apr 2 10:05:13 2025 +0800

    clk: bcm: rpi: Add NULL check in raspberrypi_clk_register()
    
    [ Upstream commit 73c46d9a93d071ca69858dea3f569111b03e549e ]
    
    devm_kasprintf() returns NULL when memory allocation fails. Currently,
    raspberrypi_clk_register() does not check for this case, which results
    in a NULL pointer dereference.
    
    Add NULL check after devm_kasprintf() to prevent this issue.
    
    Fixes: 93d2725affd6 ("clk: bcm: rpi: Discover the firmware clocks")
    Signed-off-by: Henry Martin <[email protected]>
    Reviewed-by: Dave Stevenson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Stefan Wahren <[email protected]>
    Signed-off-by: Stephen Boyd <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Fri Apr 25 14:12:55 2025 +0200

    clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs
    
    [ Upstream commit e7b1c13280ad866f3b935f6c658713c41db61635 ]
    
    Compared to the msm-4.19 driver the mainline GDSC driver always sets the
    bits for en_rest, en_few & clk_dis, and if those values are not set
    per-GDSC in the respective driver then the default value from the GDSC
    driver is used. The downstream driver only conditionally sets
    clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
    
    Correct this situation by explicitly setting those values. For all GDSCs
    the reset value of those bits are used.
    
    Fixes: 80f5451d9a7c ("clk: qcom: Add camera clock controller driver for SM6350")
    Signed-off-by: Luca Weiss <[email protected]>
    Reviewed-by: Taniya Das <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: dispcc-sm6350: Add *_wait_val values for GDSCs [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Fri Apr 25 14:12:56 2025 +0200

    clk: qcom: dispcc-sm6350: Add *_wait_val values for GDSCs
    
    [ Upstream commit 673989d27123618afab56df1143a75454178b4ae ]
    
    Compared to the msm-4.19 driver the mainline GDSC driver always sets the
    bits for en_rest, en_few & clk_dis, and if those values are not set
    per-GDSC in the respective driver then the default value from the GDSC
    driver is used. The downstream driver only conditionally sets
    clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
    
    Correct this situation by explicitly setting those values. For all GDSCs
    the reset value of those bits are used.
    
    Fixes: 837519775f1d ("clk: qcom: Add display clock controller driver for SM6350")
    Signed-off-by: Luca Weiss <[email protected]>
    Reviewed-by: Taniya Das <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: gcc-msm8939: Fix mclk0 & mclk1 for 24 MHz [+ + +]
Author: Vincent Knecht <[email protected]>
Date:   Mon Apr 14 18:45:12 2025 +0200

    clk: qcom: gcc-msm8939: Fix mclk0 & mclk1 for 24 MHz
    
    [ Upstream commit 9e7acf70cf6aa7b22f67d911f50a8cd510e8fb00 ]
    
    Fix mclk0 & mclk1 parent map to use correct GPLL6 configuration and
    freq_tbl to use GPLL6 instead of GPLL0 so that they tick at 24 MHz.
    
    Fixes: 1664014e4679 ("clk: qcom: gcc-msm8939: Add MSM8939 Generic Clock Controller")
    Suggested-by: Stephan Gerhold <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Bryan O'Donoghue <[email protected]>
    Signed-off-by: Vincent Knecht <[email protected]>
    Link: https://lore.kernel.org/r/20250414-gcc-msm8939-fixes-mclk-v2-resend2-v2-1-5ddcf572a6de@mailoo.org
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: gcc-sm6350: Add *_wait_val values for GDSCs [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Fri Apr 25 14:12:57 2025 +0200

    clk: qcom: gcc-sm6350: Add *_wait_val values for GDSCs
    
    [ Upstream commit afdfd829a99e467869e3ca1955fb6c6e337c340a ]
    
    Compared to the msm-4.19 driver the mainline GDSC driver always sets the
    bits for en_rest, en_few & clk_dis, and if those values are not set
    per-GDSC in the respective driver then the default value from the GDSC
    driver is used. The downstream driver only conditionally sets
    clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
    
    Correct this situation by explicitly setting those values. For all GDSCs
    the reset value of those bits are used.
    
    Fixes: 131abae905df ("clk: qcom: Add SM6350 GCC driver")
    Signed-off-by: Luca Weiss <[email protected]>
    Reviewed-by: Taniya Das <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

clk: qcom: gpucc-sm6350: Add *_wait_val values for GDSCs [+ + +]
Author: Luca Weiss <[email protected]>
Date:   Fri Apr 25 14:12:58 2025 +0200

    clk: qcom: gpucc-sm6350: Add *_wait_val values for GDSCs
    
    [ Upstream commit d988b0b866c2aeb23aa74022b5bbd463165a7a33 ]
    
    Compared to the msm-4.19 driver the mainline GDSC driver always sets the
    bits for en_rest, en_few & clk_dis, and if those values are not set
    per-GDSC in the respective driver then the default value from the GDSC
    driver is used. The downstream driver only conditionally sets
    clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
    
    Correct this situation by explicitly setting those values. For all GDSCs
    the reset value of those bits are used, with the exception of
    gpu_cx_gdsc which has an explicit value (qcom,clk-dis-wait-val = <8>).
    
    Fixes: 013804a727a0 ("clk: qcom: Add GPU clock controller driver for SM6350")
    Signed-off-by: Luca Weiss <[email protected]>
    Reviewed-by: Taniya Das <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
coresight: catu: Introduce refcount and spinlock for enabling/disabling [+ + +]
Author: Yabin Cui <[email protected]>
Date:   Tue Apr 29 16:12:59 2025 -0700

    coresight: catu: Introduce refcount and spinlock for enabling/disabling
    
    [ Upstream commit a03a0a08c6fe5e50c1b12ea41b9e228e7f649c22 ]
    
    When tracing ETM data on multiple CPUs concurrently via the
    perf interface, the CATU device is shared across different CPU
    paths. This can lead to race conditions when multiple CPUs attempt
    to enable or disable the CATU device simultaneously.
    
    To address these race conditions, this patch introduces the
    following changes:
    
    1. The enable and disable operations for the CATU device are not
       reentrant. Therefore, a spinlock is added to ensure that only
       one CPU can enable or disable a given CATU device at any point
       in time.
    
    2. A reference counter is used to manage the enable/disable state
       of the CATU device. The device is enabled when the first CPU
       requires it and is only disabled when the last CPU finishes
       using it. This ensures the device remains active as long as at
       least one CPU needs it.
    
    Fixes: fcacb5c154ba ("coresight: Introduce support for Coresight Address Translation Unit")
    Signed-off-by: Yabin Cui <[email protected]>
    Reviewed-by: James Clark <[email protected]>
    Reviewed-by: Leo Yan <[email protected]>
    Signed-off-by: Suzuki K Poulose <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

coresight: Fixes device's owner field for registered using coresight_init_driver() [+ + +]
Author: Junhao He <[email protected]>
Date:   Wed Sep 18 11:53:27 2024 +0800

    coresight: Fixes device's owner field for registered using coresight_init_driver()
    
    [ Upstream commit 9f52aecc952ddf307571517d5c91136c8c4e87c9 ]
    
    The coresight_init_driver() of the coresight-core module is called from
    the sub coresgiht device (such as tmc/stm/funnle/...) module. It calls
    amba_driver_register() and Platform_driver_register(), which are macro
    functions that use the coresight-core's module to initialize the caller's
    owner field.  Therefore, when the sub coresight device calls
    coresight_init_driver(), an incorrect THIS_MODULE value is captured.
    
    The sub coesgiht modules can be removed while their callbacks are
    running, resulting in a general protection failure.
    
    Add module parameter to coresight_init_driver() so can be called
    with the module of the callback.
    
    Fixes: 075b7cd7ad7d ("coresight: Add helpers registering/removing both AMBA and platform drivers")
    Signed-off-by: Junhao He <[email protected]>
    Signed-off-by: Suzuki K Poulose <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

coresight: prevent deactivate active config while enabling the config [+ + +]
Author: Yeoreum Yun <[email protected]>
Date:   Wed May 14 17:19:51 2025 +0100

    coresight: prevent deactivate active config while enabling the config
    
    [ Upstream commit 408c97c4a5e0b634dcd15bf8b8808b382e888164 ]
    
    While enable active config via cscfg_csdev_enable_active_config(),
    active config could be deactivated via configfs' sysfs interface.
    This could make UAF issue in below scenario:
    
    CPU0                                          CPU1
    (sysfs enable)                                load module
                                                  cscfg_load_config_sets()
                                                  activate config. // sysfs
                                                  (sys_active_cnt == 1)
    ...
    cscfg_csdev_enable_active_config()
    lock(csdev->cscfg_csdev_lock)
    // here load config activate by CPU1
    unlock(csdev->cscfg_csdev_lock)
    
                                                  deactivate config // sysfs
                                                  (sys_activec_cnt == 0)
                                                  cscfg_unload_config_sets()
                                                  unload module
    
    // access to config_desc which freed
    // while unloading module.
    cscfg_csdev_enable_config
    
    To address this, use cscfg_config_desc's active_cnt as a reference count
     which will be holded when
        - activate the config.
        - enable the activated config.
    and put the module reference when config_active_cnt == 0.
    
    Fixes: f8cce2ff3c04 ("coresight: syscfg: Add API to activate and enable configurations")
    Suggested-by: Suzuki K Poulose <[email protected]>
    Signed-off-by: Yeoreum Yun <[email protected]>
    Reviewed-by: Leo Yan <[email protected]>
    Signed-off-by: Suzuki K Poulose <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
counter: interrupt-cnt: Protect enable/disable OPs with mutex [+ + +]
Author: Alexander Sverdlin <[email protected]>
Date:   Mon Mar 31 18:36:40 2025 +0200

    counter: interrupt-cnt: Protect enable/disable OPs with mutex
    
    [ Upstream commit 7351312632e831e51383f48957d47712fae791ef ]
    
    Enable/disable seems to be racy on SMP, consider the following scenario:
    
    CPU0                                    CPU1
    
    interrupt_cnt_enable_write(true)
    {
            if (priv->enabled == enable)
                    return 0;
    
            if (enable) {
                    priv->enabled = true;
                                            interrupt_cnt_enable_write(false)
                                            {
                                                    if (priv->enabled == enable)
                                                            return 0;
    
                                                    if (enable) {
                                                            priv->enabled = true;
                                                            enable_irq(priv->irq);
                                                    } else {
                                                            disable_irq(priv->irq)
                                                            priv->enabled = false;
                                                    }
                    enable_irq(priv->irq);
            } else {
                    disable_irq(priv->irq);
                    priv->enabled = false;
            }
    
    The above would result in priv->enabled == false, but IRQ left enabled.
    Protect both write (above race) and read (to propagate the value on SMP)
    callbacks with a mutex.
    
    Signed-off-by: Alexander Sverdlin <[email protected]>
    Fixes: a55ebd47f21f ("counter: add IRQ or GPIO based counter")
    Acked-by: Oleksij Rempel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: William Breathitt Gray <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
crypto: api - Redo lookup on EEXIST [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Mon May 19 18:29:38 2025 +0800

    crypto: api - Redo lookup on EEXIST
    
    [ Upstream commit 0a3cf32da469ff1df6e016f5f82b439a63d14461 ]
    
    When two crypto algorithm lookups occur at the same time with
    different names for the same algorithm, e.g., ctr(aes-generic)
    and ctr(aes), they will both be instantiated.  However, only one
    of them can be registered.  The second instantiation will fail
    with EEXIST.
    
    Avoid failing the second lookup by making it retry, but only once
    because there are tricky names such as gcm_base(ctr(aes),ghash)
    that will always fail, despite triggering instantiation and EEXIST.
    
    Reported-by: Ingo Franzki <[email protected]>
    Fixes: 2825982d9d66 ("[CRYPTO] api: Added event notification")
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: lrw - Only add ecb if it is not already there [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Thu May 15 16:28:08 2025 +0800

    crypto: lrw - Only add ecb if it is not already there
    
    [ Upstream commit 3d73909bddc2ebb3224a8bc2e5ce00e9df70c15d ]
    
    Only add ecb to the cipher name if it isn't already ecb.
    
    Also use memcmp instead of strncmp since these strings are all
    stored in an array of length CRYPTO_MAX_ALG_NAME.
    
    Fixes: 700cb3f5fe75 ("crypto: lrw - Convert to skcipher")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: marvell/cesa - Avoid empty transfer descriptor [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Sat May 10 18:43:33 2025 +0800

    crypto: marvell/cesa - Avoid empty transfer descriptor
    
    [ Upstream commit 1bafd82d9a40cf09c6c40f1c09cc35b7050b1a9f ]
    
    The user may set req->src even if req->nbytes == 0.  If there
    is no data to hash from req->src, do not generate an empty TDMA
    descriptor.
    
    Fixes: db509a45339f ("crypto: marvell/cesa - add TDMA support")
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: marvell/cesa - Handle zero-length skcipher requests [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Sat May 10 18:41:31 2025 +0800

    crypto: marvell/cesa - Handle zero-length skcipher requests
    
    [ Upstream commit 8a4e047c6cc07676f637608a9dd675349b5de0a7 ]
    
    Do not access random memory for zero-length skcipher requests.
    Just return 0.
    
    Fixes: f63601fd616a ("crypto: marvell/cesa - add a new driver for Marvell's CESA")
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: sun8i-ce - move fallback ahash_request to the end of the struct [+ + +]
Author: Ovidiu Panait <[email protected]>
Date:   Fri May 16 15:06:56 2025 +0300

    crypto: sun8i-ce - move fallback ahash_request to the end of the struct
    
    [ Upstream commit c822831b426307a6ca426621504d3c7f99765a39 ]
    
    'struct ahash_request' has a flexible array at the end, so it must be the
    last member in a struct, to avoid overwriting other struct members.
    
    Therefore, move 'fallback_req' to the end of the 'sun8i_ce_hash_reqctx'
    struct.
    
    Fixes: 56f6d5aee88d ("crypto: sun8i-ce - support hash algorithms")
    Signed-off-by: Ovidiu Panait <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: sun8i-ce - undo runtime PM changes during driver removal [+ + +]
Author: Ovidiu Panait <[email protected]>
Date:   Thu May 1 22:06:50 2025 +0300

    crypto: sun8i-ce - undo runtime PM changes during driver removal
    
    [ Upstream commit 9334f427576e6d361a409959b52246b0aa10476f ]
    
    The pm_runtime_use_autosuspend() call must be undone with
    pm_runtime_dont_use_autosuspend() at driver exit, but this is not
    currently handled in the driver.
    
    To fix this issue and at the same time simplify error handling, switch
    to devm_pm_runtime_enable(). It will call both pm_runtime_disable() and
    pm_runtime_dont_use_autosuspend() during driver removal.
    
    Fixes: 06f751b61329 ("crypto: allwinner - Add sun8i-ce Crypto Engine")
    Signed-off-by: Ovidiu Panait <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: sun8i-ce-cipher - fix error handling in sun8i_ce_cipher_prepare() [+ + +]
Author: Ovidiu Panait <[email protected]>
Date:   Fri Apr 25 15:45:14 2025 +0300

    crypto: sun8i-ce-cipher - fix error handling in sun8i_ce_cipher_prepare()
    
    [ Upstream commit f31adc3e356f7350d4a4d68c98d3f60f2f6e26b3 ]
    
    Fix two DMA cleanup issues on the error path in sun8i_ce_cipher_prepare():
    
    1] If dma_map_sg() fails for areq->dst, the device driver would try to free
       DMA memory it has not allocated in the first place. To fix this, on the
       "theend_sgs" error path, call dma unmap only if the corresponding dma
       map was successful.
    
    2] If the dma_map_single() call for the IV fails, the device driver would
       try to free an invalid DMA memory address on the "theend_iv" path:
       ------------[ cut here ]------------
       DMA-API: sun8i-ce 1904000.crypto: device driver tries to free an invalid DMA memory address
       WARNING: CPU: 2 PID: 69 at kernel/dma/debug.c:968 check_unmap+0x123c/0x1b90
       Modules linked in: skcipher_example(O+)
       CPU: 2 UID: 0 PID: 69 Comm: 1904000.crypto- Tainted: G           O        6.15.0-rc3+ #24 PREEMPT
       Tainted: [O]=OOT_MODULE
       Hardware name: OrangePi Zero2 (DT)
       pc : check_unmap+0x123c/0x1b90
       lr : check_unmap+0x123c/0x1b90
       ...
       Call trace:
        check_unmap+0x123c/0x1b90 (P)
        debug_dma_unmap_page+0xac/0xc0
        dma_unmap_page_attrs+0x1f4/0x5fc
        sun8i_ce_cipher_do_one+0x1bd4/0x1f40
        crypto_pump_work+0x334/0x6e0
        kthread_worker_fn+0x21c/0x438
        kthread+0x374/0x664
        ret_from_fork+0x10/0x20
       ---[ end trace 0000000000000000 ]---
    
    To fix this, check for !dma_mapping_error() before calling
    dma_unmap_single() on the "theend_iv" path.
    
    Fixes: 06f751b61329 ("crypto: allwinner - Add sun8i-ce Crypto Engine")
    Signed-off-by: Ovidiu Panait <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: sun8i-ce-hash - fix error handling in sun8i_ce_hash_run() [+ + +]
Author: Ovidiu Panait <[email protected]>
Date:   Tue Apr 1 22:23:16 2025 +0300

    crypto: sun8i-ce-hash - fix error handling in sun8i_ce_hash_run()
    
    [ Upstream commit ea4dd134ef332bd9e3e734c1ba0a1521f436b678 ]
    
    Rework error handling in sun8i_ce_hash_run() to unmap the dma buffers in
    case of failure. Currently, the dma unmap functions are not called if the
    function errors out at various points.
    
    Fixes: 56f6d5aee88d1 ("crypto: sun8i-ce - support hash algorithms")
    Signed-off-by: Ovidiu Panait <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: sun8i-ss - do not use sg_dma_len before calling DMA functions [+ + +]
Author: Corentin Labbe <[email protected]>
Date:   Sun Apr 27 13:12:36 2025 +0200

    crypto: sun8i-ss - do not use sg_dma_len before calling DMA functions
    
    [ Upstream commit 2dfc7cd74a5e062a5405560447517e7aab1c7341 ]
    
    When testing sun8i-ss with multi_v7_defconfig, all CBC algorithm fail crypto
    selftests.
    This is strange since on sunxi_defconfig, everything was ok.
    The problem was in the IV setup loop which never run because sg_dma_len
    was 0.
    
    Fixes: 359e893e8af4 ("crypto: sun8i-ss - rework handling of IV")
    Signed-off-by: Corentin Labbe <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

crypto: xts - Only add ecb if it is not already there [+ + +]
Author: Herbert Xu <[email protected]>
Date:   Thu May 15 16:34:04 2025 +0800

    crypto: xts - Only add ecb if it is not already there
    
    [ Upstream commit 270b6f13454cb7f2f7058c50df64df409c5dcf55 ]
    
    Only add ecb to the cipher name if it isn't already ecb.
    
    Also use memcmp instead of strncmp since these strings are all
    stored in an array of length CRYPTO_MAX_ALG_NAME.
    
    Fixes: f1c131b45410 ("crypto: xts - Convert to skcipher")
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm-flakey: error all IOs when num_features is absent [+ + +]
Author: Benjamin Marzinski <[email protected]>
Date:   Tue Apr 22 19:47:36 2025 -0400

    dm-flakey: error all IOs when num_features is absent
    
    [ Upstream commit 40ed054f39bc99eac09871c33198e501f4acdf24 ]
    
    dm-flakey would error all IOs if num_features was 0, but if it was
    absent, dm-flakey would never error any IO. Fix this so that no
    num_features works the same as num_features set to 0.
    
    Fixes: aa7d7bc99fed7 ("dm flakey: add an "error_reads" option")
    Reported-by: Kent Overstreet <[email protected]>
    Signed-off-by: Benjamin Marzinski <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dm-flakey: make corrupting read bios work [+ + +]
Author: Benjamin Marzinski <[email protected]>
Date:   Tue Apr 22 19:47:38 2025 -0400

    dm-flakey: make corrupting read bios work
    
    [ Upstream commit 13e79076c89f6e96a6cca8f6df38b40d025907b4 ]
    
    dm-flakey corrupts the read bios in the endio function.  However, the
    corrupt_bio_* functions checked bio_has_data() to see if there was data
    to corrupt. Since this was the endio function, there was no data left to
    complete, so bio_has_data() was always false. Fix this by saving a copy
    of the bio's bi_iter in flakey_map(), and using this to initialize the
    iter for corrupting the read bios. This patch also skips cloning the bio
    for write bios with no data.
    
    Reported-by: Kent Overstreet <[email protected]>
    Fixes: a3998799fb4df ("dm flakey: add corrupt_bio_byte feature")
    Signed-off-by: Benjamin Marzinski <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dm: don't change md if dm_table_set_restrictions() fails [+ + +]
Author: Benjamin Marzinski <[email protected]>
Date:   Thu Apr 10 15:49:38 2025 -0400

    dm: don't change md if dm_table_set_restrictions() fails
    
    [ Upstream commit 9eb7109a5bfc5b8226e9517e9f3cc6d414391884 ]
    
    __bind was changing the disk capacity, geometry and mempools of the
    mapped device before calling dm_table_set_restrictions() which could
    fail, forcing dm to drop the new table. Failing here would leave the
    device using the old table but with the wrong capacity and mempools.
    
    Move dm_table_set_restrictions() earlier in __bind(). Since it needs the
    capacity to be set, save the old version and restore it on failure.
    
    Fixes: bb37d77239af2 ("dm: introduce zone append emulation")
    Reviewed-by: Damien Le Moal <[email protected]>
    Tested-by: Damien Le Moal <[email protected]>
    Signed-off-by: Benjamin Marzinski <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dm: fix dm_blk_report_zones [+ + +]
Author: Benjamin Marzinski <[email protected]>
Date:   Thu Apr 10 15:49:41 2025 -0400

    dm: fix dm_blk_report_zones
    
    [ Upstream commit 37f53a2c60d03743e0eacf7a0c01c279776fef4e ]
    
    If dm_get_live_table() returned NULL, dm_put_live_table() was never
    called. Also, it is possible that md->zone_revalidate_map will change
    while calling this function. Only read it once, so that we are always
    using the same value. Otherwise we might miss a call to
    dm_put_live_table().
    
    Finally, while md->zone_revalidate_map is set and a process is calling
    blk_revalidate_disk_zones() to set up the zone append emulation
    resources, it is possible that another process, perhaps triggered by
    blkdev_report_zones_ioctl(), will call dm_blk_report_zones(). If
    blk_revalidate_disk_zones() fails, these resources can be freed while
    the other process is still using them, causing a use-after-free error.
    
    blk_revalidate_disk_zones() will only ever be called when initially
    setting up the zone append emulation resources, such as when setting up
    a zoned dm-crypt table for the first time. Further table swaps will not
    set md->zone_revalidate_map or call blk_revalidate_disk_zones().
    However it must be called using the new table (referenced by
    md->zone_revalidate_map) and the new queue limits while the DM device is
    suspended. dm_blk_report_zones() needs some way to distinguish between a
    call from blk_revalidate_disk_zones(), which must be allowed to use
    md->zone_revalidate_map to access this not yet activated table, and all
    other calls to dm_blk_report_zones(), which should not be allowed while
    the device is suspended and cannot use md->zone_revalidate_map, since
    the zone resources might be freed by the process currently calling
    blk_revalidate_disk_zones().
    
    Solve this by tracking the process that sets md->zone_revalidate_map in
    dm_revalidate_zones() and only allowing that process to make use of it
    in dm_blk_report_zones().
    
    Fixes: f211268ed1f9b ("dm: Use the block layer zone append emulation")
    Reviewed-by: Damien Le Moal <[email protected]>
    Tested-by: Damien Le Moal <[email protected]>
    Signed-off-by: Benjamin Marzinski <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dm: free table mempools if not used in __bind [+ + +]
Author: Benjamin Marzinski <[email protected]>
Date:   Thu Apr 10 15:49:39 2025 -0400

    dm: free table mempools if not used in __bind
    
    [ Upstream commit e8819e7f03470c5b468720630d9e4e1d5b99159e ]
    
    With request-based dm, the mempools don't need reloading when switching
    tables, but the unused table mempools are not freed until the active
    table is finally freed. Free them immediately if they are not needed.
    
    Fixes: 29dec90a0f1d9 ("dm: fix bio_set allocation")
    Reviewed-by: Damien Le Moal <[email protected]>
    Tested-by: Damien Le Moal <[email protected]>
    Signed-off-by: Benjamin Marzinski <[email protected]>
    Signed-off-by: Mikulas Patocka <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dmaengine: ti: Add NULL check in udma_probe() [+ + +]
Author: Henry Martin <[email protected]>
Date:   Wed Apr 2 10:39:00 2025 +0800

    dmaengine: ti: Add NULL check in udma_probe()
    
    [ Upstream commit fd447415e74bccd7362f760d4ea727f8e1ebfe91 ]
    
    devm_kasprintf() returns NULL when memory allocation fails. Currently,
    udma_probe() does not check for this case, which results in a NULL
    pointer dereference.
    
    Add NULL check after devm_kasprintf() to prevent this issue.
    
    Fixes: 25dcb5dd7b7c ("dmaengine: ti: New driver for K3 UDMA")
    Signed-off-by: Henry Martin <[email protected]>
    Reviewed-by: Nathan Lynch <[email protected]>
    Acked-by: Peter Ujfalusi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
do_change_type(): refuse to operate on unmounted/not ours mounts [+ + +]
Author: Al Viro <[email protected]>
Date:   Wed Jun 4 12:27:08 2025 -0400

    do_change_type(): refuse to operate on unmounted/not ours mounts
    
    [ Upstream commit 12f147ddd6de7382dad54812e65f3f08d05809fc ]
    
    Ensure that propagation settings can only be changed for mounts located
    in the caller's mount namespace. This change aligns permission checking
    with the rest of mount(2).
    
    Reviewed-by: Christian Brauner <[email protected]>
    Fixes: 07b20889e305 ("beginning of the shared-subtree proper")
    Reported-by: "Orlando, Noah" <[email protected]>
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
driver: net: ethernet: mtk_star_emac: fix suspend/resume issue [+ + +]
Author: Yanqing Wang <[email protected]>
Date:   Wed May 28 15:53:51 2025 +0800

    driver: net: ethernet: mtk_star_emac: fix suspend/resume issue
    
    [ Upstream commit ba99c627aac85bc746fb4a6e2d79edb3ad100326 ]
    
    Identify the cause of the suspend/resume hang: netif_carrier_off()
    is called during link state changes and becomes stuck while
    executing linkwatch_work().
    
    To resolve this issue, call netif_device_detach() during the Ethernet
    suspend process to temporarily detach the network device from the
    kernel and prevent the suspend/resume hang.
    
    Fixes: 8c7bd5a454ff ("net: ethernet: mtk-star-emac: new driver")
    Signed-off-by: Yanqing Wang <[email protected]>
    Signed-off-by: Macpaul Lin <[email protected]>
    Signed-off-by: Biao Huang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/pp: Fix potential NULL pointer dereference in atomctrl_initialize_mc_reg_table [+ + +]
Author: Charles Han <[email protected]>
Date:   Thu Mar 27 12:04:35 2025 +0800

    drm/amd/pp: Fix potential NULL pointer dereference in atomctrl_initialize_mc_reg_table
    
    [ Upstream commit 820116a39f96bdc7d426c33a804b52f53700a919 ]
    
    The function atomctrl_initialize_mc_reg_table() and
    atomctrl_initialize_mc_reg_table_v2_2() does not check the return
    value of smu_atom_get_data_table(). If smu_atom_get_data_table()
    fails to retrieve vram_info, it returns NULL which is later
    dereferenced.
    
    Fixes: b3892e2bb519 ("drm/amd/pp: Use atombios api directly in powerplay (v2)")
    Fixes: 5f92b48cf62c ("drm/amd/pm: add mc register table initialization")
    Signed-off-by: Charles Han <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/bridge: lt9611uxc: Fix an error handling path in lt9611uxc_probe() [+ + +]
Author: Christophe JAILLET <[email protected]>
Date:   Fri Apr 18 08:48:16 2025 +0200

    drm/bridge: lt9611uxc: Fix an error handling path in lt9611uxc_probe()
    
    [ Upstream commit b848cd418aebdb313364b4843f41fae82281a823 ]
    
    If lt9611uxc_audio_init() fails, some resources still need to be released
    before returning the error code.
    
    Use the existing error handling path.
    
    Fixes: 0cbbd5b1a012 ("drm: bridge: add support for lontium LT9611UXC bridge")
    Signed-off-by: Christophe JAILLET <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/f167608e392c6b4d7d7f6e45e3c21878feb60cbd.1744958833.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/guc: Check if expecting reply before decrementing outstanding_submission_g2h [+ + +]
Author: Jesus Narvaez <[email protected]>
Date:   Wed May 14 15:52:24 2025 -0700

    drm/i915/guc: Check if expecting reply before decrementing outstanding_submission_g2h
    
    [ Upstream commit c557fd1050f6691dde36818dfc1a4c415c42901b ]
    
    When sending a H2G message where a reply is expected in
    guc_submission_send_busy_loop(), outstanding_submission_g2h is
    incremented before the send. However, if there is an error sending the
    message, outstanding_submission_g2h is decremented without checking if a
    reply is expected.
    
    Therefore, check if reply is expected when there is a failure before
    decrementing outstanding_submission_g2h.
    
    Fixes: 2f2cc53b5fe7 ("drm/i915/guc: Close deregister-context race against CT-loss")
    Signed-off-by: Jesus Narvaez <[email protected]>
    Cc: Daniele Ceraolo Spurio <[email protected]>
    Cc: Alan Previn <[email protected]>
    Cc: Anshuman Gupta <[email protected]>
    Cc: Mousumi Jana <[email protected]>
    Cc: Rodrigo Vivi <[email protected]>
    Cc: Matt Roper <[email protected]>
    Reviewed-by: Daniele Ceraolo Spurio <[email protected]>
    Signed-off-by: John Harrison <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    (cherry picked from commit a6a26786f22a4ab0227bcf610510c4c9c2df0808)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/i915/guc: Handle race condition where wakeref count drops below 0 [+ + +]
Author: Jesus Narvaez <[email protected]>
Date:   Wed May 28 16:05:51 2025 -0700

    drm/i915/guc: Handle race condition where wakeref count drops below 0
    
    [ Upstream commit 0323a5127e7c534cfc88efe0f850a0cb777e938b ]
    
    There is a rare race condition when preparing for a reset where
    guc_lrc_desc_unpin() could be in the process of deregistering a context
    while a different thread is scrubbing outstanding contexts and it alters
    the context state and does a wakeref put. Then, if there is a failure
    with deregister_context(), a second wakeref put could occur. As a result
    the wakeref count could drop below 0 and fail an INTEL_WAKEREF_BUG_ON()
    check.
    
    Therefore if there is a failure with deregister_context(), undo the
    context state changes and do a wakeref put only if the context was set
    to be destroyed earlier.
    
    v2: Expand comment to better explain change. (Daniele)
    v3: Removed addition to the original comment. (Daniele)
    
    Fixes: 2f2cc53b5fe7 ("drm/i915/guc: Close deregister-context race against CT-loss")
    Signed-off-by: Jesus Narvaez <[email protected]>
    Cc: Daniele Ceraolo Spurio <[email protected]>
    Cc: Alan Previn <[email protected]>
    Cc: Anshuman Gupta <[email protected]>
    Cc: Mousumi Jana <[email protected]>
    Cc: Rodrigo Vivi <[email protected]>
    Cc: Matt Roper <[email protected]>
    Reviewed-by: Daniele Ceraolo Spurio <[email protected]>
    Signed-off-by: John Harrison <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    (cherry picked from commit f36a75aba1c3176d177964bca76f86a075d2943a)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP [+ + +]
Author: Jouni Högander <[email protected]>
Date:   Mon May 26 15:05:11 2025 +0300

    drm/i915/psr: Fix using wrong mask in REG_FIELD_PREP
    
    [ Upstream commit 57d63c6cd0851d3af612a556ec61b0f2a9bd522f ]
    
    Wrong mask is used in PORT_ALPM_LFPS_CTL_FIRST_LFPS_HALF_CYCLE_DURATION and
    PORT_ALPM_LFPS_CTL_LAST_LFPS_HALF_CYCLE_DURATION.
    
    Fixes: 295099580f04 ("drm/i915/psr: Add missing ALPM AUX-Less register definitions")
    Signed-off-by: Jouni Högander <[email protected]>
    Reviewed-by: Ankit Nautiyal <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    (cherry picked from commit 8097128a40ff378761034ec72cdbf6f46e466dc0)
    Signed-off-by: Joonas Lahtinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/mediatek: Fix kobject put for component sub-drivers [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Thu Apr 3 12:47:38 2025 +0200

    drm/mediatek: Fix kobject put for component sub-drivers
    
    [ Upstream commit 80805b62ea5b95eda54c225b989f929ca0691ab0 ]
    
    In function mtk_drm_get_all_drm_priv(), this driver is incrementing
    the refcount for the sub-drivers of mediatek-drm with a call to
    device_find_child() when taking a reference to all of those child
    devices.
    
    When the component bind fails multiple times this results in a
    refcount_t overflow, as the reference count is never decremented:
    fix that by adding a call to put_device() for all of the mmsys
    devices in a loop, in error cases of mtk_drm_bind() and in the
    mtk_drm_unbind() callback.
    
    Fixes: 1ef7ed48356c ("drm/mediatek: Modify mediatek-drm for mt8195 multi mmsys support")
    Reviewed-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patchwork.kernel.org/project/dri-devel/patch/[email protected]/
    Signed-off-by: Chun-Kuang Hu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/mediatek: mtk_drm_drv: Fix kobject put for mtk_mutex device ptr [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Thu Apr 3 12:47:37 2025 +0200

    drm/mediatek: mtk_drm_drv: Fix kobject put for mtk_mutex device ptr
    
    [ Upstream commit 22918591fb747a6d16801e74a170cf98e886f83b ]
    
    This driver is taking a kobject for mtk_mutex only once per mmsys
    device for each drm-mediatek driver instance, differently from the
    behavior with other components, but it is decrementing the kobj's
    refcount in a loop and once per mmsys: this is not right and will
    result in a refcount_t underflow warning when mediatek-drm returns
    multiple probe deferrals in one boot (or when manually bound and
    unbound).
    
    Besides that, the refcount for mutex_dev was not decremented for
    error cases in mtk_drm_bind(), causing another refcount_t warning
    but this time for overflow, when the failure happens not during
    driver bind but during component bind.
    
    In order to fix one of the reasons why this is happening, remove
    the put_device(xx->mutex_dev) loop from the mtk_drm_kms_init()'s
    put_mutex_dev label (and drop the label) and add a single call to
    correctly free the single incremented refcount of mutex_dev to
    the mtk_drm_unbind() function to fix the refcount_t underflow.
    
    Moreover, add the same call to the error cases in mtk_drm_bind()
    to fix the refcount_t overflow.
    
    Fixes: 1ef7ed48356c ("drm/mediatek: Modify mediatek-drm for mt8195 multi mmsys support")
    Reviewed-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patchwork.kernel.org/project/dri-devel/patch/[email protected]/
    Signed-off-by: Chun-Kuang Hu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/mediatek: mtk_drm_drv: Unbind secondary mmsys components on err [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Thu Apr 3 12:47:39 2025 +0200

    drm/mediatek: mtk_drm_drv: Unbind secondary mmsys components on err
    
    [ Upstream commit 94c933716567084bfb9e79dcd81eb2b2308e84e1 ]
    
    When calling component_bind_all(), if a component that is included
    in the list fails, all of those that have been successfully bound
    will be unbound, but this driver has two components lists for two
    actual devices, as in, each mmsys instance has its own components
    list.
    
    In case mmsys0 (or actually vdosys0) is able to bind all of its
    components, but the secondary one fails, all of the components of
    the first are kept bound, while the ones of mmsys1/vdosys1 are
    correctly cleaned up.
    
    This is not right because, in case of a failure, the components
    are re-bound for all of the mmsys/vdosys instances without caring
    about the ones that were previously left in a bound state.
    
    Fix that by calling component_unbind_all() on all of the previous
    component masters that succeeded binding all subdevices when any
    of the other masters errors out.
    
    Fixes: 1ef7ed48356c ("drm/mediatek: Modify mediatek-drm for mt8195 multi mmsys support")
    Reviewed-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Link: https://patchwork.kernel.org/project/dri-devel/patch/[email protected]/
    Signed-off-by: Chun-Kuang Hu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/meson: fix debug log statement when setting the HDMI clocks [+ + +]
Author: Martin Blumenstingl <[email protected]>
Date:   Fri Jun 6 22:37:29 2025 +0200

    drm/meson: fix debug log statement when setting the HDMI clocks
    
    [ Upstream commit d17e61ab63fb7747b340d6a66bf1408cd5c6562b ]
    
    The "phy" and "vclk" frequency labels were swapped, making it more
    difficult to debug driver errors. Swap the label order to make them
    match with the actual frequencies printed to correct this.
    
    Fixes: e5fab2ec9ca4 ("drm/meson: vclk: add support for YUV420 setup")
    Signed-off-by: Martin Blumenstingl <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/meson: fix more rounding issues with 59.94Hz modes [+ + +]
Author: Martin Blumenstingl <[email protected]>
Date:   Mon Jun 9 22:27:51 2025 +0200

    drm/meson: fix more rounding issues with 59.94Hz modes
    
    [ Upstream commit 0cee6c4d3518b2e757aedae78771f17149f57653 ]
    
    Commit 1017560164b6 ("drm/meson: use unsigned long long / Hz for
    frequency types") attempts to resolve video playback using 59.94Hz.
     using YUV420 by changing the clock calculation to use
    Hz instead of kHz (thus yielding more precision).
    
    The basic calculation itself is correct, however the comparisions in
    meson_vclk_vic_supported_freq() and meson_vclk_setup() don't work
    anymore for 59.94Hz modes (using the freq * 1000 / 1001 logic). For
    example, drm/edid specifies a 593407kHz clock for [email protected].
    With the mentioend commit we convert this to Hz. Then meson_vclk
    tries to find a matchig "params" entry (as the clock setup code
    currently only supports specific frequencies) by taking the venc_freq
    from the params and calculating the "alt frequency" (used for the
    59.94Hz modes) from it, which is:
      (594000000Hz * 1000) / 1001 = 593406593Hz
    
    Similar calculation is applied to the phy_freq (TMDS clock), which is 10
    times the pixel clock.
    
    Implement a new meson_vclk_freqs_are_matching_param() function whose
    purpose is to compare if the requested and calculated frequencies. They
    may not match exactly (for the reasons mentioned above). Allow the
    clocks to deviate slightly to make the 59.94Hz modes again.
    
    Fixes: 1017560164b6 ("drm/meson: use unsigned long long / Hz for frequency types")
    Reported-by: Christian Hewitt <[email protected]>
    Signed-off-by: Martin Blumenstingl <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/meson: Use 1000ULL when operating with mode->clock [+ + +]
Author: I Hsin Cheng <[email protected]>
Date:   Tue May 6 02:43:38 2025 +0800

    drm/meson: Use 1000ULL when operating with mode->clock
    
    commit eb0851e14432f3b87c77b704c835ac376deda03a upstream.
    
    Coverity scan reported the usage of "mode->clock * 1000" may lead to
    integer overflow. Use "1000ULL" instead of "1000"
    when utilizing it to avoid potential integer overflow issue.
    
    Link: https://scan5.scan.coverity.com/#/project-view/10074/10063?selectedIssue=1646759
    Signed-off-by: I Hsin Cheng <[email protected]>
    Reviewed-by: Martin Blumenstingl <[email protected]>
    Fixes: 1017560164b6 ("drm/meson: use unsigned long long / Hz for frequency types")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Neil Armstrong <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/meson: use unsigned long long / Hz for frequency types [+ + +]
Author: Martin Blumenstingl <[email protected]>
Date:   Mon Apr 21 22:13:00 2025 +0200

    drm/meson: use unsigned long long / Hz for frequency types
    
    [ Upstream commit 1017560164b6bbcbc93579266926e6e96675262a ]
    
    Christian reports that 4K output using YUV420 encoding fails with the
    following error:
      Fatal Error, invalid HDMI vclk freq 593406
    
    Modetest shows the following:
      3840x2160 59.94 3840 4016 4104 4400 2160 2168 2178 2250 593407 flags: xxxx, xxxx,
      drm calculated value -------------------------------------^
    
    This indicates that there's a (1kHz) mismatch between the clock
    calculated by the drm framework and the meson driver.
    
    Relevant function call stack:
    (drm framework)
      -> meson_encoder_hdmi_atomic_enable()
        -> meson_encoder_hdmi_set_vclk()
          -> meson_vclk_setup()
    
    The video clock requested by the drm framework is 593407kHz. This is
    passed by meson_encoder_hdmi_atomic_enable() to
    meson_encoder_hdmi_set_vclk() and the following formula is applied:
    - the frequency is halved (which would be 296703.5kHz) and rounded down
      to the next full integer, which is 296703kHz
    - TMDS clock is calculated (296703kHz * 10)
    - video encoder clock is calculated - this needs to match a table from
      meson_vclk.c and so it doubles the previously halved value again
      (resulting in 593406kHz)
    - meson_vclk_setup() can't find (either directly, or by deriving it from
      594000kHz * 1000 / 1001 and rounding to the closest integer value -
      which is 593407kHz as originally requested by the drm framework) a
      matching clock in it's internal table and errors out with "invalid
      HDMI vclk freq"
    
    Fix the division precision by switching the whole meson driver to use
    unsigned long long (64-bit) Hz values for clock frequencies instead of
    unsigned int (32-bit) kHz to fix the rouding error.
    
    Fixes: e5fab2ec9ca4 ("drm/meson: vclk: add support for YUV420 setup")
    Reported-by: Christian Hewitt <[email protected]>
    Signed-off-by: Martin Blumenstingl <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Stable-dep-of: d17e61ab63fb ("drm/meson: fix debug log statement when setting the HDMI clocks")
    Signed-off-by: Sasha Levin <[email protected]>

drm/meson: use vclk_freq instead of pixel_freq in debug print [+ + +]
Author: Martin Blumenstingl <[email protected]>
Date:   Sat Jun 7 00:10:31 2025 +0200

    drm/meson: use vclk_freq instead of pixel_freq in debug print
    
    [ Upstream commit faf2f8382088e8c74bd6eeb236c8c9190e61615e ]
    
    meson_vclk_vic_supported_freq() has a debug print which includes the
    pixel freq. However, within the whole function the pixel freq is
    irrelevant, other than checking the end of the params array. Switch to
    printing the vclk_freq which is being compared / matched against the
    inputs to the function to avoid confusion when analyzing error reports
    from users.
    
    Fixes: e5fab2ec9ca4 ("drm/meson: vclk: add support for YUV420 setup")
    Signed-off-by: Martin Blumenstingl <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/msm/a6xx: Disable rgb565_predicator on Adreno 7c3 [+ + +]
Author: Konrad Dybcio <[email protected]>
Date:   Mon May 5 13:13:40 2025 +0200

    drm/msm/a6xx: Disable rgb565_predicator on Adreno 7c3
    
    [ Upstream commit 5a9c1bea011fb42088ba08ceaa252fb20e695626 ]
    
    This feature is supposed to be enabled with UBWC v4 or later.
    Implementations of this SKU feature an effective UBWC version of 3, so
    disable it, in line with the BSP kernel.
    
    Reported-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Akhil P Oommen <[email protected]>
    Fixes: 192f4ee3e408 ("drm/msm/a6xx: Add support for Adreno 7c Gen 3 gpu")
    Signed-off-by: Konrad Dybcio <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/651759/
    Signed-off-by: Rob Clark <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/msm/dpu: enable SmartDMA on SC8180X [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Fri Apr 25 22:49:09 2025 +0300

    drm/msm/dpu: enable SmartDMA on SC8180X
    
    [ Upstream commit 8dcccd7a156ffb3157de7f527cc7c6100e9a455a ]
    
    Reworking of the catalog dropped the SmartDMA feature bit on the SC8180X
    platform. Renable SmartDMA support on this SoC.
    
    Fixes: 460c410f02e4 ("drm/msm/dpu: duplicate sdm845 catalog entries")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/650421/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/msm/dpu: enable SmartDMA on SM8150 [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Fri Apr 25 22:49:08 2025 +0300

    drm/msm/dpu: enable SmartDMA on SM8150
    
    [ Upstream commit 6a2343de0b6f70a21bf503ac4688dc905cb068e1 ]
    
    Reworking of the catalog dropped the SmartDMA feature bit on the SM8150
    platform. Renable SmartDMA support on this SoC.
    
    Fixes: 460c410f02e4 ("drm/msm/dpu: duplicate sdm845 catalog entries")
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/650418/
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/panel-simple: fix the warnings for the Evervision VGG644804 [+ + +]
Author: Michael Walle <[email protected]>
Date:   Tue May 20 09:41:10 2025 +0200

    drm/panel-simple: fix the warnings for the Evervision VGG644804
    
    [ Upstream commit 5dc1ea903588a73fb03b3a3e5a041a7c63a4bccd ]
    
    The panel lacked the connector type which causes a warning. Adding the
    connector type reveals wrong bus_flags and bits per pixel. Fix all of
    it.
    
    Fixes: 1319f2178bdf ("drm/panel-simple: add Evervision VGG644804 panel entry")
    Signed-off-by: Michael Walle <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/panel: samsung-sofef00: Drop s6e3fc2x01 support [+ + +]
Author: Casey Connolly <[email protected]>
Date:   Sat Apr 19 18:31:44 2025 +0200

    drm/panel: samsung-sofef00: Drop s6e3fc2x01 support
    
    [ Upstream commit e1eb7293ab4107e9e19fa609835e657fe30dfec7 ]
    
    We never properly supported this panel and always used the wrong init
    sequence. Drop support so we can move it to it's own proper driver.
    
    Fixes: 5933baa36e26 ("drm/panel/samsung-sofef00: Add panel for OnePlus 6/T devices")
    Signed-off-by: Casey Connolly <[email protected]>
    Signed-off-by: David Heidelberg <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/panthor: Fix GPU_COHERENCY_ACE[_LITE] definitions [+ + +]
Author: Boris Brezillon <[email protected]>
Date:   Fri Apr 4 10:09:29 2025 +0200

    drm/panthor: Fix GPU_COHERENCY_ACE[_LITE] definitions
    
    [ Upstream commit d1df2907fb69df56aad8e4a0734dac0778c234a7 ]
    
    GPU_COHERENCY_ACE and GPU_COHERENCY_ACE_LITE definitions have been
    swapped.
    
    Changes in v2:
    - New patch
    
    Changes in v3:
    - Add Steve's R-b
    
    Reported-by: Liviu Dudau <[email protected]>
    Fixes: 546b366600ef ("drm/panthor: Add GPU register definitions")
    Reviewed-by: Steven Price <[email protected]>
    Reviewed-by: Liviu Dudau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Boris Brezillon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/panthor: Update panthor_mmu::irq::mask when needed [+ + +]
Author: Boris Brezillon <[email protected]>
Date:   Fri Apr 4 10:09:31 2025 +0200

    drm/panthor: Update panthor_mmu::irq::mask when needed
    
    [ Upstream commit 8ba64cf2f358079d09faba7529aad2b0a46c7903 ]
    
    When we clear the faulty bits in the AS mask, we also need to update
    the panthor_mmu::irq::mask field otherwise our IRQ handler won't get
    called again until the GPU is reset.
    
    Changes in v2:
    - Add Liviu's R-b
    
    Changes in v3:
    - Add Steve's R-b
    
    Fixes: 647810ec2476 ("drm/panthor: Add the MMU/VM logical block")
    Reviewed-by: Liviu Dudau <[email protected]>
    Reviewed-by: Steven Price <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Boris Brezillon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/tegra: rgb: Fix the unbound reference count [+ + +]
Author: Biju Das <[email protected]>
Date:   Wed Feb 5 11:21:35 2025 +0000

    drm/tegra: rgb: Fix the unbound reference count
    
    [ Upstream commit 3c3642335065c3bde0742b0edc505b6ea8fdc2b3 ]
    
    The of_get_child_by_name() increments the refcount in tegra_dc_rgb_probe,
    but the driver does not decrement the refcount during unbind. Fix the
    unbound reference count using devm_add_action_or_reset() helper.
    
    Fixes: d8f4a9eda006 ("drm: Add NVIDIA Tegra20 support")
    Signed-off-by: Biju Das <[email protected]>
    Signed-off-by: Thierry Reding <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/vc4: tests: Use return instead of assert [+ + +]
Author: Maxime Ripard <[email protected]>
Date:   Thu Apr 3 15:33:30 2025 +0200

    drm/vc4: tests: Use return instead of assert
    
    [ Upstream commit 9e26a3740cc08ef8bcdc5e5d824792cd677affce ]
    
    The vc4_mock_atomic_add_output() and vc4_mock_atomic_del_output() assert
    that the functions they are calling didn't fail. Since some of them can
    return EDEADLK, we can't properly deal with it.
    
    Since both functions are expected to return an int, and all caller check
    the return value, let's just properly propagate the errors when they
    occur.
    
    Fixes: f759f5b53f1c ("drm/vc4: tests: Introduce a mocking infrastructure")
    Fixes: 76ec18dc5afa ("drm/vc4: tests: Add unit test suite for the PV muxing")
    Reviewed-by: Maíra Canal <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Maxime Ripard <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/vkms: Adjust vkms_state->active_planes allocation type [+ + +]
Author: Kees Cook <[email protected]>
Date:   Fri Apr 25 23:14:32 2025 -0700

    drm/vkms: Adjust vkms_state->active_planes allocation type
    
    [ Upstream commit 258aebf100540d36aba910f545d4d5ddf4ecaf0b ]
    
    In preparation for making the kmalloc family of allocators type aware,
    we need to make sure that the returned type from the allocation matches
    the type of the variable being assigned. (Before, the allocator would
    always return "void *", which can be implicitly cast to any pointer type.)
    
    The assigned type is "struct vkms_plane_state **", but the returned type
    will be "struct drm_plane **". These are the same size (pointer size), but
    the types don't match. Adjust the allocation type to match the assignment.
    
    Signed-off-by: Kees Cook <[email protected]>
    Reviewed-by: Louis Chauvet <[email protected]>
    Fixes: 8b1865873651 ("drm/vkms: totally reworked crc data tracking")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Louis Chauvet <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/vmwgfx: Add error path for xa_store in vmw_bo_add_detached_resource [+ + +]
Author: Keisuke Nishimura <[email protected]>
Date:   Tue Feb 25 15:52:23 2025 +0100

    drm/vmwgfx: Add error path for xa_store in vmw_bo_add_detached_resource
    
    [ Upstream commit 3282422bf251db541fe07c548ca304130d37d754 ]
    
    The xa_store() may fail due to memory allocation failure because there
    is no guarantee that the index is already used. This fix introduces new
    paths to handle the error.
    
    This patch also aligns the order of function calls by calling
    vmw_bo_add_detached_resource() before ttm_prime_object_init() in order
    to allow consistent error handling.
    
    Fixes: d6667f0ddf46 ("drm/vmwgfx: Fix handling of dumb buffers")
    Signed-off-by: Keisuke Nishimura <[email protected]>
    Signed-off-by: Zack Rusin <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/vmwgfx: Add seqno waiter for sync_files [+ + +]
Author: Ian Forbes <[email protected]>
Date:   Fri Feb 28 14:06:33 2025 -0600

    drm/vmwgfx: Add seqno waiter for sync_files
    
    [ Upstream commit 0039a3b35b10d9c15d3d26320532ab56cc566750 ]
    
    Because sync_files are passive waiters they do not participate in
    the processing of fences like the traditional vmw_fence_wait IOCTL.
    If userspace exclusively uses sync_files for synchronization then
    nothing in the kernel actually processes fence updates as interrupts
    for fences are masked and ignored if the kernel does not indicate to the
    SVGA device that there are active waiters.
    
    This oversight results in a bug where the entire GUI can freeze waiting
    on a sync_file that will never be signalled as we've masked the interrupts
    to signal its completion. This bug is incredibly racy as any process which
    interacts with the fencing code via the 3D stack can process the stuck
    fences on behalf of the stuck process causing it to run again. Even a
    simple app like eglinfo is enough to resume the stuck process. Usually
    this bug is seen at a login screen like GDM because there are no other
    3D apps running.
    
    By adding a seqno waiter we re-enable interrupt based processing of the
    dma_fences associated with the sync_file which is signalled as part of a
    dma_fence_callback.
    
    This has likely been broken since it was initially added to the kernel in
    2017 but has gone unnoticed until mutter recently started using sync_files
    heavily over the course of 2024 as part of their explicit sync support.
    
    Fixes: c906965dee22 ("drm/vmwgfx: Add export fence to file descriptor support")
    Signed-off-by: Ian Forbes <[email protected]>
    Signed-off-by: Zack Rusin <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

drm/vmwgfx: Fix dumb buffer leak [+ + +]
Author: Ian Forbes <[email protected]>
Date:   Thu Jan 23 14:44:24 2025 -0600

    drm/vmwgfx: Fix dumb buffer leak
    
    [ Upstream commit f42c09e614f1bda96f5690be8d0bb273234febbc ]
    
    Dumb buffers were not being freed because the GEM reference that was
    acquired in gb_surface_define was not dropped like it is in the 2D case.
    Dropping this ref uncovered a few additional issues with freeing the
    resources associated with dirty tracking in vmw_bo_free/release.
    
    Additionally the TTM object associated with the surface were also leaking
    which meant that when the ttm_object_file was closed at process exit the
    destructor unreferenced an already destroyed surface.
    
    The solution is to remove the destructor from the vmw_user_surface
    associated with the dumb_buffer and immediately unreferencing the TTM
    object which his removes it from the ttm_object_file.
    
    This also allows the early return in vmw_user_surface_base_release for the
    dumb buffer case to be removed as it should no longer occur.
    
    The chain of references now has the GEM handle(s) owning the dumb buffer.
    The GEM handles have a singular GEM reference to the vmw_bo which is
    dropped when all handles are closed. When the GEM reference count hits
    zero the vmw_bo is freed which then unreferences the surface via
    vmw_resource_release in vmw_bo_release.
    
    Fixes: d6667f0ddf46 ("drm/vmwgfx: Fix handling of dumb buffers")
    Signed-off-by: Ian Forbes <[email protected]>
    Reviewed-by: Zack Rusin <[email protected]>
    Signed-off-by: Zack Rusin <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe/d3cold: Set power state to D3Cold during s2idle/s3 [+ + +]
Author: Badal Nilawar <[email protected]>
Date:   Thu Mar 27 21:49:14 2025 +0530

    drm/xe/d3cold: Set power state to D3Cold during s2idle/s3
    
    [ Upstream commit f945dd89fa8da3f662508165453dafdb4035d9d3 ]
    
    According to pci core guidelines, pci_save_config is recommended when the
    driver explicitly needs to set the pci power state. As of now xe kmd is
    only doing pci_save_config while entering to s2idle/s3 state, which makes
    pci core think that device driver has already applied required pci power
    state. This leads to GPU remain in D0 state. To fix the issue setting
    the pci power state to D3Cold.
    
    Fixes:dd08ebf6c352 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
    
    Cc: Rafael J. Wysocki <[email protected]>
    Cc: Rodrigo Vivi <[email protected]>
    Signed-off-by: Badal Nilawar <[email protected]>
    Signed-off-by: Anshuman Gupta <[email protected]>
    Reviewed-by: Rodrigo Vivi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/xe: Make xe_gt_freq part of the Documentation [+ + +]
Author: Rodrigo Vivi <[email protected]>
Date:   Wed May 21 12:51:47 2025 -0400

    drm/xe: Make xe_gt_freq part of the Documentation
    
    [ Upstream commit 55f8aa083604ce098c9d6a0911c6bcde15d03a80 ]
    
    The documentation was created with the creation of the component,
    however it has never been actually shown in the actual Documentation.
    
    While doing this, fixes the identation style, to avoid new warnings
    while building htmldocs.
    
    Fixes: bef52b5c7a19 ("drm/xe: Create a xe_gt_freq component for raw management and sysfs")
    Reviewed-by: Lucas De Marchi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rodrigo Vivi <[email protected]>
    (cherry picked from commit af53f0fd99c3bbb3afd29f1612c9e88c5a92cc01)
    Signed-off-by: Thomas Hellström <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm: rcar-du: Fix memory leak in rcar_du_vsps_init() [+ + +]
Author: Biju Das <[email protected]>
Date:   Thu Nov 16 12:24:24 2023 +0000

    drm: rcar-du: Fix memory leak in rcar_du_vsps_init()
    
    [ Upstream commit 91e3bf09a90bb4340c0c3c51396e7531555efda4 ]
    
    The rcar_du_vsps_init() doesn't free the np allocated by
    of_parse_phandle_with_fixed_args() for the non-error case.
    
    Fix memory leak for the non-error case.
    
    While at it, replace the label 'error'->'done' as it applies to non-error
    case as well and update the error check condition for rcar_du_vsp_init()
    to avoid breakage in future, if it returns positive value.
    
    Fixes: 3e81374e2014 ("drm: rcar-du: Support multiple sources from the same VSP")
    Signed-off-by: Biju Das <[email protected]>
    Reviewed-by: Laurent Pinchart <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Tomi Valkeinen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dt-bindings: pwm: adi,axi-pwmgen: Fix clocks [+ + +]
Author: David Lechner <[email protected]>
Date:   Thu May 29 11:53:19 2025 -0500

    dt-bindings: pwm: adi,axi-pwmgen: Fix clocks
    
    [ Upstream commit e683131e64f71e957ca77743cb3d313646157329 ]
    
    Fix a shortcoming in the bindings that doesn't allow for a separate
    external clock.
    
    The AXI PWMGEN IP block has a compile option ASYNC_CLK_EN that allows
    the use of an external clock for the PWM output separate from the AXI
    clock that runs the peripheral.
    
    This was missed in the original bindings and so users were writing dts
    files where the one and only clock specified would be the external
    clock, if there was one, incorrectly missing the separate AXI clock.
    
    The correct bindings are that the AXI clock is always required and the
    external clock is optional (must be given only when HDL compile option
    ASYNC_CLK_EN=1).
    
    Fixes: 1edf2c2a2841 ("dt-bindings: pwm: Add AXI PWM generator")
    Cc: [email protected]
    Signed-off-by: David Lechner <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/20250529-pwm-axi-pwmgen-add-external-clock-v3-2-5d8809a7da91@baylibre.com
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: pwm: adi,axi-pwmgen: Increase #pwm-cells to 3 [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Thu Oct 24 12:25:54 2024 +0200

    dt-bindings: pwm: adi,axi-pwmgen: Increase #pwm-cells to 3
    
    [ Upstream commit 664b5e466f915ad7fce87215ccfb038c47ace4fb ]
    
    Using 3 cells allows to pass additional flags and is the normal
    abstraction for new PWM descriptions. There are no device trees yet to
    adapt to this change.
    
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Reviewed-by: Nuno Sa <[email protected]>
    Acked-by: Conor Dooley <[email protected]>
    Reviewed-by: Trevor Gamblin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Stable-dep-of: e683131e64f7 ("dt-bindings: pwm: adi,axi-pwmgen: Fix clocks")
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: pwm: Correct indentation and style in DTS example [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Tue Jan 7 13:58:30 2025 +0100

    dt-bindings: pwm: Correct indentation and style in DTS example
    
    [ Upstream commit 78dcad6daa405b8a939cd08f6ccd6c4e2cb50a9c ]
    
    DTS example in the bindings should be indented with 2- or 4-spaces and
    aligned with opening '- |', so correct any differences like 3-spaces or
    mixtures 2- and 4-spaces in one binding.
    
    No functional changes here, but saves some comments during reviews of
    new patches built on existing code.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Acked-by: Nuno Sa <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Stable-dep-of: e683131e64f7 ("dt-bindings: pwm: adi,axi-pwmgen: Fix clocks")
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: soc: fsl,qman-fqd: Fix reserved-memory.yaml reference [+ + +]
Author: Rob Herring (Arm) <[email protected]>
Date:   Wed May 7 10:42:31 2025 -0500

    dt-bindings: soc: fsl,qman-fqd: Fix reserved-memory.yaml reference
    
    [ Upstream commit 1090c38bbfd9ab7f22830c0e8a5c605e7d4ef084 ]
    
    The reserved-memory.yaml reference needs the full path. No warnings were
    generated because the example has the wrong compatible string, so fix
    that too.
    
    Fixes: 304a90c4f75d ("dt-bindings: soc: fsl: Convert q(b)man-* to yaml format")
    Acked-by: Conor Dooley <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: vendor-prefixes: Add Liontron name [+ + +]
Author: Andre Przywara <[email protected]>
Date:   Mon May 5 17:47:27 2025 +0100

    dt-bindings: vendor-prefixes: Add Liontron name
    
    [ Upstream commit 9baa27a2e9fc746143ab686b6dbe2d515284a4c5 ]
    
    Liontron is a company based in Shenzen, China, making industrial
    development boards and embedded computers, mostly using Rockchip and
    Allwinner SoCs.
    
    Add their name to the list of vendors.
    
    Signed-off-by: Andre Przywara <[email protected]>
    Acked-by: Rob Herring (Arm) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Chen-Yu Tsai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
EDAC/skx_common: Fix general protection fault [+ + +]
Author: Qiuxu Zhuo <[email protected]>
Date:   Thu Apr 17 23:07:18 2025 +0800

    EDAC/skx_common: Fix general protection fault
    
    [ Upstream commit 20d2d476b3ae18041be423671a8637ed5ffd6958 ]
    
    After loading i10nm_edac (which automatically loads skx_edac_common), if
    unload only i10nm_edac, then reload it and perform error injection testing,
    a general protection fault may occur:
    
      mce: [Hardware Error]: Machine check events logged
      Oops: general protection fault ...
      ...
      Workqueue: events mce_gen_pool_process
      RIP: 0010:string+0x53/0xe0
      ...
      Call Trace:
      <TASK>
      ? die_addr+0x37/0x90
      ? exc_general_protection+0x1e7/0x3f0
      ? asm_exc_general_protection+0x26/0x30
      ? string+0x53/0xe0
      vsnprintf+0x23e/0x4c0
      snprintf+0x4d/0x70
      skx_adxl_decode+0x16a/0x330 [skx_edac_common]
      skx_mce_check_error.part.0+0xf8/0x220 [skx_edac_common]
      skx_mce_check_error+0x17/0x20 [skx_edac_common]
      ...
    
    The issue arose was because the variable 'adxl_component_count' (inside
    skx_edac_common), which counts the ADXL components, was not reset. During
    the reloading of i10nm_edac, the count was incremented by the actual number
    of ADXL components again, resulting in a count that was double the real
    number of ADXL components. This led to an out-of-bounds reference to the
    ADXL component array, causing the general protection fault above.
    
    Fix this issue by resetting the 'adxl_component_count' in adxl_put(),
    which is called during the unloading of {skx,i10nm}_edac.
    
    Fixes: 123b15863550 ("EDAC, i10nm: make skx_common.o a separate module")
    Reported-by: Feng Xu <[email protected]>
    Signed-off-by: Qiuxu Zhuo <[email protected]>
    Signed-off-by: Tony Luck <[email protected]>
    Tested-by: Feng Xu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
EDAC/{skx_common,i10nm}: Fix the loss of saved RRL for HBM pseudo channel 0 [+ + +]
Author: Qiuxu Zhuo <[email protected]>
Date:   Thu Apr 17 23:07:19 2025 +0800

    EDAC/{skx_common,i10nm}: Fix the loss of saved RRL for HBM pseudo channel 0
    
    [ Upstream commit eeed3e03f4261e5e381a72ae099ff00ccafbb437 ]
    
    When enabling the retry_rd_err_log (RRL) feature during the loading of the
    i10nm_edac driver with the module parameter retry_rd_err_log=2 (Linux RRL
    control mode), the default values of the control bits of RRL are saved so
    that they can be restored during the unloading of the driver.
    
    In the current code, the RRL of pseudo channel 1 of HBM overwrites pseudo
    channel 0 during the loading of the driver, resulting in the loss of saved
    RRL for pseudo channel 0. This causes the RRL of pseudo channel 0 of HBM to
    be wrongly restored with the values from pseudo channel 1 when unloading
    the driver.
    
    Fix this issue by creating two separate groups of RRL control registers
    per channel to save default RRL settings of two {sub-,pseudo-}channels.
    
    Fixes: acd4cf68fefe ("EDAC/i10nm: Retrieve and print retry_rd_err_log registers for HBM")
    Signed-off-by: Qiuxu Zhuo <[email protected]>
    Signed-off-by: Tony Luck <[email protected]>
    Tested-by: Feng Xu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
efi/libstub: Describe missing 'out' parameter in efi_load_initrd [+ + +]
Author: Hans Zhang <[email protected]>
Date:   Wed May 7 00:31:11 2025 +0800

    efi/libstub: Describe missing 'out' parameter in efi_load_initrd
    
    [ Upstream commit c8e1927e7f7d63721e32ec41d27ccb0eb1a1b0fc ]
    
    The function efi_load_initrd() had a documentation warning due to
    the missing description for the 'out' parameter. Add the parameter
    description to the kernel-doc comment to resolve the warning and
    improve API documentation.
    
    Fixes the following compiler warning:
    drivers/firmware/efi/libstub/efi-stub-helper.c:611: warning: Function parameter or struct member 'out' not described in 'efi_load_initrd'
    
    Fixes: f4dc7fffa987 ("efi: libstub: unify initrd loading between architectures")
    Signed-off-by: Hans Zhang <[email protected]>
    Signed-off-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
erofs: avoid using multiple devices with different type [+ + +]
Author: Sheng Yong <[email protected]>
Date:   Thu May 15 09:48:37 2025 +0800

    erofs: avoid using multiple devices with different type
    
    [ Upstream commit 9748f2f54f66743ac77275c34886a9f890e18409 ]
    
    For multiple devices, both primary and extra devices should be the
    same type. `erofs_init_device` has already guaranteed that if the
    primary is a file-backed device, extra devices should also be
    regular files.
    
    However, if the primary is a block device while the extra device
    is a file-backed device, `erofs_init_device` will get an ENOTBLK,
    which is not treated as an error in `erofs_fc_get_tree`, and that
    leads to an UAF:
    
      erofs_fc_get_tree
        get_tree_bdev_flags(erofs_fc_fill_super)
          erofs_read_superblock
            erofs_init_device  // sbi->dif0 is not inited yet,
                               // return -ENOTBLK
          deactivate_locked_super
            free(sbi)
        if (err is -ENOTBLK)
          sbi->dif0.file = filp_open()  // sbi UAF
    
    So if -ENOTBLK is hitted in `erofs_init_device`, it means the
    primary device must be a block device, and the extra device
    is not a block device. The error can be converted to -EINVAL.
    
    Fixes: fb176750266a ("erofs: add file-backed mount support")
    Signed-off-by: Sheng Yong <[email protected]>
    Reviewed-by: Gao Xiang <[email protected]>
    Reviewed-by: Hongbo Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Gao Xiang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

erofs: fix file handle encoding for 64-bit NIDs [+ + +]
Author: Hongbo Li <[email protected]>
Date:   Wed May 7 09:40:15 2025 +0000

    erofs: fix file handle encoding for 64-bit NIDs
    
    [ Upstream commit 510de8363f2c3d8e67fa9dfb2366e821382036e0 ]
    
    EROFS uses NID to indicate the on-disk inode offset, which can
    exceed 32 bits. However, the default encode_fh uses the ino32,
    thus it doesn't work if the image is larger than 128GiB.
    
    Let's introduce our own helpers to encode file handles.
    
    It's easy to reproduce:
      1. prepare an erofs image with nid bigger than U32_MAX
      2. mount -t erofs foo.img /mnt/erofs
      3. set exportfs with configuration: /mnt/erofs *(rw,sync,
         no_root_squash)
      4. mount -t nfs $IP:/mnt/erofs /mnt/nfs
      5. md5sum /mnt/nfs/foo # foo is the file which nid bigger
         than U32_MAX.  # you will get ESTALE error.
    
    In the case of overlayfs, the underlying filesystem's file
    handle is encoded in ovl_fb.fid, which is similar to NFS's
    case. If the NID of file is larger than U32_MAX, the overlay
    will get -ESTALE error when calls exportfs_decode_fh.
    
    Fixes: 3e917cc305c6 ("erofs: make filesystem exportable")
    Signed-off-by: Hongbo Li <[email protected]>
    Reviewed-by: Gao Xiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Gao Xiang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
f2fs: clean up unnecessary indentation [+ + +]
Author: Jaegeuk Kim <[email protected]>
Date:   Fri Apr 4 19:03:03 2025 +0000

    f2fs: clean up unnecessary indentation
    
    [ Upstream commit 05d3273ad03fa5ea1177b4f3dfeeb6de4899b504 ]
    
    No functional change.
    
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

f2fs: clean up w/ fscrypt_is_bounce_page() [+ + +]
Author: Chao Yu <[email protected]>
Date:   Mon Apr 14 18:52:36 2025 +0800

    f2fs: clean up w/ fscrypt_is_bounce_page()
    
    [ Upstream commit 0c708e35cf26449ca317fcbfc274704660b6d269 ]
    
    Just cleanup, no logic changes.
    
    Signed-off-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

f2fs: fix to correct check conditions in f2fs_cross_rename [+ + +]
Author: Zhiguo Niu <[email protected]>
Date:   Wed May 14 16:45:49 2025 +0800

    f2fs: fix to correct check conditions in f2fs_cross_rename
    
    [ Upstream commit 9883494c45a13dc88d27dde4f988c04823b42a2f ]
    
    Should be "old_dir" here.
    
    Fixes: 5c57132eaf52 ("f2fs: support project quota")
    Signed-off-by: Zhiguo Niu <[email protected]>
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

f2fs: fix to detect gcing page in f2fs_is_cp_guaranteed() [+ + +]
Author: Chao Yu <[email protected]>
Date:   Mon Apr 14 18:52:37 2025 +0800

    f2fs: fix to detect gcing page in f2fs_is_cp_guaranteed()
    
    [ Upstream commit aa1be8dd64163eca4dde7fd2557eb19927a06a47 ]
    
    Jan Prusakowski reported a f2fs bug as below:
    
    f2fs/007 will hang kernel during testing w/ below configs:
    
    kernel 6.12.18 (from pixel-kernel/android16-6.12)
    export MKFS_OPTIONS="-O encrypt -O extra_attr -O project_quota -O quota"
    export F2FS_MOUNT_OPTIONS="test_dummy_encryption,discard,fsync_mode=nobarrier,reserve_root=32768,checkpoint_merge,atgc"
    
    cat /proc/<umount_proc_id>/stack
    f2fs_wait_on_all_pages+0xa3/0x130
    do_checkpoint+0x40c/0x5d0
    f2fs_write_checkpoint+0x258/0x550
    kill_f2fs_super+0x14f/0x190
    deactivate_locked_super+0x30/0xb0
    cleanup_mnt+0xba/0x150
    task_work_run+0x59/0xa0
    syscall_exit_to_user_mode+0x12d/0x130
    do_syscall_64+0x57/0x110
    entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    cat /sys/kernel/debug/f2fs/status
    
      - IO_W (CP: -256, Data:  256, Flush: (   0    0    1), Discard: (   0    0)) cmd:    0 undiscard:   0
    
    CP IOs reference count becomes negative.
    
    The root cause is:
    
    After 4961acdd65c9 ("f2fs: fix to tag gcing flag on page during block
    migration"), we will tag page w/ gcing flag for raw page of cluster
    during its migration.
    
    However, if the inode is both encrypted and compressed, during
    ioc_decompress(), it will tag page w/ gcing flag, and it increase
    F2FS_WB_DATA reference count:
    - f2fs_write_multi_page
     - f2fs_write_raw_page
      - f2fs_write_single_page
       - do_write_page
        - f2fs_submit_page_write
         - WB_DATA_TYPE(bio_page, fio->compressed_page)
         : bio_page is encrypted, so mapping is NULL, and fio->compressed_page
           is NULL, it returns F2FS_WB_DATA
         - inc_page_count(.., F2FS_WB_DATA)
    
    Then, during end_io(), it decrease F2FS_WB_CP_DATA reference count:
    - f2fs_write_end_io
     - f2fs_compress_write_end_io
      - fscrypt_pagecache_folio
      : get raw page from encrypted page
      - WB_DATA_TYPE(&folio->page, false)
      : raw page has gcing flag, it returns F2FS_WB_CP_DATA
      - dec_page_count(.., F2FS_WB_CP_DATA)
    
    In order to fix this issue, we need to detect gcing flag in raw page
    in f2fs_is_cp_guaranteed().
    
    Fixes: 4961acdd65c9 ("f2fs: fix to tag gcing flag on page during block migration")
    Reported-by: Jan Prusakowski <[email protected]>
    Signed-off-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

f2fs: fix to do sanity check on sbi->total_valid_block_count [+ + +]
Author: Chao Yu <[email protected]>
Date:   Tue Apr 8 20:22:08 2025 +0800

    f2fs: fix to do sanity check on sbi->total_valid_block_count
    
    [ Upstream commit 05872a167c2cab80ef186ef23cc34a6776a1a30c ]
    
    syzbot reported a f2fs bug as below:
    
    ------------[ cut here ]------------
    kernel BUG at fs/f2fs/f2fs.h:2521!
    RIP: 0010:dec_valid_block_count+0x3b2/0x3c0 fs/f2fs/f2fs.h:2521
    Call Trace:
     f2fs_truncate_data_blocks_range+0xc8c/0x11a0 fs/f2fs/file.c:695
     truncate_dnode+0x417/0x740 fs/f2fs/node.c:973
     truncate_nodes+0x3ec/0xf50 fs/f2fs/node.c:1014
     f2fs_truncate_inode_blocks+0x8e3/0x1370 fs/f2fs/node.c:1197
     f2fs_do_truncate_blocks+0x840/0x12b0 fs/f2fs/file.c:810
     f2fs_truncate_blocks+0x10d/0x300 fs/f2fs/file.c:838
     f2fs_truncate+0x417/0x720 fs/f2fs/file.c:888
     f2fs_setattr+0xc4f/0x12f0 fs/f2fs/file.c:1112
     notify_change+0xbca/0xe90 fs/attr.c:552
     do_truncate+0x222/0x310 fs/open.c:65
     handle_truncate fs/namei.c:3466 [inline]
     do_open fs/namei.c:3849 [inline]
     path_openat+0x2e4f/0x35d0 fs/namei.c:4004
     do_filp_open+0x284/0x4e0 fs/namei.c:4031
     do_sys_openat2+0x12b/0x1d0 fs/open.c:1429
     do_sys_open fs/open.c:1444 [inline]
     __do_sys_creat fs/open.c:1522 [inline]
     __se_sys_creat fs/open.c:1516 [inline]
     __x64_sys_creat+0x124/0x170 fs/open.c:1516
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xf3/0x230 arch/x86/entry/syscall_64.c:94
    
    The reason is: in fuzzed image, sbi->total_valid_block_count is
    inconsistent w/ mapped blocks indexed by inode, so, we should
    not trigger panic for such case, instead, let's print log and
    set fsck flag.
    
    Fixes: 39a53e0ce0df ("f2fs: add superblock and major in-memory structure")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/linux-f2fs-devel/[email protected]
    Signed-off-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

f2fs: prevent the current section from being selected as a victim during GC [+ + +]
Author: yohan.joung <[email protected]>
Date:   Fri Apr 4 08:21:06 2025 +0900

    f2fs: prevent the current section from being selected as a victim during GC
    
    [ Upstream commit d26fecb03e1f1069480d41fa2a6cea87ebbb89b8 ]
    
    When selecting a victim using next_victim_seg in a large section, the
    selected section might already have been cleared and designated as the
    new current section, making it actively in use.
    This behavior causes inconsistency between the SIT and SSA.
    
    F2FS-fs (dm-54): Inconsistent segment (70961) type [0, 1] in SSA and SIT
    Call trace:
    dump_backtrace+0xe8/0x10c
    show_stack+0x18/0x28
    dump_stack_lvl+0x50/0x6c
    dump_stack+0x18/0x28
    f2fs_stop_checkpoint+0x1c/0x3c
    do_garbage_collect+0x41c/0x271c
    f2fs_gc+0x27c/0x828
    gc_thread_func+0x290/0x88c
    kthread+0x11c/0x164
    ret_from_fork+0x10/0x20
    
    issue scenario
    segs_per_sec=2
    - seg#0 and seg#1 are all dirty
    - all valid blocks are removed in seg#1
    - gc select this sec and next_victim_seg=seg#0
    - migrate seg#0, next_victim_seg=seg#1
    - checkpoint -> sec(seg#0, seg#1)  becomes free
    - allocator assigns sec(seg#0, seg#1) to curseg
    - gc tries to migrate seg#1
    
    Fixes: e3080b0120a1 ("f2fs: support subsectional garbage collection")
    Signed-off-by: yohan.joung <[email protected]>
    Signed-off-by: Chao Yu <[email protected]>
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

f2fs: use d_inode(dentry) cleanup dentry->d_inode [+ + +]
Author: Zhiguo Niu <[email protected]>
Date:   Wed May 14 16:45:48 2025 +0800

    f2fs: use d_inode(dentry) cleanup dentry->d_inode
    
    [ Upstream commit a6c397a31f58a1d577c2c8d04b624e9baa31951c ]
    
    no logic changes.
    
    Signed-off-by: Zhiguo Niu <[email protected]>
    Reviewed-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

f2fs: zone: fix to avoid inconsistence in between SIT and SSA [+ + +]
Author: Chao Yu <[email protected]>
Date:   Tue Mar 25 16:06:46 2025 +0800

    f2fs: zone: fix to avoid inconsistence in between SIT and SSA
    
    [ Upstream commit 773704c1ef96a8b70d0d186ab725f50548de82c4 ]
    
    w/ below testcase, it will cause inconsistence in between SIT and SSA.
    
    create_null_blk 512 2 1024 1024
    mkfs.f2fs -m /dev/nullb0
    mount /dev/nullb0 /mnt/f2fs/
    touch /mnt/f2fs/file
    f2fs_io pinfile set /mnt/f2fs/file
    fallocate -l 4GiB /mnt/f2fs/file
    
    F2FS-fs (nullb0): Inconsistent segment (0) type [1, 0] in SSA and SIT
    CPU: 5 UID: 0 PID: 2398 Comm: fallocate Tainted: G           O       6.13.0-rc1 #84
    Tainted: [O]=OOT_MODULE
    Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    Call Trace:
     <TASK>
     dump_stack_lvl+0xb3/0xd0
     dump_stack+0x14/0x20
     f2fs_handle_critical_error+0x18c/0x220 [f2fs]
     f2fs_stop_checkpoint+0x38/0x50 [f2fs]
     do_garbage_collect+0x674/0x6e0 [f2fs]
     f2fs_gc_range+0x12b/0x230 [f2fs]
     f2fs_allocate_pinning_section+0x5c/0x150 [f2fs]
     f2fs_expand_inode_data+0x1cc/0x3c0 [f2fs]
     f2fs_fallocate+0x3c3/0x410 [f2fs]
     vfs_fallocate+0x15f/0x4b0
     __x64_sys_fallocate+0x4a/0x80
     x64_sys_call+0x15e8/0x1b80
     do_syscall_64+0x68/0x130
     entry_SYSCALL_64_after_hwframe+0x67/0x6f
    RIP: 0033:0x7f9dba5197ca
    F2FS-fs (nullb0): Stopped filesystem due to reason: 4
    
    The reason is f2fs_gc_range() may try to migrate block in curseg, however,
    its SSA block is not uptodate due to the last summary block data is still
    in cache of curseg.
    
    In this patch, we add a condition in f2fs_gc_range() to check whether
    section is opened or not, and skip block migration for opened section.
    
    Fixes: 9703d69d9d15 ("f2fs: support file pinning for zoned devices")
    Reviewed-by: Daeho Jeong <[email protected]>
    Cc: Daeho Jeong <[email protected]>
    Signed-off-by: Chao Yu <[email protected]>
    Signed-off-by: Jaegeuk Kim <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fbdev: core: fbcvt: avoid division by 0 in fb_cvt_hperiod() [+ + +]
Author: Sergey Shtylyov <[email protected]>
Date:   Wed May 14 23:35:58 2025 +0300

    fbdev: core: fbcvt: avoid division by 0 in fb_cvt_hperiod()
    
    [ Upstream commit 3f6dae09fc8c306eb70fdfef70726e1f154e173a ]
    
    In fb_find_mode_cvt(), iff mode->refresh somehow happens to be 0x80000000,
    cvt.f_refresh will become 0 when multiplying it by 2 due to overflow. It's
    then passed to fb_cvt_hperiod(), where it's used as a divider -- division
    by 0 will result in kernel oops. Add a sanity check for cvt.f_refresh to
    avoid such overflow...
    
    Found by Linux Verification Center (linuxtesting.org) with the Svace static
    analysis tool.
    
    Fixes: 96fe6a2109db ("[PATCH] fbdev: Add VESA Coordinated Video Timings (CVT) support")
    Signed-off-by: Sergey Shtylyov <[email protected]>
    Signed-off-by: Helge Deller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
firmware: psci: Fix refcount leak in psci_dt_init [+ + +]
Author: Miaoqian Lin <[email protected]>
Date:   Tue Mar 18 23:17:12 2025 +0800

    firmware: psci: Fix refcount leak in psci_dt_init
    
    [ Upstream commit 7ff37d29fd5c27617b9767e1b8946d115cf93a1e ]
    
    Fix a reference counter leak in psci_dt_init() where of_node_put(np) was
    missing after of_find_matching_node_and_match() when np is unavailable.
    
    Fixes: d09a0011ec0d ("drivers: psci: Allow PSCI node to be disabled")
    Signed-off-by: Miaoqian Lin <[email protected]>
    Reviewed-by: Gavin Shan <[email protected]>
    Acked-by: Mark Rutland <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

firmware: SDEI: Allow sdei initialization without ACPI_APEI_GHES [+ + +]
Author: Huang Yiwei <[email protected]>
Date:   Wed May 7 12:57:57 2025 +0800

    firmware: SDEI: Allow sdei initialization without ACPI_APEI_GHES
    
    [ Upstream commit 59529bbe642de4eb2191a541d9b4bae7eb73862e ]
    
    SDEI usually initialize with the ACPI table, but on platforms where
    ACPI is not used, the SDEI feature can still be used to handle
    specific firmware calls or other customized purposes. Therefore, it
    is not necessary for ARM_SDE_INTERFACE to depend on ACPI_APEI_GHES.
    
    In commit dc4e8c07e9e2 ("ACPI: APEI: explicit init of HEST and GHES
    in acpi_init()"), to make APEI ready earlier, sdei_init was moved
    into acpi_ghes_init instead of being a standalone initcall, adding
    ACPI_APEI_GHES dependency to ARM_SDE_INTERFACE. This restricts the
    flexibility and usability of SDEI.
    
    This patch corrects the dependency in Kconfig and splits sdei_init()
    into two separate functions: sdei_init() and acpi_sdei_init().
    sdei_init() will be called by arch_initcall and will only initialize
    the platform driver, while acpi_sdei_init() will initialize the
    device from acpi_ghes_init() when ACPI is ready. This allows the
    initialization of SDEI without ACPI_APEI_GHES enabled.
    
    Fixes: dc4e8c07e9e2 ("ACPI: APEI: explicit init of HEST and GHES in apci_init()")
    Cc: Shuai Xue <[email protected]>
    Signed-off-by: Huang Yiwei <[email protected]>
    Reviewed-by: Shuai Xue <[email protected]>
    Reviewed-by: Gavin Shan <[email protected]>
    Acked-by: Rafael J. Wysocki <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: fix propagation graph breakage by MOVE_MOUNT_SET_GROUP move_mount(2) [+ + +]
Author: Al Viro <[email protected]>
Date:   Tue Jun 3 17:57:27 2025 -0400

    fix propagation graph breakage by MOVE_MOUNT_SET_GROUP move_mount(2)
    
    [ Upstream commit d8cc0362f918d020ca1340d7694f07062dc30f36 ]
    
    9ffb14ef61ba "move_mount: allow to add a mount into an existing group"
    breaks assertions on ->mnt_share/->mnt_slave.  For once, the data structures
    in question are actually documented.
    
    Documentation/filesystem/sharedsubtree.rst:
            All vfsmounts in a peer group have the same ->mnt_master.  If it is
            non-NULL, they form a contiguous (ordered) segment of slave list.
    
    do_set_group() puts a mount into the same place in propagation graph
    as the old one.  As the result, if old mount gets events from somewhere
    and is not a pure event sink, new one needs to be placed next to the
    old one in the slave list the old one's on.  If it is a pure event
    sink, we only need to make sure the new one doesn't end up in the
    middle of some peer group.
    
    "move_mount: allow to add a mount into an existing group" ends up putting
    the new one in the beginning of list; that's definitely not going to be
    in the middle of anything, so that's fine for case when old is not marked
    shared.  In case when old one _is_ marked shared (i.e. is not a pure event
    sink), that breaks the assumptions of propagation graph iterators.
    
    Put the new mount next to the old one on the list - that does the right thing
    in "old is marked shared" case and is just as correct as the current behaviour
    if old is not marked shared (kudos to Pavel for pointing that out - my original
    suggested fix changed behaviour in the "nor marked" case, which complicated
    things for no good reason).
    
    Reviewed-by: Christian Brauner <[email protected]>
    Fixes: 9ffb14ef61ba ("move_mount: allow to add a mount into an existing group")
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Linux: Fix sock_exceed_buf_limit not being triggered in __sk_mem_raise_allocated [+ + +]
Author: Tengteng Yang <[email protected]>
Date:   Tue May 27 11:04:19 2025 +0800

    Fix sock_exceed_buf_limit not being triggered in __sk_mem_raise_allocated
    
    [ Upstream commit 8542d6fac25c03b4bf36b2d762cfe60fda8491bb ]
    
    When a process under memory pressure is not part of any cgroup and
    the charged flag is false, trace_sock_exceed_buf_limit was not called
    as expected.
    
    This regression was introduced by commit 2def8ff3fdb6 ("sock:
    Code cleanup on __sk_mem_raise_allocated()"). The fix changes the
    default value of charged to true while preserving existing logic.
    
    Fixes: 2def8ff3fdb6 ("sock: Code cleanup on __sk_mem_raise_allocated()")
    Signed-off-by: Abel Wu <[email protected]>
    Signed-off-by: Tengteng Yang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fpga: fix potential null pointer deref in fpga_mgr_test_img_load_sgt() [+ + +]
Author: Qasim Ijaz <[email protected]>
Date:   Tue Apr 22 16:37:37 2025 +0100

    fpga: fix potential null pointer deref in fpga_mgr_test_img_load_sgt()
    
    [ Upstream commit 6ebf1982038af12f3588417e4fd0417d2551da28 ]
    
    fpga_mgr_test_img_load_sgt() allocates memory for sgt using
    kunit_kzalloc() however it does not check if the allocation failed.
    It then passes sgt to sg_alloc_table(), which passes it to
    __sg_alloc_table(). This function calls memset() on sgt in an attempt to
    zero it out. If the allocation fails then sgt will be NULL and the
    memset will trigger a NULL pointer dereference.
    
    Fix this by checking the allocation with KUNIT_ASSERT_NOT_ERR_OR_NULL().
    
    Reviewed-by: Marco Pagani <[email protected]>
    Fixes: ccbc1c302115 ("fpga: add an initial KUnit suite for the FPGA Manager")
    Signed-off-by: Qasim Ijaz <[email protected]>
    Acked-by: Xu Yilun <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Xu Yilun <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/filesystems: Fix potential unsigned integer underflow in fs_name() [+ + +]
Author: Zijun Hu <[email protected]>
Date:   Thu Apr 10 19:45:27 2025 +0800

    fs/filesystems: Fix potential unsigned integer underflow in fs_name()
    
    [ Upstream commit 1363c134ade81e425873b410566e957fecebb261 ]
    
    fs_name() has @index as unsigned int, so there is underflow risk for
    operation '@index--'.
    
    Fix by breaking the for loop when '@index == 0' which is also more proper
    than '@index <= 0' for unsigned integer comparison.
    
    Signed-off-by: Zijun Hu <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs/ntfs3: Add missing direct_IO in ntfs_aops_cmpr [+ + +]
Author: Lizhi Xu <[email protected]>
Date:   Tue Apr 15 17:26:37 2025 +0800

    fs/ntfs3: Add missing direct_IO in ntfs_aops_cmpr
    
    [ Upstream commit 8b26c8c376b29cf29710fbfd093df194cefe26ad ]
    
    The ntfs3 can use the page cache directly, so its address_space_operations
    need direct_IO. Exit ntfs_direct_IO() if it is a compressed file.
    
    Fixes: b432163ebd15 ("fs/ntfs3: Update inode->i_mapping->a_ops on compression state")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=e36cc3297bd3afd25e19
    Signed-off-by: Lizhi Xu <[email protected]>
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

fs/ntfs3: handle hdr_first_de() return value [+ + +]
Author: Andrey Vatoropin <[email protected]>
Date:   Tue Mar 18 13:42:18 2025 +0000

    fs/ntfs3: handle hdr_first_de() return value
    
    [ Upstream commit af5cab0e5b6f8edb0be51a9f47f3f620e0b4fd70 ]
    
    The hdr_first_de() function returns a pointer to a struct NTFS_DE. This
    pointer may be NULL. To handle the NULL error effectively, it is important
    to implement an error handler. This will help manage potential errors
    consistently.
    
    Additionally, error handling for the return value already exists at other
    points where this function is called.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 82cae269cfa9 ("fs/ntfs3: Add initialization of super block")
    Signed-off-by: Andrey Vatoropin <[email protected]>
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gfs2: Don't clear sb->s_fs_info in gfs2_sys_fs_add [+ + +]
Author: Andrew Price <[email protected]>
Date:   Wed May 28 16:02:37 2025 +0100

    gfs2: Don't clear sb->s_fs_info in gfs2_sys_fs_add
    
    commit 9126d2754c5e5d1818765811a10af0a14cf1fa0a upstream.
    
    When gfs2_sys_fs_add() fails, it sets sb->s_fs_info to NULL on its error
    path (see commit 0d515210b696 ("GFS2: Add kobject release method")).
    The intention seems to be to prevent dereferencing sb->s_fs_info once
    the object pointed to has been deallocated, but that would be better
    achieved by setting the pointer to NULL in free_sbd().
    
    As a consequence, when the call to gfs2_sys_fs_add() fails in
    gfs2_fill_super(), sdp = GFS2_SB(inode) will evaluate to NULL in iput()
    -> gfs2_drop_inode(), and accessing sdp->sd_flags will be a NULL pointer
    dereference.
    
    Fix that by only setting sb->s_fs_info to NULL when actually freeing the
    object pointed to in free_sbd().
    
    Fixes: ae9f3bd8259a ("gfs2: replace sd_aspace with sd_inode")
    Reported-by: [email protected]
    Signed-off-by: Andrew Price <[email protected]>
    Signed-off-by: Andreas Gruenbacher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

gfs2: gfs2_create_inode error handling fix [+ + +]
Author: Andreas Gruenbacher <[email protected]>
Date:   Fri Apr 18 16:40:58 2025 +0200

    gfs2: gfs2_create_inode error handling fix
    
    [ Upstream commit af4044fd0b77e915736527dd83011e46e6415f01 ]
    
    When gfs2_create_inode() finds a directory, make sure to return -EISDIR.
    
    Fixes: 571a4b57975a ("GFS2: bugger off early if O_CREAT open finds a directory")
    Signed-off-by: Andreas Gruenbacher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gfs2: pass through holder from the VFS for freeze/thaw [+ + +]
Author: Christian Brauner <[email protected]>
Date:   Fri Apr 4 21:02:28 2025 +0200

    gfs2: pass through holder from the VFS for freeze/thaw
    
    [ Upstream commit 62a2175ddf7e72941868f164b7c1f92e00f213bd ]
    
    The filesystem's freeze/thaw functions can be called from contexts where
    the holder isn't userspace but the kernel, e.g., during systemd
    suspend/hibernate. So pass through the freeze/thaw flags from the VFS
    instead of hard-coding them.
    
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gfs2: replace sd_aspace with sd_inode [+ + +]
Author: Andreas Gruenbacher <[email protected]>
Date:   Sun Apr 6 00:31:37 2025 +0200

    gfs2: replace sd_aspace with sd_inode
    
    [ Upstream commit ae9f3bd8259a0a8f67be2420e66bb05fbb95af48 ]
    
    Currently, sdp->sd_aspace and the per-inode metadata address spaces use
    sb->s_bdev->bd_mapping->host as their ->host; folios in those address
    spaces will thus appear to be on bdev rather than on gfs2 filesystems.
    This is a problem because gfs2 doesn't support cgroup writeback
    (SB_I_CGROUPWB), but bdev does.
    
    Fix that by using a "dummy" gfs2 inode as ->host in those address
    spaces.  When coming from a folio, folio->mapping->host->i_sb will then
    be a gfs2 super block and the SB_I_CGROUPWB flag will not be set in
    sb->s_iflags.
    
    Based on a previous version from Bob Peterson from several years ago.
    Thanks to Tetsuo Handa, Jan Kara, and Rafael Aquini for helping figure
    this out.
    
    Fixes: aaa2cacf8184 ("writeback: add lockdep annotation to inode_to_wb()")
    Signed-off-by: Andreas Gruenbacher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gve: add missing NULL check for gve_alloc_pending_packet() in TX DQO [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Mon Jun 2 03:34:29 2025 -0700

    gve: add missing NULL check for gve_alloc_pending_packet() in TX DQO
    
    [ Upstream commit 12c331b29c7397ac3b03584e12902990693bc248 ]
    
    gve_alloc_pending_packet() can return NULL, but gve_tx_add_skb_dqo()
    did not check for this case before dereferencing the returned pointer.
    
    Add a missing NULL check to prevent a potential NULL pointer
    dereference when allocation fails.
    
    This improves robustness in low-memory scenarios.
    
    Fixes: a57e5de476be ("gve: DQO: Add TX path")
    Signed-off-by: Alok Tiwari <[email protected]>
    Reviewed-by: Mina Almasry <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

gve: Fix RX_BUFFERS_POSTED stat to report per-queue fill_cnt [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Tue May 27 06:08:16 2025 -0700

    gve: Fix RX_BUFFERS_POSTED stat to report per-queue fill_cnt
    
    [ Upstream commit f41a94aade120dc60322865f363cee7865f2df01 ]
    
    Previously, the RX_BUFFERS_POSTED stat incorrectly reported the
    fill_cnt from RX queue 0 for all queues, resulting in inaccurate
    per-queue statistics.
    Fix this by correctly indexing priv->rx[idx].fill_cnt for each RX queue.
    
    Fixes: 24aeb56f2d38 ("gve: Add Gvnic stats AQ command and ethtool show/set-priv-flags.")
    Signed-off-by: Alok Tiwari <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse() [+ + +]
Author: Terry Junge <[email protected]>
Date:   Wed Mar 12 15:23:31 2025 -0700

    HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse()
    
    commit fe7f7ac8e0c708446ff017453add769ffc15deed upstream.
    
    Update struct hid_descriptor to better reflect the mandatory and
    optional parts of the HID Descriptor as per USB HID 1.11 specification.
    Note: the kernel currently does not parse any optional HID class
    descriptors, only the mandatory report descriptor.
    
    Update all references to member element desc[0] to rpt_desc.
    
    Add test to verify bLength and bNumDescriptors values are valid.
    
    Replace the for loop with direct access to the mandatory HID class
    descriptor member for the report descriptor. This eliminates the
    possibility of getting an out-of-bounds fault.
    
    Add a warning message if the HID descriptor contains any unsupported
    optional HID class descriptors.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=c52569baf0c843f35495
    Fixes: f043bfc98c19 ("HID: usbhid: fix out-of-bounds bug")
    Cc: [email protected]
    Signed-off-by: Terry Junge <[email protected]>
    Reviewed-by: Michael Kelley <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
hisi_acc_vfio_pci: add eq and aeq interruption restore [+ + +]
Author: Longfang Liu <[email protected]>
Date:   Sat May 10 16:11:51 2025 +0800

    hisi_acc_vfio_pci: add eq and aeq interruption restore
    
    [ Upstream commit 3495cec0787721ba7a9d5c19d0bbb66d182de584 ]
    
    In order to ensure that the task packets of the accelerator
    device are not lost during the migration process, it is necessary
    to send an EQ and AEQ command to the device after the live migration
    is completed and to update the completion position of the task queue.
    
    Let the device recheck the completed tasks data and if there are
    uncollected packets, device resend a task completion interrupt
    to the software.
    
    Fixes: b0eed085903e ("hisi_acc_vfio_pci: Add support for VFIO live migration")
    Signed-off-by: Longfang Liu <[email protected]>
    Reviewed-by: Shameer Kolothum <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alex Williamson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hisi_acc_vfio_pci: bugfix live migration function without VF device driver [+ + +]
Author: Longfang Liu <[email protected]>
Date:   Sat May 10 16:11:54 2025 +0800

    hisi_acc_vfio_pci: bugfix live migration function without VF device driver
    
    [ Upstream commit 2777a40998deb36f96b6afc48bd397cf58a4edf0 ]
    
    If the VF device driver is not loaded in the Guest OS and we attempt to
    perform device data migration, the address of the migrated data will
    be NULL.
    The live migration recovery operation on the destination side will
    access a null address value, which will cause access errors.
    
    Therefore, live migration of VMs without added VF device drivers
    does not require device data migration.
    In addition, when the queue address data obtained by the destination
    is empty, device queue recovery processing will not be performed.
    
    Fixes: b0eed085903e ("hisi_acc_vfio_pci: Add support for VFIO live migration")
    Signed-off-by: Longfang Liu <[email protected]>
    Reviewed-by: Shameer Kolothum <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alex Williamson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

hisi_acc_vfio_pci: fix XQE dma address error [+ + +]
Author: Longfang Liu <[email protected]>
Date:   Sat May 10 16:11:50 2025 +0800

    hisi_acc_vfio_pci: fix XQE dma address error
    
    [ Upstream commit 8bb7170c5a055ea17c6857c256ee73c10ff872eb ]
    
    The dma addresses of EQE and AEQE are wrong after migration and
    results in guest kernel-mode encryption services  failure.
    Comparing the definition of hardware registers, we found that
    there was an error when the data read from the register was
    combined into an address. Therefore, the address combination
    sequence needs to be corrected.
    
    Even after fixing the above problem, we still have an issue
    where the Guest from an old kernel can get migrated to
    new kernel and may result in wrong data.
    
    In order to ensure that the address is correct after migration,
    if an old magic number is detected, the dma address needs to be
    updated.
    
    Fixes: b0eed085903e ("hisi_acc_vfio_pci: Add support for VFIO live migration")
    Signed-off-by: Longfang Liu <[email protected]>
    Reviewed-by: Shameer Kolothum <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alex Williamson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hwmon: (asus-ec-sensors) check sensor index in read_string() [+ + +]
Author: Alexei Safin <[email protected]>
Date:   Thu Apr 24 23:26:54 2025 +0300

    hwmon: (asus-ec-sensors) check sensor index in read_string()
    
    [ Upstream commit 25be318324563c63cbd9cb53186203a08d2f83a1 ]
    
    Prevent a potential invalid memory access when the requested sensor
    is not found.
    
    find_ec_sensor_index() may return a negative value (e.g. -ENOENT),
    but its result was used without checking, which could lead to
    undefined behavior when passed to get_sensor_info().
    
    Add a proper check to return -EINVAL if sensor_index is negative.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: d0ddfd241e57 ("hwmon: (asus-ec-sensors) add driver for ASUS EC")
    Signed-off-by: Alexei Safin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [groeck: Return error code returned from find_ec_sensor_index]
    Signed-off-by: Guenter Roeck <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
i40e: retry VFLR handling if there is ongoing VF reset [+ + +]
Author: Robert Malz <[email protected]>
Date:   Tue May 20 10:31:52 2025 +0200

    i40e: retry VFLR handling if there is ongoing VF reset
    
    [ Upstream commit fb4e9239e029954a37a00818b21e837cebf2aa10 ]
    
    When a VFLR interrupt is received during a VF reset initiated from a
    different source, the VFLR may be not fully handled. This can
    leave the VF in an undefined state.
    To address this, set the I40E_VFLR_EVENT_PENDING bit again during VFLR
    handling if the reset is not yet complete. This ensures the driver
    will properly complete the VF reset in such scenarios.
    
    Fixes: 52424f974bc5 ("i40e: Fix VF hang when reset is triggered on another VF")
    Signed-off-by: Robert Malz <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

i40e: return false from i40e_reset_vf if reset is in progress [+ + +]
Author: Robert Malz <[email protected]>
Date:   Tue May 20 10:31:51 2025 +0200

    i40e: return false from i40e_reset_vf if reset is in progress
    
    [ Upstream commit a2c90d63b71223d69a813333c1abf4fdacddbbe5 ]
    
    The function i40e_vc_reset_vf attempts, up to 20 times, to handle a
    VF reset request, using the return value of i40e_reset_vf as an indicator
    of whether the reset was successfully triggered. Currently, i40e_reset_vf
    always returns true, which causes new reset requests to be ignored if a
    different VF reset is already in progress.
    
    This patch updates the return value of i40e_reset_vf to reflect when
    another VF reset is in progress, allowing the caller to properly use
    the retry mechanism.
    
    Fixes: 52424f974bc5 ("i40e: Fix VF hang when reset is triggered on another VF")
    Signed-off-by: Robert Malz <[email protected]>
    Tested-by: Rafal Romanowski <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
IB/cm: use rwlock for MAD agent lock [+ + +]
Author: Jacob Moroni <[email protected]>
Date:   Thu Feb 20 17:56:12 2025 +0000

    IB/cm: use rwlock for MAD agent lock
    
    [ Upstream commit 4dab26bed543584577b64b36aadb8b5b165bf44f ]
    
    In workloads where there are many processes establishing connections using
    RDMA CM in parallel (large scale MPI), there can be heavy contention for
    mad_agent_lock in cm_alloc_msg.
    
    This contention can occur while inside of a spin_lock_irq region, leading
    to interrupts being disabled for extended durations on many
    cores. Furthermore, it leads to the serialization of rdma_create_ah calls,
    which has negative performance impacts for NICs which are capable of
    processing multiple address handle creations in parallel.
    
    The end result is the machine becoming unresponsive, hung task warnings,
    netdev TX timeouts, etc.
    
    Since the lock appears to be only for protection from cm_remove_one, it
    can be changed to a rwlock to resolve these issues.
    
    Reproducer:
    
    Server:
      for i in $(seq 1 512); do
        ucmatose -c 32 -p $((i + 5000)) &
      done
    
    Client:
      for i in $(seq 1 512); do
        ucmatose -c 32 -p $((i + 5000)) -s 10.2.0.52 &
      done
    
    Fixes: 76039ac9095f ("IB/cm: Protect cm_dev, cm_ports and mad_agent with kref and lock")
    Link: https://patch.msgid.link/r/[email protected]
    Signed-off-by: Jacob Moroni <[email protected]>
    Acked-by: Eric Dumazet <[email protected]>
    Reviewed-by: Zhu Yanjun <[email protected]>
    Reviewed-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ice: create new Tx scheduler nodes for new queues only [+ + +]
Author: Michal Kubiak <[email protected]>
Date:   Tue May 13 12:55:28 2025 +0200

    ice: create new Tx scheduler nodes for new queues only
    
    [ Upstream commit 6fa2942578472c9cab13a8fc1dae0d830193e0a1 ]
    
    The current implementation of the Tx scheduler tree attempts
    to create nodes for all Tx queues, ignoring the fact that some
    queues may already exist in the tree. For example, if the VSI
    already has 128 Tx queues and the user requests for 16 new queues,
    the Tx scheduler will compute the tree for 272 queues (128 existing
    queues + 144 new queues), instead of 144 queues (128 existing queues
    and 16 new queues).
    Fix that by modifying the node count calculation algorithm to skip
    the queues that already exist in the tree.
    
    Fixes: 5513b920a4f7 ("ice: Update Tx scheduler tree for VSI multi-Tx queue support")
    Reviewed-by: Dawid Osuchowski <[email protected]>
    Reviewed-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Signed-off-by: Michal Kubiak <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Jesse Brandeburg <[email protected]>
    Tested-by: Saritha Sanigani <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: fix rebuilding the Tx scheduler tree for large queue counts [+ + +]
Author: Michal Kubiak <[email protected]>
Date:   Tue May 13 12:55:29 2025 +0200

    ice: fix rebuilding the Tx scheduler tree for large queue counts
    
    [ Upstream commit 73145e6d81070d34a21431c9e0d7aaf2f29ca048 ]
    
    The current implementation of the Tx scheduler allows the tree to be
    rebuilt as the user adds more Tx queues to the VSI. In such a case,
    additional child nodes are added to the tree to support the new number
    of queues.
    Unfortunately, this algorithm does not take into account that the limit
    of the VSI support node may be exceeded, so an additional node in the
    VSI layer may be required to handle all the requested queues.
    
    Such a scenario occurs when adding XDP Tx queues on machines with many
    CPUs. Although the driver still respects the queue limit returned by
    the FW, the Tx scheduler was unable to add those queues to its tree
    and returned one of the errors below.
    
    Such a scenario occurs when adding XDP Tx queues on machines with many
    CPUs (e.g. at least 321 CPUs, if there is already 128 Tx/Rx queue pairs).
    Although the driver still respects the queue limit returned by the FW,
    the Tx scheduler was unable to add those queues to its tree and returned
    the following errors:
    
         Failed VSI LAN queue config for XDP, error: -5
    or:
         Failed to set LAN Tx queue context, error: -22
    
    Fix this problem by extending the tree rebuild algorithm to check if the
    current VSI node can support the requested number of queues. If it
    cannot, create as many additional VSI support nodes as necessary to
    handle all the required Tx queues. Symmetrically, adjust the VSI node
    removal algorithm to remove all nodes associated with the given VSI.
    Also, make the search for the next free VSI node more restrictive. That is,
    add queue group nodes only to the VSI support nodes that have a matching
    VSI handle.
    Finally, fix the comment describing the tree update algorithm to better
    reflect the current scenario.
    
    Fixes: b0153fdd7e8a ("ice: update VSI config dynamically")
    Reviewed-by: Dawid Osuchowski <[email protected]>
    Reviewed-by: Przemek Kitszel <[email protected]>
    Signed-off-by: Michal Kubiak <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Jesse Brandeburg <[email protected]>
    Tested-by: Saritha Sanigani <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: fix Tx scheduler error handling in XDP callback [+ + +]
Author: Michal Kubiak <[email protected]>
Date:   Tue May 13 12:55:27 2025 +0200

    ice: fix Tx scheduler error handling in XDP callback
    
    [ Upstream commit 0153f36041b8e52019ebfa8629c13bf8f9b0a951 ]
    
    When the XDP program is loaded, the XDP callback adds new Tx queues.
    This means that the callback must update the Tx scheduler with the new
    queue number. In the event of a Tx scheduler failure, the XDP callback
    should also fail and roll back any changes previously made for XDP
    preparation.
    
    The previous implementation had a bug that not all changes made by the
    XDP callback were rolled back. This caused the crash with the following
    call trace:
    
    [  +9.549584] ice 0000:ca:00.0: Failed VSI LAN queue config for XDP, error: -5
    [  +0.382335] Oops: general protection fault, probably for non-canonical address 0x50a2250a90495525: 0000 [#1] SMP NOPTI
    [  +0.010710] CPU: 103 UID: 0 PID: 0 Comm: swapper/103 Not tainted 6.14.0-net-next-mar-31+ #14 PREEMPT(voluntary)
    [  +0.010175] Hardware name: Intel Corporation M50CYP2SBSTD/M50CYP2SBSTD, BIOS SE5C620.86B.01.01.0005.2202160810 02/16/2022
    [  +0.010946] RIP: 0010:__ice_update_sample+0x39/0xe0 [ice]
    
    [...]
    
    [  +0.002715] Call Trace:
    [  +0.002452]  <IRQ>
    [  +0.002021]  ? __die_body.cold+0x19/0x29
    [  +0.003922]  ? die_addr+0x3c/0x60
    [  +0.003319]  ? exc_general_protection+0x17c/0x400
    [  +0.004707]  ? asm_exc_general_protection+0x26/0x30
    [  +0.004879]  ? __ice_update_sample+0x39/0xe0 [ice]
    [  +0.004835]  ice_napi_poll+0x665/0x680 [ice]
    [  +0.004320]  __napi_poll+0x28/0x190
    [  +0.003500]  net_rx_action+0x198/0x360
    [  +0.003752]  ? update_rq_clock+0x39/0x220
    [  +0.004013]  handle_softirqs+0xf1/0x340
    [  +0.003840]  ? sched_clock_cpu+0xf/0x1f0
    [  +0.003925]  __irq_exit_rcu+0xc2/0xe0
    [  +0.003665]  common_interrupt+0x85/0xa0
    [  +0.003839]  </IRQ>
    [  +0.002098]  <TASK>
    [  +0.002106]  asm_common_interrupt+0x26/0x40
    [  +0.004184] RIP: 0010:cpuidle_enter_state+0xd3/0x690
    
    Fix this by performing the missing unmapping of XDP queues from
    q_vectors and setting the XDP rings pointer back to NULL after all those
    queues are released.
    Also, add an immediate exit from the XDP callback in case of ring
    preparation failure.
    
    Fixes: efc2214b6047 ("ice: Add support for XDP")
    Reviewed-by: Dawid Osuchowski <[email protected]>
    Reviewed-by: Przemek Kitszel <[email protected]>
    Reviewed-by: Jacob Keller <[email protected]>
    Signed-off-by: Michal Kubiak <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Jesse Brandeburg <[email protected]>
    Tested-by: Saritha Sanigani <[email protected]> (A Contingent Worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
idpf: avoid mailbox timeout delays during reset [+ + +]
Author: Emil Tantilov <[email protected]>
Date:   Thu May 8 11:47:15 2025 -0700

    idpf: avoid mailbox timeout delays during reset
    
    [ Upstream commit 9dc63d8ff182150d7d7b318ab9389702a2c0a292 ]
    
    Mailbox operations are not possible while the driver is in reset.
    Operations that require MBX exchange with the control plane will result
    in long delays if executed while a reset is in progress:
    
    ethtool -L <inf> combined 8& echo 1 > /sys/class/net/<inf>/device/reset
    idpf 0000:83:00.0: HW reset detected
    idpf 0000:83:00.0: Device HW Reset initiated
    idpf 0000:83:00.0: Transaction timed-out (op:504 cookie:be00 vc_op:504 salt:be timeout:2000ms)
    idpf 0000:83:00.0: Transaction timed-out (op:508 cookie:bf00 vc_op:508 salt:bf timeout:2000ms)
    idpf 0000:83:00.0: Transaction timed-out (op:512 cookie:c000 vc_op:512 salt:c0 timeout:2000ms)
    idpf 0000:83:00.0: Transaction timed-out (op:510 cookie:c100 vc_op:510 salt:c1 timeout:2000ms)
    idpf 0000:83:00.0: Transaction timed-out (op:509 cookie:c200 vc_op:509 salt:c2 timeout:60000ms)
    idpf 0000:83:00.0: Transaction timed-out (op:509 cookie:c300 vc_op:509 salt:c3 timeout:60000ms)
    idpf 0000:83:00.0: Transaction timed-out (op:505 cookie:c400 vc_op:505 salt:c4 timeout:60000ms)
    idpf 0000:83:00.0: Failed to configure queues for vport 0, -62
    
    Disable mailbox communication in case of a reset, unless it's done during
    a driver load, where the virtchnl operations are needed to configure the
    device.
    
    Fixes: 8077c727561aa ("idpf: add controlq init and reset checks")
    Co-developed-by: Joshua Hay <[email protected]>
    Signed-off-by: Joshua Hay <[email protected]>
    Signed-off-by: Emil Tantilov <[email protected]>
    Reviewed-by: Ahmed Zaki <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Samuel Salin <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

idpf: fix a race in txq wakeup [+ + +]
Author: Brian Vazquez <[email protected]>
Date:   Thu May 1 17:06:17 2025 +0000

    idpf: fix a race in txq wakeup
    
    [ Upstream commit 7292af042bcf22e2c18b96ed250f78498a5b28ab ]
    
    Add a helper function to correctly handle the lockless
    synchronization when the sender needs to block. The paradigm is
    
            if (no_resources()) {
                    stop_queue();
                    barrier();
                    if (!no_resources())
                            restart_queue();
            }
    
    netif_subqueue_maybe_stop already handles the paradigm correctly, but
    the code split the check for resources in three parts, the first one
    (descriptors) followed the protocol, but the other two (completions and
    tx_buf) were only doing the first part and so race prone.
    
    Luckily netif_subqueue_maybe_stop macro already allows you to use a
    function to evaluate the start/stop conditions so the fix only requires
    the right helper function to evaluate all the conditions at once.
    
    The patch removes idpf_tx_maybe_stop_common since it's no longer needed
    and instead adjusts separately the conditions for singleq and splitq.
    
    Note that idpf_tx_buf_hw_update doesn't need to check for resources
    since that will be covered in idpf_tx_splitq_frame.
    
    To reproduce:
    
    Reduce the threshold for pending completions to increase the chances of
    hitting this pause by changing your kernel:
    
    drivers/net/ethernet/intel/idpf/idpf_txrx.h
    
    -#define IDPF_TX_COMPLQ_OVERFLOW_THRESH(txcq)   ((txcq)->desc_count >> 1)
    +#define IDPF_TX_COMPLQ_OVERFLOW_THRESH(txcq)   ((txcq)->desc_count >> 4)
    
    Use pktgen to force the host to push small pkts very aggressively:
    
    ./pktgen_sample02_multiqueue.sh -i eth1 -s 100 -6 -d $IP -m $MAC \
      -p 10000-10000 -t 16 -n 0 -v -x -c 64
    
    Fixes: 6818c4d5b3c2 ("idpf: add splitq start_xmit")
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Madhu Chittim <[email protected]>
    Signed-off-by: Josh Hay <[email protected]>
    Signed-off-by: Brian Vazquez <[email protected]>
    Signed-off-by: Luigi Rizzo <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Samuel Salin <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iio: adc: ad7124: Fix 3dB filter frequency reading [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Mon Mar 17 12:52:47 2025 +0100

    iio: adc: ad7124: Fix 3dB filter frequency reading
    
    [ Upstream commit 8712e4986e7ce42a14c762c4c350f290989986a5 ]
    
    The sinc4 filter has a factor 0.23 between Output Data Rate and f_{3dB}
    and for sinc3 the factor is 0.272 according to the data sheets for
    ad7124-4 (Rev. E.) and ad7124-8 (Rev. F).
    
    Fixes: cef2760954cf ("iio: adc: ad7124: add 3db filter")
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Reviewed-by: Marcelo Schmitt <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: adc: mcp3911: fix device dependent mappings for conversion result registers [+ + +]
Author: Marcus Folkesson <[email protected]>
Date:   Mon Apr 28 08:54:11 2025 +0200

    iio: adc: mcp3911: fix device dependent mappings for conversion result registers
    
    [ Upstream commit f62c49d8f32d6ce8871b01795498352775aa61db ]
    
    The conversion result registers differs between devices. Make sure the
    mapping is correct by using a device dependent .get_raw() callback function.
    
    Fixes: 732ad34260d3 ("iio: adc: mcp3911: add support for the whole MCP39xx family")
    Co-developed-by: Lukas Rauber <[email protected]>
    Signed-off-by: Lukas Rauber <[email protected]>
    Signed-off-by: Marcus Folkesson <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: adc: PAC1934: fix typo in documentation link [+ + +]
Author: Marius Cristea <[email protected]>
Date:   Thu Apr 24 11:06:33 2025 +0300

    iio: adc: PAC1934: fix typo in documentation link
    
    [ Upstream commit 52c43d80fa8370eb877fc63b1fc1eec67e1b1410 ]
    
    Fix a typo,(PAC1934 -> PAC193X), into the link from an application note
    related to the ACPI device definition.
    
    Fixes: 0fb528c8255b ("iio: adc: adding support for PAC193x")
    Reported-by: Matteo Martelli <[email protected]>
    Closes: https://patch.msgid.link/[email protected]
    Signed-off-by: Marius Cristea <[email protected]>
    Reviewed-by: David Lechner <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: filter: admv8818: fix band 4, state 15 [+ + +]
Author: Sam Winchenbach <[email protected]>
Date:   Fri Mar 28 13:48:27 2025 -0400

    iio: filter: admv8818: fix band 4, state 15
    
    [ Upstream commit ef0ce24f590ac075d5eda11f2d6434b303333ed6 ]
    
    Corrects the upper range of LPF Band 4 from 18.5 GHz to 18.85 GHz per
    the ADMV8818 datasheet
    
    Fixes: f34fe888ad05 ("iio:filter:admv8818: add support for ADMV8818")
    Signed-off-by: Sam Winchenbach <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: filter: admv8818: fix integer overflow [+ + +]
Author: Sam Winchenbach <[email protected]>
Date:   Fri Mar 28 13:48:28 2025 -0400

    iio: filter: admv8818: fix integer overflow
    
    [ Upstream commit fb6009a28d77edec4eb548b5875dae8c79b88467 ]
    
    HZ_PER_MHZ is only unsigned long. This math overflows, leading to
    incorrect results.
    
    Fixes: f34fe888ad05 ("iio:filter:admv8818: add support for ADMV8818")
    Signed-off-by: Sam Winchenbach <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: filter: admv8818: fix range calculation [+ + +]
Author: Sam Winchenbach <[email protected]>
Date:   Fri Mar 28 13:48:29 2025 -0400

    iio: filter: admv8818: fix range calculation
    
    [ Upstream commit d542db7095d322bfcdc8e306db6f8c48358c9619 ]
    
    Search for the minimum error while ensuring that the LPF corner
    frequency is greater than the target, and the HPF corner frequency
    is lower than the target
    
    This fixes issues where the range calculations were suboptimal.
    
    Add two new DTS properties to set the margin between the input frequency
    and the calculated corner frequency
    
    Below is a generated table of the differences between the old algorithm
    and the new. This is a sweep from 0 to 20 GHz in 10 MHz steps.
    === HPF ===
    freq = 1750 MHz, 3db: bypass => 1750 MHz
    freq = 3400 MHz, 3db: 3310 => 3400 MHz
    freq = 3410 MHz, 3db: 3310 => 3400 MHz
    freq = 3420 MHz, 3db: 3310 => 3400 MHz
    freq = 3660 MHz, 3db: 3550 => 3656 MHz
    freq = 6600 MHz, 3db: 6479 => 6600 MHz
    freq = 6610 MHz, 3db: 6479 => 6600 MHz
    freq = 6620 MHz, 3db: 6479 => 6600 MHz
    freq = 6630 MHz, 3db: 6479 => 6600 MHz
    freq = 6640 MHz, 3db: 6479 => 6600 MHz
    freq = 6650 MHz, 3db: 6479 => 6600 MHz
    freq = 6660 MHz, 3db: 6479 => 6600 MHz
    freq = 6670 MHz, 3db: 6479 => 6600 MHz
    freq = 6680 MHz, 3db: 6479 => 6600 MHz
    freq = 6690 MHz, 3db: 6479 => 6600 MHz
    freq = 6700 MHz, 3db: 6479 => 6600 MHz
    freq = 6710 MHz, 3db: 6479 => 6600 MHz
    freq = 6720 MHz, 3db: 6479 => 6600 MHz
    freq = 6730 MHz, 3db: 6479 => 6600 MHz
    freq = 6960 MHz, 3db: 6736 => 6960 MHz
    freq = 6970 MHz, 3db: 6736 => 6960 MHz
    freq = 6980 MHz, 3db: 6736 => 6960 MHz
    freq = 6990 MHz, 3db: 6736 => 6960 MHz
    freq = 7320 MHz, 3db: 7249 => 7320 MHz
    freq = 7330 MHz, 3db: 7249 => 7320 MHz
    freq = 7340 MHz, 3db: 7249 => 7320 MHz
    freq = 7350 MHz, 3db: 7249 => 7320 MHz
    freq = 7360 MHz, 3db: 7249 => 7320 MHz
    freq = 7370 MHz, 3db: 7249 => 7320 MHz
    freq = 7380 MHz, 3db: 7249 => 7320 MHz
    freq = 7390 MHz, 3db: 7249 => 7320 MHz
    freq = 7400 MHz, 3db: 7249 => 7320 MHz
    freq = 7410 MHz, 3db: 7249 => 7320 MHz
    freq = 7420 MHz, 3db: 7249 => 7320 MHz
    freq = 7430 MHz, 3db: 7249 => 7320 MHz
    freq = 7440 MHz, 3db: 7249 => 7320 MHz
    freq = 7450 MHz, 3db: 7249 => 7320 MHz
    freq = 7460 MHz, 3db: 7249 => 7320 MHz
    freq = 7470 MHz, 3db: 7249 => 7320 MHz
    freq = 7480 MHz, 3db: 7249 => 7320 MHz
    freq = 7490 MHz, 3db: 7249 => 7320 MHz
    freq = 7500 MHz, 3db: 7249 => 7320 MHz
    freq = 12500 MHz, 3db: 12000 => 12500 MHz
    
    === LPF ===
    freq = 2050 MHz, 3db: bypass => 2050 MHz
    freq = 2170 MHz, 3db: 2290 => 2170 MHz
    freq = 2290 MHz, 3db: 2410 => 2290 MHz
    freq = 2410 MHz, 3db: 2530 => 2410 MHz
    freq = 2530 MHz, 3db: 2650 => 2530 MHz
    freq = 2650 MHz, 3db: 2770 => 2650 MHz
    freq = 2770 MHz, 3db: 2890 => 2770 MHz
    freq = 2890 MHz, 3db: 3010 => 2890 MHz
    freq = 3010 MHz, 3db: 3130 => 3010 MHz
    freq = 3130 MHz, 3db: 3250 => 3130 MHz
    freq = 3250 MHz, 3db: 3370 => 3250 MHz
    freq = 3260 MHz, 3db: 3370 => 3350 MHz
    freq = 3270 MHz, 3db: 3370 => 3350 MHz
    freq = 3280 MHz, 3db: 3370 => 3350 MHz
    freq = 3290 MHz, 3db: 3370 => 3350 MHz
    freq = 3300 MHz, 3db: 3370 => 3350 MHz
    freq = 3310 MHz, 3db: 3370 => 3350 MHz
    freq = 3320 MHz, 3db: 3370 => 3350 MHz
    freq = 3330 MHz, 3db: 3370 => 3350 MHz
    freq = 3340 MHz, 3db: 3370 => 3350 MHz
    freq = 3350 MHz, 3db: 3370 => 3350 MHz
    freq = 3370 MHz, 3db: 3490 => 3370 MHz
    freq = 3490 MHz, 3db: 3610 => 3490 MHz
    freq = 3610 MHz, 3db: 3730 => 3610 MHz
    freq = 3730 MHz, 3db: 3850 => 3730 MHz
    freq = 3850 MHz, 3db: 3870 => 3850 MHz
    freq = 3870 MHz, 3db: 4130 => 3870 MHz
    freq = 4130 MHz, 3db: 4390 => 4130 MHz
    freq = 4390 MHz, 3db: 4650 => 4390 MHz
    freq = 4650 MHz, 3db: 4910 => 4650 MHz
    freq = 4910 MHz, 3db: 5170 => 4910 MHz
    freq = 5170 MHz, 3db: 5430 => 5170 MHz
    freq = 5430 MHz, 3db: 5690 => 5430 MHz
    freq = 5690 MHz, 3db: 5950 => 5690 MHz
    freq = 5950 MHz, 3db: 6210 => 5950 MHz
    freq = 6210 MHz, 3db: 6470 => 6210 MHz
    freq = 6470 MHz, 3db: 6730 => 6470 MHz
    freq = 6730 MHz, 3db: 6990 => 6730 MHz
    freq = 6990 MHz, 3db: 7250 => 6990 MHz
    freq = 7000 MHz, 3db: 7250 => 7000 MHz
    freq = 7250 MHz, 3db: 7400 => 7250 MHz
    freq = 7400 MHz, 3db: 7800 => 7400 MHz
    freq = 7800 MHz, 3db: 8200 => 7800 MHz
    freq = 8200 MHz, 3db: 8600 => 8200 MHz
    freq = 8600 MHz, 3db: 9000 => 8600 MHz
    freq = 9000 MHz, 3db: 9400 => 9000 MHz
    freq = 9400 MHz, 3db: 9800 => 9400 MHz
    freq = 9800 MHz, 3db: 10200 => 9800 MHz
    freq = 10200 MHz, 3db: 10600 => 10200 MHz
    freq = 10600 MHz, 3db: 11000 => 10600 MHz
    freq = 11000 MHz, 3db: 11400 => 11000 MHz
    freq = 11400 MHz, 3db: 11800 => 11400 MHz
    freq = 11800 MHz, 3db: 12200 => 11800 MHz
    freq = 12200 MHz, 3db: 12600 => 12200 MHz
    freq = 12210 MHz, 3db: 12600 => 12550 MHz
    freq = 12220 MHz, 3db: 12600 => 12550 MHz
    freq = 12230 MHz, 3db: 12600 => 12550 MHz
    freq = 12240 MHz, 3db: 12600 => 12550 MHz
    freq = 12250 MHz, 3db: 12600 => 12550 MHz
    freq = 12260 MHz, 3db: 12600 => 12550 MHz
    freq = 12270 MHz, 3db: 12600 => 12550 MHz
    freq = 12280 MHz, 3db: 12600 => 12550 MHz
    freq = 12290 MHz, 3db: 12600 => 12550 MHz
    freq = 12300 MHz, 3db: 12600 => 12550 MHz
    freq = 12310 MHz, 3db: 12600 => 12550 MHz
    freq = 12320 MHz, 3db: 12600 => 12550 MHz
    freq = 12330 MHz, 3db: 12600 => 12550 MHz
    freq = 12340 MHz, 3db: 12600 => 12550 MHz
    freq = 12350 MHz, 3db: 12600 => 12550 MHz
    freq = 12360 MHz, 3db: 12600 => 12550 MHz
    freq = 12370 MHz, 3db: 12600 => 12550 MHz
    freq = 12380 MHz, 3db: 12600 => 12550 MHz
    freq = 12390 MHz, 3db: 12600 => 12550 MHz
    freq = 12400 MHz, 3db: 12600 => 12550 MHz
    freq = 12410 MHz, 3db: 12600 => 12550 MHz
    freq = 12420 MHz, 3db: 12600 => 12550 MHz
    freq = 12430 MHz, 3db: 12600 => 12550 MHz
    freq = 12440 MHz, 3db: 12600 => 12550 MHz
    freq = 12450 MHz, 3db: 12600 => 12550 MHz
    freq = 12460 MHz, 3db: 12600 => 12550 MHz
    freq = 12470 MHz, 3db: 12600 => 12550 MHz
    freq = 12480 MHz, 3db: 12600 => 12550 MHz
    freq = 12490 MHz, 3db: 12600 => 12550 MHz
    freq = 12500 MHz, 3db: 12600 => 12550 MHz
    freq = 12510 MHz, 3db: 12600 => 12550 MHz
    freq = 12520 MHz, 3db: 12600 => 12550 MHz
    freq = 12530 MHz, 3db: 12600 => 12550 MHz
    freq = 12540 MHz, 3db: 12600 => 12550 MHz
    freq = 12550 MHz, 3db: 12600 => 12550 MHz
    freq = 12600 MHz, 3db: 13000 => 12600 MHz
    freq = 12610 MHz, 3db: 13000 => 12970 MHz
    freq = 12620 MHz, 3db: 13000 => 12970 MHz
    freq = 12630 MHz, 3db: 13000 => 12970 MHz
    freq = 12640 MHz, 3db: 13000 => 12970 MHz
    freq = 12650 MHz, 3db: 13000 => 12970 MHz
    freq = 12660 MHz, 3db: 13000 => 12970 MHz
    freq = 12670 MHz, 3db: 13000 => 12970 MHz
    freq = 12680 MHz, 3db: 13000 => 12970 MHz
    freq = 12690 MHz, 3db: 13000 => 12970 MHz
    freq = 12700 MHz, 3db: 13000 => 12970 MHz
    freq = 12710 MHz, 3db: 13000 => 12970 MHz
    freq = 12720 MHz, 3db: 13000 => 12970 MHz
    freq = 12730 MHz, 3db: 13000 => 12970 MHz
    freq = 12740 MHz, 3db: 13000 => 12970 MHz
    freq = 12750 MHz, 3db: 13000 => 12970 MHz
    freq = 12760 MHz, 3db: 13000 => 12970 MHz
    freq = 12770 MHz, 3db: 13000 => 12970 MHz
    freq = 12780 MHz, 3db: 13000 => 12970 MHz
    freq = 12790 MHz, 3db: 13000 => 12970 MHz
    freq = 12800 MHz, 3db: 13000 => 12970 MHz
    freq = 12810 MHz, 3db: 13000 => 12970 MHz
    freq = 12820 MHz, 3db: 13000 => 12970 MHz
    freq = 12830 MHz, 3db: 13000 => 12970 MHz
    freq = 12840 MHz, 3db: 13000 => 12970 MHz
    freq = 12850 MHz, 3db: 13000 => 12970 MHz
    freq = 12860 MHz, 3db: 13000 => 12970 MHz
    freq = 12870 MHz, 3db: 13000 => 12970 MHz
    freq = 12880 MHz, 3db: 13000 => 12970 MHz
    freq = 12890 MHz, 3db: 13000 => 12970 MHz
    freq = 12900 MHz, 3db: 13000 => 12970 MHz
    freq = 12910 MHz, 3db: 13000 => 12970 MHz
    freq = 12920 MHz, 3db: 13000 => 12970 MHz
    freq = 12930 MHz, 3db: 13000 => 12970 MHz
    freq = 12940 MHz, 3db: 13000 => 12970 MHz
    freq = 12950 MHz, 3db: 13000 => 12970 MHz
    freq = 12960 MHz, 3db: 13000 => 12970 MHz
    freq = 12970 MHz, 3db: 13000 => 12970 MHz
    freq = 13000 MHz, 3db: 13390 => 13000 MHz
    freq = 13390 MHz, 3db: 13810 => 13390 MHz
    freq = 13810 MHz, 3db: 14230 => 13810 MHz
    freq = 14230 MHz, 3db: 14650 => 14230 MHz
    freq = 14650 MHz, 3db: 15070 => 14650 MHz
    freq = 15070 MHz, 3db: 15490 => 15070 MHz
    freq = 15490 MHz, 3db: 15910 => 15490 MHz
    freq = 15910 MHz, 3db: 16330 => 15910 MHz
    freq = 16330 MHz, 3db: 16750 => 16330 MHz
    freq = 16750 MHz, 3db: 17170 => 16750 MHz
    freq = 17170 MHz, 3db: 17590 => 17170 MHz
    freq = 17590 MHz, 3db: 18010 => 17590 MHz
    freq = 18010 MHz, 3db: 18430 => 18010 MHz
    freq = 18430 MHz, 3db: 18850 => 18430 MHz
    freq = 18850 MHz, 3db: bypass => 18850 MHz
    
    Fixes: f34fe888ad05 ("iio:filter:admv8818: add support for ADMV8818")
    Signed-off-by: Sam Winchenbach <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: filter: admv8818: Support frequencies >= 2^32 [+ + +]
Author: Brian Pellegrino <[email protected]>
Date:   Fri Mar 28 13:48:31 2025 -0400

    iio: filter: admv8818: Support frequencies >= 2^32
    
    [ Upstream commit 9016776f1301627de78a633bda7c898425a56572 ]
    
    This patch allows writing u64 values to the ADMV8818's high and low-pass
    filter frequencies. It includes the following changes:
    
    - Rejects negative frequencies in admv8818_write_raw.
    - Adds a write_raw_get_fmt function to admv8818's iio_info, returning
      IIO_VAL_INT_64 for the high and low-pass filter 3dB frequency channels.
    
    Fixes: f34fe888ad05 ("iio:filter:admv8818: add support for ADMV8818")
    Signed-off-by: Brian Pellegrino <[email protected]>
    Signed-off-by: Sam Winchenbach <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Input: synaptics-rmi - fix crash with unsupported versions of F34 [+ + +]
Author: Dmitry Torokhov <[email protected]>
Date:   Mon May 5 15:49:59 2025 -0700

    Input: synaptics-rmi - fix crash with unsupported versions of F34
    
    [ Upstream commit ca39500f6af9cfe6823dc5aa8fbaed788d6e35b2 ]
    
    Sysfs interface for updating firmware for RMI devices is available even
    when F34 probe fails. The code checks for presence of F34 "container"
    pointer and then tries to use the function data attached to the
    sub-device. F34 assigns the function data early, before it knows if
    probe will succeed, leaving behind a stale pointer.
    
    Fix this by expanding checks to not only test for presence of F34
    "container" but also check if there is driver data assigned to the
    sub-device, and call dev_set_drvdata() only after we are certain that
    probe is successful.
    
    This is not a complete fix, since F34 will be freed during firmware
    update, so there is still a race when fetching and accessing this
    pointer. This race will be addressed in follow-up changes.
    
    Reported-by: Hanno Böck <[email protected]>
    Fixes: 29fd0ec2bdbe ("Input: synaptics-rmi4 - add support for F34 device reflash")
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring: consistently use rcu semantics with sqpoll thread [+ + +]
Author: Keith Busch <[email protected]>
Date:   Wed Jun 11 13:53:43 2025 -0700

    io_uring: consistently use rcu semantics with sqpoll thread
    
    [ Upstream commit c538f400fae22725580842deb2bef546701b64bd ]
    
    The sqpoll thread is dereferenced with rcu read protection in one place,
    so it needs to be annotated as an __rcu type, and should consistently
    use rcu helpers for access and assignment to make sparse happy.
    
    Since most of the accesses occur under the sqd->lock, we can use
    rcu_dereference_protected() without declaring an rcu read section.
    Provide a simple helper to get the thread from a locked context.
    
    Fixes: ac0b8b327a5677d ("io_uring: fix use-after-free of sq->thread in __io_uring_show_fdinfo()")
    Signed-off-by: Keith Busch <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [axboe: fold in fix for register.c]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

io_uring: fix use-after-free of sq->thread in __io_uring_show_fdinfo() [+ + +]
Author: Penglei Jiang <[email protected]>
Date:   Tue Jun 10 10:18:01 2025 -0700

    io_uring: fix use-after-free of sq->thread in __io_uring_show_fdinfo()
    
    [ Upstream commit ac0b8b327a5677dc6fecdf353d808161525b1ff0 ]
    
    syzbot reports:
    
    BUG: KASAN: slab-use-after-free in getrusage+0x1109/0x1a60
    Read of size 8 at addr ffff88810de2d2c8 by task a.out/304
    
    CPU: 0 UID: 0 PID: 304 Comm: a.out Not tainted 6.16.0-rc1 #1 PREEMPT(voluntary)
    Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    Call Trace:
     <TASK>
     dump_stack_lvl+0x53/0x70
     print_report+0xd0/0x670
     ? __pfx__raw_spin_lock_irqsave+0x10/0x10
     ? getrusage+0x1109/0x1a60
     kasan_report+0xce/0x100
     ? getrusage+0x1109/0x1a60
     getrusage+0x1109/0x1a60
     ? __pfx_getrusage+0x10/0x10
     __io_uring_show_fdinfo+0x9fe/0x1790
     ? ksys_read+0xf7/0x1c0
     ? do_syscall_64+0xa4/0x260
     ? vsnprintf+0x591/0x1100
     ? __pfx___io_uring_show_fdinfo+0x10/0x10
     ? __pfx_vsnprintf+0x10/0x10
     ? mutex_trylock+0xcf/0x130
     ? __pfx_mutex_trylock+0x10/0x10
     ? __pfx_show_fd_locks+0x10/0x10
     ? io_uring_show_fdinfo+0x57/0x80
     io_uring_show_fdinfo+0x57/0x80
     seq_show+0x38c/0x690
     seq_read_iter+0x3f7/0x1180
     ? inode_set_ctime_current+0x160/0x4b0
     seq_read+0x271/0x3e0
     ? __pfx_seq_read+0x10/0x10
     ? __pfx__raw_spin_lock+0x10/0x10
     ? __mark_inode_dirty+0x402/0x810
     ? selinux_file_permission+0x368/0x500
     ? file_update_time+0x10f/0x160
     vfs_read+0x177/0xa40
     ? __pfx___handle_mm_fault+0x10/0x10
     ? __pfx_vfs_read+0x10/0x10
     ? mutex_lock+0x81/0xe0
     ? __pfx_mutex_lock+0x10/0x10
     ? fdget_pos+0x24d/0x4b0
     ksys_read+0xf7/0x1c0
     ? __pfx_ksys_read+0x10/0x10
     ? do_user_addr_fault+0x43b/0x9c0
     do_syscall_64+0xa4/0x260
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f0f74170fc9
    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 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 8
    RSP: 002b:00007fffece049e8 EFLAGS: 00000206 ORIG_RAX: 0000000000000000
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f0f74170fc9
    RDX: 0000000000001000 RSI: 00007fffece049f0 RDI: 0000000000000004
    RBP: 00007fffece05ad0 R08: 0000000000000000 R09: 00007fffece04d90
    R10: 0000000000000000 R11: 0000000000000206 R12: 00005651720a1100
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
     </TASK>
    
    Allocated by task 298:
     kasan_save_stack+0x33/0x60
     kasan_save_track+0x14/0x30
     __kasan_slab_alloc+0x6e/0x70
     kmem_cache_alloc_node_noprof+0xe8/0x330
     copy_process+0x376/0x5e00
     create_io_thread+0xab/0xf0
     io_sq_offload_create+0x9ed/0xf20
     io_uring_setup+0x12b0/0x1cc0
     do_syscall_64+0xa4/0x260
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 22:
     kasan_save_stack+0x33/0x60
     kasan_save_track+0x14/0x30
     kasan_save_free_info+0x3b/0x60
     __kasan_slab_free+0x37/0x50
     kmem_cache_free+0xc4/0x360
     rcu_core+0x5ff/0x19f0
     handle_softirqs+0x18c/0x530
     run_ksoftirqd+0x20/0x30
     smpboot_thread_fn+0x287/0x6c0
     kthread+0x30d/0x630
     ret_from_fork+0xef/0x1a0
     ret_from_fork_asm+0x1a/0x30
    
    Last potentially related work creation:
     kasan_save_stack+0x33/0x60
     kasan_record_aux_stack+0x8c/0xa0
     __call_rcu_common.constprop.0+0x68/0x940
     __schedule+0xff2/0x2930
     __cond_resched+0x4c/0x80
     mutex_lock+0x5c/0xe0
     io_uring_del_tctx_node+0xe1/0x2b0
     io_uring_clean_tctx+0xb7/0x160
     io_uring_cancel_generic+0x34e/0x760
     do_exit+0x240/0x2350
     do_group_exit+0xab/0x220
     __x64_sys_exit_group+0x39/0x40
     x64_sys_call+0x1243/0x1840
     do_syscall_64+0xa4/0x260
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    The buggy address belongs to the object at ffff88810de2cb00
     which belongs to the cache task_struct of size 3712
    The buggy address is located 1992 bytes inside of
     freed 3712-byte region [ffff88810de2cb00, ffff88810de2d980)
    
    which is caused by the task_struct pointed to by sq->thread being
    released while it is being used in the function
    __io_uring_show_fdinfo(). Holding ctx->uring_lock does not prevent ehre
    relase or exit of sq->thread.
    
    Fix this by assigning and looking up ->thread under RCU, and grabbing a
    reference to the task_struct. This ensures that it cannot get released
    while fdinfo is using it.
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]
    Fixes: 3fcb9d17206e ("io_uring/sqpoll: statistics of the true utilization of sq threads")
    Signed-off-by: Penglei Jiang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [axboe: massage commit message]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iommu: Protect against overflow in iommu_pgsize() [+ + +]
Author: Jason Gunthorpe <[email protected]>
Date:   Fri Apr 25 10:08:37 2025 -0300

    iommu: Protect against overflow in iommu_pgsize()
    
    [ Upstream commit e586e22974d2b7acbef3c6c3e01b2d5ce69efe33 ]
    
    On a 32 bit system calling:
     iommu_map(0, 0x40000000)
    
    When using the AMD V1 page table type with a domain->pgsize of 0xfffff000
    causes iommu_pgsize() to miscalculate a result of:
      size=0x40000000 count=2
    
    count should be 1. This completely corrupts the mapping process.
    
    This is because the final test to adjust the pagesize malfunctions when
    the addition overflows. Use check_add_overflow() to prevent this.
    
    Fixes: b1d99dc5f983 ("iommu: Hook up '->unmap_pages' driver callback")
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Reviewed-by: Lu Baolu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Joerg Roedel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iommu: remove duplicate selection of DMAR_TABLE [+ + +]
Author: Rolf Eike Beer <[email protected]>
Date:   Mon May 12 15:10:44 2025 +0200

    iommu: remove duplicate selection of DMAR_TABLE
    
    [ Upstream commit 9548feff840a05d61783e6316d08ed37e115f3b1 ]
    
    This is already done in intel/Kconfig.
    
    Fixes: 70bad345e622 ("iommu: Fix compilation without CONFIG_IOMMU_INTEL")
    Signed-off-by: Rolf Eike Beer <[email protected]>
    Reviewed-by: Lu Baolu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Joerg Roedel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iov_iter: use iov_offset for length calculation in iov_iter_aligned_bvec [+ + +]
Author: Nitesh Shetty <[email protected]>
Date:   Mon Apr 28 15:28:48 2025 +0530

    iov_iter: use iov_offset for length calculation in iov_iter_aligned_bvec
    
    [ Upstream commit 334d7c4fb60cf21e0abac134d92fe49e9b04377e ]
    
    If iov_offset is non-zero, then we need to consider iov_offset in length
    calculation, otherwise we might pass smaller IOs such as 512 bytes, in
    below scenario [1].
    
    This issue is reproducible using lib-uring test/fixed-seg.c application
    with fixed buffer on a 512 LBA formatted device.
    
    [1]
    
    At present we pass the alignment check, for 512 LBA formatted devices,
    len_mask = 511 when IO is smaller, i->count = 512 has an offset,
    i->io_offset = 3584 with bvec values, bvec->bv_offset = 256,
    bvec->bv_len = 3840.  In short, the first 256 bytes are in the current
    page, next 256 bytes are in the another page.  Ideally we expect to
    fail the IO.
    
    I can think of 2 userspace scenarios where we experience this.
    
    a: From userspace, we observe a different behaviour when device LBA
       size is 512 vs 4096 bytes.  For 4096 LBA formatted device, I see the
       same liburing test [2] failing, whereas 512 the test passes without
       this.  This is reproducible everytime.
    
       [2] https://github.com/axboe/liburing/
    
    b: Although I was not able to reproduce the below condition, but I
       suspect below case should be possible from user space for devices
       with 512 LBA formatted device.  Lets say from userspace while
       allocating a virtually single chunk of memory, if we get 2 physical
       chunk of memory, and IO happens to be at the boundary of first
       physical chunk with length crossing first chunk, then we allow IOs
       to proceed and hence we might map wrong physical address length and
       proceed with IO rather than failing.
    
    : --- a/test/fixed-seg.c
    : +++ b/test/fixed-seg.c
    : @@ -64,7 +64,7 @@ static int test(struct io_uring *ring, int fd, int
    : vec_off)
    :               return T_EXIT_FAIL;
    :       }
    :
    : -       ret = read_it(ring, fd, 4096, vec_off);
    : +       ret = read_it(ring, fd, 4096, 7*512 + 256);
    :       if (ret) {
    :               fprintf(stderr, "4096 0 failed\n");
    :               return T_EXIT_FAIL;
    
    Effectively this is a write crossing the page boundary.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 2263639f96f2 ("iov_iter: streamline iovec/bvec alignment iteration")
    Reviewed-by: Jens Axboe <[email protected]>
    Reviewed-by: Anuj Gupta <[email protected]>
    Signed-off-by: Nitesh Shetty <[email protected]>
    Cc: Al Viro <[email protected]>
    Cc: Christian Brauner <[email protected]>
    Cc: Keith Busch <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kernfs: Relax constraint in draining guard [+ + +]
Author: Michal Koutný <[email protected]>
Date:   Mon May 5 14:12:00 2025 +0200

    kernfs: Relax constraint in draining guard
    
    [ Upstream commit 071d8e4c2a3b0999a9b822e2eb8854784a350f8a ]
    
    The active reference lifecycle provides the break/unbreak mechanism but
    the active reference is not truly active after unbreak -- callers don't
    use it afterwards but it's important for proper pairing of kn->active
    counting. Assuming this mechanism is in place, the WARN check in
    kernfs_should_drain_open_files() is too sensitive -- it may transiently
    catch those (rightful) callers between
    kernfs_unbreak_active_protection() and kernfs_put_active() as found out by Chen
    Ridong:
    
            kernfs_remove_by_name_ns        kernfs_get_active // active=1
            __kernfs_remove                                   // active=0x80000002
            kernfs_drain                    ...
            wait_event
            //waiting (active == 0x80000001)
                                            kernfs_break_active_protection
                                            // active = 0x80000001
            // continue
                                            kernfs_unbreak_active_protection
                                            // active = 0x80000002
            ...
            kernfs_should_drain_open_files
            // warning occurs
                                            kernfs_put_active
    
    To avoid the false positives (mind panic_on_warn) remove the check altogether.
    (This is meant as quick fix, I think active reference break/unbreak may be
    simplified with larger rework.)
    
    Fixes: bdb2fd7fc56e1 ("kernfs: Skip kernfs_drain_open_files() more aggressively")
    Link: https://lore.kernel.org/r/kmmrseckjctb4gxcx2rdminrjnq2b4ipf7562nvfd432ld5v5m@2byj5eedkb2o/
    
    Cc: Chen Ridong <[email protected]>
    Signed-off-by: Michal Koutný <[email protected]>
    Acked-by: Tejun Heo <[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]>

 
kselftest: cpufreq: Get rid of double suspend in rtcwake case [+ + +]
Author: Nícolas F. R. A. Prado <[email protected]>
Date:   Wed Apr 30 10:55:49 2025 -0400

    kselftest: cpufreq: Get rid of double suspend in rtcwake case
    
    [ Upstream commit 23b88515a318680337f21d0a2fceee8038ccffc8 ]
    
    Commit 0b631ed3ce92 ("kselftest: cpufreq: Add RTC wakeup alarm") added
    support for automatic wakeup in the suspend routine of the cpufreq
    kselftest by using rtcwake, however it left the manual power state
    change in the common path. The end result is that when running the
    cpufreq kselftest with '-t suspend_rtc' or '-t hibernate_rtc', the
    system will go to sleep and be woken up by the RTC, but then immediately
    go to sleep again with no wakeup programmed, so it will sleep forever in
    an automated testing setup.
    
    Fix this by moving the manual power state change so that it only happens
    when not using rtcwake.
    
    Link: https://lore.kernel.org/r/20250430-ksft-cpufreq-suspend-rtc-double-fix-v1-1-dc17a729c5a7@collabora.com
    Fixes: 0b631ed3ce92 ("kselftest: cpufreq: Add RTC wakeup alarm")
    Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ktls, sockmap: Fix missing uncharge operation [+ + +]
Author: Jiayuan Chen <[email protected]>
Date:   Fri Apr 25 13:59:57 2025 +0800

    ktls, sockmap: Fix missing uncharge operation
    
    [ Upstream commit 79f0c39ae7d3dc628c01b02f23ca5d01f9875040 ]
    
    When we specify apply_bytes, we divide the msg into multiple segments,
    each with a length of 'send', and every time we send this part of the data
    using tcp_bpf_sendmsg_redir(), we use sk_msg_return_zero() to uncharge the
    memory of the specified 'send' size.
    
    However, if the first segment of data fails to send, for example, the
    peer's buffer is full, we need to release all of the msg. When releasing
    the msg, we haven't uncharged the memory of the subsequent segments.
    
    This modification does not make significant logical changes, but only
    fills in the missing uncharge places.
    
    This issue has existed all along, until it was exposed after we added the
    apply test in test_sockmap:
    commit 3448ad23b34e ("selftests/bpf: Add apply_bytes test to test_txmsg_redir_wait_sndmem in test_sockmap")
    
    Fixes: d3b18ad31f93 ("tls: add bpf support to sk_msg handling")
    Reported-by: Cong Wang <[email protected]>
    Closes: https://lore.kernel.org/bpf/[email protected]/T/#t
    Signed-off-by: Jiayuan Chen <[email protected]>
    Signed-off-by: Martin KaFai Lau <[email protected]>
    Acked-by: John Fastabend <[email protected]>
    Reviewed-by: Cong Wang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
kunit/usercopy: Disable u64 test on 32-bit SPARC [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Wed Apr 16 14:44:19 2025 +0200

    kunit/usercopy: Disable u64 test on 32-bit SPARC
    
    [ Upstream commit 0d6efa20e384a41a7f4afdcd8a0aec442c19d33e ]
    
    usercopy of 64 bit values does not work on 32-bit SPARC:
    
        # usercopy_test_valid: EXPECTATION FAILED at lib/tests/usercopy_kunit.c:209
        Expected val_u64 == 0x5a5b5c5d6a6b6c6d, but
            val_u64 == 1515936861 (0x5a5b5c5d)
            0x5a5b5c5d6a6b6c6d == 6510899242581322861 (0x5a5b5c5d6a6b6c6d)
    
    Disable the test.
    
    Fixes: 4c5d7bc63775 ("usercopy: Add tests for all get_user() sizes")
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kunit: Fix wrong parameter to kunit_deactivate_static_stub() [+ + +]
Author: Tzung-Bi Shih <[email protected]>
Date:   Tue May 20 08:20:49 2025 +0000

    kunit: Fix wrong parameter to kunit_deactivate_static_stub()
    
    [ Upstream commit 772e50a76ee664e75581624f512df4e45582605a ]
    
    kunit_deactivate_static_stub() accepts real_fn_addr instead of
    replacement_addr.  In the case, it always passes NULL to
    kunit_deactivate_static_stub().
    
    Fix it.
    
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: e047c5eaa763 ("kunit: Expose 'static stub' API to redirect functions")
    Signed-off-by: Tzung-Bi Shih <[email protected]>
    Reviewed-by: David Gow <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
libbpf: Fix buffer overflow in bpf_object__init_prog [+ + +]
Author: Viktor Malik <[email protected]>
Date:   Tue Apr 15 17:50:14 2025 +0200

    libbpf: Fix buffer overflow in bpf_object__init_prog
    
    [ Upstream commit ee684de5c1b0ac01821320826baec7da93f3615b ]
    
    As shown in [1], it is possible to corrupt a BPF ELF file such that
    arbitrary BPF instructions are loaded by libbpf. This can be done by
    setting a symbol (BPF program) section offset to a large (unsigned)
    number such that <section start + symbol offset> overflows and points
    before the section data in the memory.
    
    Consider the situation below where:
    - prog_start = sec_start + symbol_offset    <-- size_t overflow here
    - prog_end   = prog_start + prog_size
    
        prog_start        sec_start        prog_end        sec_end
            |                |                 |              |
            v                v                 v              v
        .....................|################################|............
    
    The report in [1] also provides a corrupted BPF ELF which can be used as
    a reproducer:
    
        $ readelf -S crash
        Section Headers:
          [Nr] Name              Type             Address           Offset
               Size              EntSize          Flags  Link  Info  Align
        ...
          [ 2] uretprobe.mu[...] PROGBITS         0000000000000000  00000040
               0000000000000068  0000000000000000  AX       0     0     8
    
        $ readelf -s crash
        Symbol table '.symtab' contains 8 entries:
           Num:    Value          Size Type    Bind   Vis      Ndx Name
        ...
             6: ffffffffffffffb8   104 FUNC    GLOBAL DEFAULT    2 handle_tp
    
    Here, the handle_tp prog has section offset ffffffffffffffb8, i.e. will
    point before the actual memory where section 2 is allocated.
    
    This is also reported by AddressSanitizer:
    
        =================================================================
        ==1232==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x7c7302fe0000 at pc 0x7fc3046e4b77 bp 0x7ffe64677cd0 sp 0x7ffe64677490
        READ of size 104 at 0x7c7302fe0000 thread T0
            #0 0x7fc3046e4b76 in memcpy (/lib64/libasan.so.8+0xe4b76)
            #1 0x00000040df3e in bpf_object__init_prog /src/libbpf/src/libbpf.c:856
            #2 0x00000040df3e in bpf_object__add_programs /src/libbpf/src/libbpf.c:928
            #3 0x00000040df3e in bpf_object__elf_collect /src/libbpf/src/libbpf.c:3930
            #4 0x00000040df3e in bpf_object_open /src/libbpf/src/libbpf.c:8067
            #5 0x00000040f176 in bpf_object__open_file /src/libbpf/src/libbpf.c:8090
            #6 0x000000400c16 in main /poc/poc.c:8
            #7 0x7fc3043d25b4 in __libc_start_call_main (/lib64/libc.so.6+0x35b4)
            #8 0x7fc3043d2667 in __libc_start_main@@GLIBC_2.34 (/lib64/libc.so.6+0x3667)
            #9 0x000000400b34 in _start (/poc/poc+0x400b34)
    
        0x7c7302fe0000 is located 64 bytes before 104-byte region [0x7c7302fe0040,0x7c7302fe00a8)
        allocated by thread T0 here:
            #0 0x7fc3046e716b in malloc (/lib64/libasan.so.8+0xe716b)
            #1 0x7fc3045ee600 in __libelf_set_rawdata_wrlock (/lib64/libelf.so.1+0xb600)
            #2 0x7fc3045ef018 in __elf_getdata_rdlock (/lib64/libelf.so.1+0xc018)
            #3 0x00000040642f in elf_sec_data /src/libbpf/src/libbpf.c:3740
    
    The problem here is that currently, libbpf only checks that the program
    end is within the section bounds. There used to be a check
    `while (sec_off < sec_sz)` in bpf_object__add_programs, however, it was
    removed by commit 6245947c1b3c ("libbpf: Allow gaps in BPF program
    sections to support overriden weak functions").
    
    Add a check for detecting the overflow of `sec_off + prog_sz` to
    bpf_object__init_prog to fix this issue.
    
    [1] https://github.com/lmarch2/poc/blob/main/libbpf/libbpf.md
    
    Fixes: 6245947c1b3c ("libbpf: Allow gaps in BPF program sections to support overriden weak functions")
    Reported-by: lmarch2 <[email protected]>
    Signed-off-by: Viktor Malik <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Reviewed-by: Shung-Hsi Yu <[email protected]>
    Link: https://github.com/lmarch2/poc/blob/main/libbpf/libbpf.md
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

libbpf: Fix event name too long error [+ + +]
Author: Feng Yang <[email protected]>
Date:   Thu Apr 17 09:48:46 2025 +0800

    libbpf: Fix event name too long error
    
    [ Upstream commit 4dde20b1aa85d69c4281eaac9a7cfa7d2b62ecf0 ]
    
    When the binary path is excessively long, the generated probe_name in libbpf
    exceeds the kernel's MAX_EVENT_NAME_LEN limit (64 bytes).
    This causes legacy uprobe event attachment to fail with error code -22.
    
    The fix reorders the fields to place the unique ID before the name.
    This ensures that even if truncation occurs via snprintf, the unique ID
    remains intact, preserving event name uniqueness. Additionally, explicit
    checks with MAX_EVENT_NAME_LEN are added to enforce length constraints.
    
    Before Fix:
            ./test_progs -t attach_probe/kprobe-long_name
            ......
            libbpf: failed to add legacy kprobe event for 'bpf_testmod_looooooooooooooooooooooooooooooong_name+0x0': -EINVAL
            libbpf: prog 'handle_kprobe': failed to create kprobe 'bpf_testmod_looooooooooooooooooooooooooooooong_name+0x0' perf event: -EINVAL
            test_attach_kprobe_long_event_name:FAIL:attach_kprobe_long_event_name unexpected error: -22
            test_attach_probe:PASS:uprobe_ref_ctr_cleanup 0 nsec
            #13/11   attach_probe/kprobe-long_name:FAIL
            #13      attach_probe:FAIL
    
            ./test_progs -t attach_probe/uprobe-long_name
            ......
            libbpf: failed to add legacy uprobe event for /root/linux-bpf/bpf-next/tools/testing/selftests/bpf/test_progs:0x13efd9: -EINVAL
            libbpf: prog 'handle_uprobe': failed to create uprobe '/root/linux-bpf/bpf-next/tools/testing/selftests/bpf/test_progs:0x13efd9' perf event: -EINVAL
            test_attach_uprobe_long_event_name:FAIL:attach_uprobe_long_event_name unexpected error: -22
            #13/10   attach_probe/uprobe-long_name:FAIL
            #13      attach_probe:FAIL
    After Fix:
            ./test_progs -t attach_probe/uprobe-long_name
            #13/10   attach_probe/uprobe-long_name:OK
            #13      attach_probe:OK
            Summary: 1/1 PASSED, 0 SKIPPED, 0 FAILED
    
            ./test_progs -t attach_probe/kprobe-long_name
            #13/11   attach_probe/kprobe-long_name:OK
            #13      attach_probe:OK
            Summary: 1/1 PASSED, 0 SKIPPED, 0 FAILED
    
    Fixes: 46ed5fc33db9 ("libbpf: Refactor and simplify legacy kprobe code")
    Fixes: cc10623c6810 ("libbpf: Add legacy uprobe attaching support")
    Signed-off-by: Hengqi Chen <[email protected]>
    Signed-off-by: Feng Yang <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

libbpf: Remove sample_period init in perf_buffer [+ + +]
Author: Tao Chen <[email protected]>
Date:   Thu Apr 24 00:39:01 2025 +0800

    libbpf: Remove sample_period init in perf_buffer
    
    [ Upstream commit 64821d25f05ac468d435e61669ae745ce5a633ea ]
    
    It seems that sample_period is not used in perf buffer. Actually, only
    wakeup_events are meaningful to enable events aggregation for wakeup notification.
    Remove sample_period setting code to avoid confusion.
    
    Fixes: fb84b8224655 ("libbpf: add perf buffer API")
    Signed-off-by: Tao Chen <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Acked-by: Jiri Olsa <[email protected]>
    Acked-by: Namhyung Kim <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

libbpf: Use proper errno value in linker [+ + +]
Author: Anton Protopopov <[email protected]>
Date:   Wed Apr 30 12:08:20 2025 +0000

    libbpf: Use proper errno value in linker
    
    [ Upstream commit 358b1c0f56ebb6996fcec7dcdcf6bae5dcbc8b6c ]
    
    Return values of the linker_append_sec_data() and the
    linker_append_elf_relos() functions are propagated all the
    way up to users of libbpf API. In some error cases these
    functions return -1 which will be seen as -EPERM from user's
    point of view. Instead, return a more reasonable -EINVAL.
    
    Fixes: faf6ed321cf6 ("libbpf: Add BPF static linker APIs")
    Signed-off-by: Anton Protopopov <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

libbpf: Use proper errno value in nlattr [+ + +]
Author: Anton Protopopov <[email protected]>
Date:   Sat May 10 18:20:11 2025 +0000

    libbpf: Use proper errno value in nlattr
    
    [ Upstream commit fd5fd538a1f4b34cee6823ba0ddda2f7a55aca96 ]
    
    Return value of the validate_nla() function can be propagated all the
    way up to users of libbpf API. In case of error this libbpf version
    of validate_nla returns -1 which will be seen as -EPERM from user's
    point of view. Instead, return a more reasonable -EINVAL.
    
    Fixes: bbf48c18ee0c ("libbpf: add error reporting in XDP")
    Suggested-by: Andrii Nakryiko <[email protected]>
    Signed-off-by: Anton Protopopov <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 6.12.34 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu Jun 19 15:32:38 2025 +0200

    Linux 6.12.34
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Salvatore Bonaccorso <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Brett Mastbergen <[email protected]>
    Tested-by: Hardik Garg <[email protected]>
    Tested-by: Markus Reichelt <[email protected]>
    Tested-by: Harshit Mogalapalli <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
loop: add file_start_write() and file_end_write() [+ + +]
Author: Ming Lei <[email protected]>
Date:   Tue May 27 23:34:05 2025 +0800

    loop: add file_start_write() and file_end_write()
    
    [ Upstream commit 39d86db34e41b96bd86f1955cd0ce6cd9c5fca4c ]
    
    file_start_write() and file_end_write() should be added around ->write_iter().
    
    Recently we switch to ->write_iter() from vfs_iter_write(), and the
    implied file_start_write() and file_end_write() are lost.
    
    Also we never add them for dio code path, so add them back for covering
    both.
    
    Cc: Jeff Moyer <[email protected]>
    Fixes: f2fed441c69b ("loop: stop using vfs_iter_{read,write} for buffered I/O")
    Fixes: bc07c10a3603 ("block: loop: support DIO & AIO")
    Signed-off-by: Ming Lei <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
m68k: mac: Fix macintosh_config for Mac II [+ + +]
Author: Finn Thain <[email protected]>
Date:   Thu Apr 24 10:07:26 2025 +1000

    m68k: mac: Fix macintosh_config for Mac II
    
    [ Upstream commit 52ae3f5da7e5adbe3d1319573b55dac470abb83c ]
    
    When booted on my Mac II, the kernel prints this:
    
        Detected Macintosh model: 6
        Apple Macintosh Unknown
    
    The catch-all entry ("Unknown") is mac_data_table[0] which is only needed
    in the unlikely event that the bootinfo model ID can't be matched.
    When model ID is 6, the search should begin and end at mac_data_table[1].
    Fix the off-by-one error that causes this problem.
    
    Cc: Joshua Thompson <[email protected]>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Finn Thain <[email protected]>
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Link: https://lore.kernel.org/d0f30a551064ca4810b1c48d5a90954be80634a9.1745453246.git.fthain@linux-m68k.org
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
macsec: MACsec SCI assignment for ES = 0 [+ + +]
Author: Carlos Fernandez <[email protected]>
Date:   Mon Jun 9 09:26:26 2025 +0200

    macsec: MACsec SCI assignment for ES = 0
    
    [ Upstream commit d9816ec74e6d6aa29219d010bba3f780ba1d9d75 ]
    
    According to 802.1AE standard, when ES and SC flags in TCI are zero,
    used SCI should be the current active SC_RX. Current code uses the
    header MAC address. Without this patch, when ES flag is 0 (using a
    bridge or switch), header MAC will not fit the SCI and MACSec frames
    will be discarted.
    
    In order to test this issue, MACsec link should be stablished between
    two interfaces, setting SC and ES flags to zero and a port identifier
    different than one. For example, using ip macsec tools:
    
    ip link add link $ETH0 macsec0 type macsec port 11 send_sci off
    end_station off
    ip macsec add macsec0 tx sa 0 pn 2 on key 01 $ETH1_KEY
    ip macsec add macsec0 rx port 11 address $ETH1_MAC
    ip macsec add macsec0 rx port 11 address $ETH1_MAC sa 0 pn 2 on key 02
    ip link set dev macsec0 up
    
    ip link add link $ETH1 macsec1 type macsec port 11 send_sci off
    end_station off
    ip macsec add macsec1 tx sa 0 pn 2 on key 01 $ETH0_KEY
    ip macsec add macsec1 rx port 11 address $ETH0_MAC
    ip macsec add macsec1 rx port 11 address $ETH0_MAC sa 0 pn 2 on key 02
    ip link set dev macsec1 up
    
    Fixes: c09440f7dcb3 ("macsec: introduce IEEE 802.1AE driver")
    Co-developed-by: Andreu Montiel <[email protected]>
    Signed-off-by: Andreu Montiel <[email protected]>
    Signed-off-by: Carlos Fernandez <[email protected]>
    Reviewed-by: Subbaraya Sundeep <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mailbox: imx: Fix TXDB_V2 sending [+ + +]
Author: Peng Fan <[email protected]>
Date:   Sun May 25 16:47:24 2025 +0800

    mailbox: imx: Fix TXDB_V2 sending
    
    [ Upstream commit f5cb07ec6aabd1bb56adbdeb5f0d70cb524db2cd ]
    
    i.MX95 features several processing domains, Cortex-M7, Cortex-A55
    secure, Cortex-A55 non-secure. Each domain could communicate with
    SCMI firmware with a dedicated MU. But the current NXP SCMI firmware
    is not a RTOS, all processing logic codes are in interrupt context.
    So if high priority Cortex-M7 is communicating with SCMI firmware and
    requires a bit more time to handle the SCMI call, Linux MU TXDB_V2
    will be timeout with high possiblity in 1000us(the current value in
    imx-mailbox.c). Per NXP SCMI firmware design, if timeout, there is
    no recover logic, so SCMI agents should never timeout and always
    wait until the check condition met.
    
    Based on the upper reason, enlarge the timeout value to 10ms which
    is less chance to timeout, and retry if timeout really happends.
    
    Fixes: 5bfe4067d350 ("mailbox: imx: support channel type tx doorbell v2")
    Signed-off-by: Peng Fan <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mailbox: mtk-cmdq: Refine GCE_GCTL_VALUE setting [+ + +]
Author: Jason-JH Lin <[email protected]>
Date:   Mon Apr 21 11:55:47 2025 +0800

    mailbox: mtk-cmdq: Refine GCE_GCTL_VALUE setting
    
    [ Upstream commit 9fcebcb37c3e0a4b6eb40768cc5a5faebf166fbe ]
    
    Add cmdq_gctl_value_toggle() to configure GCE_CTRL_BY_SW and GCE_DDR_EN
    together in the same GCE_GCTL_VALUE register.
    
    For the SoCs whose GCE is located in MMINFRA and uses MMINFRA_AO power,
    this allows it to be written without enabling the clocks. Otherwise, all
    GCE registers should be written after the GCE clocks are enabled.
    Move this function into cmdq_runtime_resume() and cmdq_runtime_suspend()
    to ensure it is called when the GCE clock is enabled.
    
    Fixes: 7abd037aa581 ("mailbox: mtk-cmdq: add gce ddr enable support flow")
    Signed-off-by: Jason-JH Lin <[email protected]>
    Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
    Signed-off-by: Jassi Brar <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
media: rkvdec: Fix frame size enumeration [+ + +]
Author: Jonas Karlman <[email protected]>
Date:   Tue Feb 25 10:40:33 2025 +0100

    media: rkvdec: Fix frame size enumeration
    
    [ Upstream commit f270005b99fa19fee9a6b4006e8dee37c10f1944 ]
    
    The VIDIOC_ENUM_FRAMESIZES ioctl should return all frame sizes (i.e.
    width and height in pixels) that the device supports for the given pixel
    format.
    
    It doesn't make a lot of sense to return the frame-sizes in a stepwise
    manner, which is used to enforce hardware alignments requirements for
    CAPTURE buffers, for coded formats.
    
    Instead, applications should receive an indication, about the maximum
    supported frame size for that hardware decoder, via a continuous
    frame-size enumeration.
    
    Fixes: cd33c830448b ("media: rkvdec: Add the rkvdec driver")
    Suggested-by: Alex Bee <[email protected]>
    Signed-off-by: Jonas Karlman <[email protected]>
    Reviewed-by: Nicolas Dufresne <[email protected]>
    Signed-off-by: Nicolas Dufresne <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

media: verisilicon: Free post processor buffers on error [+ + +]
Author: Detlev Casanova <[email protected]>
Date:   Fri Apr 25 15:24:47 2025 -0400

    media: verisilicon: Free post processor buffers on error
    
    [ Upstream commit 11beb0fc346e00c412b3bfd19013206f6b655604 ]
    
    During initialization, the post processor allocates the same number of
    buffers as the buf queue.
    As the init function is called in streamon(), if an allocation fails,
    streamon will return an error and streamoff() will not be called, keeping
    all post processor buffers allocated.
    
    To avoid that, all post proc buffers are freed in case of an allocation
    error.
    
    Fixes: 26711491a807 ("media: verisilicon: Refactor postprocessor to store more buffers")
    Signed-off-by: Detlev Casanova <[email protected]>
    Reviewed-by: Nicolas Dufresne <[email protected]>
    Signed-off-by: Nicolas Dufresne <[email protected]>
    Signed-off-by: Hans Verkuil <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mei: vsc: Cast tx_buf to (__be32 *) when passed to cpu_to_be32_array() [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Wed May 7 11:07:28 2025 +0200

    mei: vsc: Cast tx_buf to (__be32 *) when passed to cpu_to_be32_array()
    
    [ Upstream commit 97ce0fe2b7240d47d9124daa92217e478c21a3ba ]
    
    Commit f88c0c72ffb0 ("mei: vsc: Use struct vsc_tp_packet as vsc-tp tx_buf
    and rx_buf type") changed the type of tx_buf from "void *" to "struct
    vsc_tp_packet *" and added a cast to (u32 *) when passing it to
    cpu_to_be32_array() and the same change was made for rx_buf.
    
    This triggers the type-check warning in sparse:
    
    vsc-tp.c:327:28: sparse: expected restricted __be32 [usertype] *dst
    vsc-tp.c:327:28: sparse: got unsigned int [usertype] *
    
    vsc-tp.c:343:42: sparse: expected restricted __be32 const [usertype] *src
    vsc-tp.c:343:42: sparse: got unsigned int [usertype] *
    
    Fix this by casting to (__be32 *) instead.
    
    Note actually changing the type of the buffers to "be32 *" is not an option
    this buffer does actually contain a "struct vsc_tp_packet" and is used
    as such most of the time. vsc_tp_rom_xfer() re-uses the buffers as just
    dumb arrays of 32 bit words to talk to the device before the firmware has
    booted, to avoid needing to allocate a separate buffer.
    
    Fixes: f88c0c72ffb0 ("mei: vsc: Use struct vsc_tp_packet as vsc-tp tx_buf and rx_buf type")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Hans de Goede <[email protected]>
    Reviewed-by: Sakari Ailus <[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]>

 
mfd: exynos-lpass: Avoid calling exynos_lpass_disable() twice in exynos_lpass_remove() [+ + +]
Author: Christophe JAILLET <[email protected]>
Date:   Mon Apr 21 17:00:34 2025 +0200

    mfd: exynos-lpass: Avoid calling exynos_lpass_disable() twice in exynos_lpass_remove()
    
    [ Upstream commit b70b84556eeca5262d290e8619fe0af5b7664a52 ]
    
    exynos_lpass_disable() is called twice in the remove function. Remove
    one of these calls.
    
    Fixes: 90f447170c6f ("mfd: exynos-lpass: Add runtime PM support")
    Signed-off-by: Christophe JAILLET <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/74d69e8de10308c9855db6d54155a3de4b11abfd.1745247209.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mfd: exynos-lpass: Fix an error handling path in exynos_lpass_probe() [+ + +]
Author: Christophe JAILLET <[email protected]>
Date:   Mon Apr 21 17:00:33 2025 +0200

    mfd: exynos-lpass: Fix an error handling path in exynos_lpass_probe()
    
    [ Upstream commit 484f0f59f09edd1f6fa63703c12eb30d72a519ac ]
    
    If an error occurs after a successful regmap_init_mmio(), regmap_exit()
    should be called as already done in the .remove() function.
    
    Switch to devm_regmap_init_mmio() to avoid the leak and simplify the
    .remove() function.
    
    Fixes: c414df12bdf7 ("mfd: exynos-lpass: Add missing remove() function")
    Signed-off-by: Christophe JAILLET <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/38414eecb1096840946756ae86887aea2a489c1b.1745247209.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

mfd: stmpe-spi: Correct the name used in MODULE_DEVICE_TABLE [+ + +]
Author: Alexey Gladkov <[email protected]>
Date:   Sat Apr 26 18:16:32 2025 +0200

    mfd: stmpe-spi: Correct the name used in MODULE_DEVICE_TABLE
    
    [ Upstream commit 59d60c16ed41475f3b5f7b605e75fbf8e3628720 ]
    
    The name used in the macro does not exist.
    
    drivers/mfd/stmpe-spi.c:132:26: error: use of undeclared identifier 'stmpe_id'
      132 | MODULE_DEVICE_TABLE(spi, stmpe_id);
    
    Fixes: e789995d5c61 ("mfd: Add support for STMPE SPI interface")
    Signed-off-by: Alexey Gladkov <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/79d5a847303e45a46098f2d827d3d8a249a32be3.1745591072.git.legion@kernel.org
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
MIPS: Loongson64: Add missing '#interrupt-cells' for loongson64c_ls7a [+ + +]
Author: WangYuli <[email protected]>
Date:   Wed Apr 16 11:45:48 2025 +0800

    MIPS: Loongson64: Add missing '#interrupt-cells' for loongson64c_ls7a
    
    [ Upstream commit 6d223b8ffcd1593d032b71875def2daa71c53111 ]
    
    Similar to commit 98a9e2ac3755 ("MIPS: Loongson64: DTS: Fix msi node for ls7a").
    
    Fix follow warnings:
      arch/mips/boot/dts/loongson/loongson64c_4core_ls7a.dts:28.31-36.4: Warning (interrupt_provider): /bus@10000000/msi-controller@2ff00000: Missing '#interrupt-cells' in interrupt provider
      arch/mips/boot/dts/loongson/loongson64c_4core_ls7a.dtb: Warning (interrupt_map): Failed prerequisite 'interrupt_provider'
    
    Fixes: 24af105962c8 ("MIPS: Loongson64: DeviceTree for LS7A PCH")
    Tested-by: WangYuli <[email protected]>
    Signed-off-by: WangYuli <[email protected]>
    Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mmc: sdhci-of-dwcmshc: add PD workaround on RK3576 [+ + +]
Author: Nicolas Frattaroli <[email protected]>
Date:   Wed Apr 23 09:53:32 2025 +0200

    mmc: sdhci-of-dwcmshc: add PD workaround on RK3576
    
    [ Upstream commit 08f959759e1e6e9c4b898c51a7d387ac3480630b ]
    
    RK3576's power domains have a peculiar design where the PD_NVM power
    domain, of which the sdhci controller is a part, seemingly does not have
    idempotent runtime disable/enable. The end effect is that if PD_NVM gets
    turned off by the generic power domain logic because all the devices
    depending on it are suspended, then the next time the sdhci device is
    unsuspended, it'll hang the SoC as soon as it tries accessing the CQHCI
    registers.
    
    RK3576's UFS support needed a new dev_pm_genpd_rpm_always_on function
    added to the generic power domains API to handle what appears to be a
    similar hardware design.
    
    Use this new function to ask for the same treatment in the sdhci
    controller by giving rk3576 its own platform data with its own postinit
    function. The benefit of doing this instead of marking the power domains
    always on in the power domain core is that we only do this if we know
    the platform we're running on actually uses the sdhci controller. For
    others, keeping PD_NVM always on would be a waste, as they won't run
    into this specific issue. The only other IP in PD_NVM that could be
    affected is FSPI0. If it gets a mainline driver, it will probably want
    to do the same thing.
    
    Acked-by: Adrian Hunter <[email protected]>
    Signed-off-by: Nicolas Frattaroli <[email protected]>
    Reviewed-by: Shawn Lin <[email protected]>
    Fixes: cfee1b507758 ("pmdomain: rockchip: Add support for RK3576 SoC")
    Cc: <[email protected]> # v6.15+
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mtd: nand: ecc-mxic: Fix use of uninitialized variable ret [+ + +]
Author: Mikhail Arkhipov <[email protected]>
Date:   Wed Apr 9 00:39:06 2025 +0300

    mtd: nand: ecc-mxic: Fix use of uninitialized variable ret
    
    [ Upstream commit d95846350aac72303036a70c4cdc69ae314aa26d ]
    
    If ctx->steps is zero, the loop processing ECC steps is skipped,
    and the variable ret remains uninitialized. It is later checked
    and returned, which leads to undefined behavior and may cause
    unpredictable results in user space or kernel crashes.
    
    This scenario can be triggered in edge cases such as misconfigured
    geometry, ECC engine misuse, or if ctx->steps is not validated
    after initialization.
    
    Initialize ret to zero before the loop to ensure correct and safe
    behavior regardless of the ctx->steps value.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 48e6633a9fa2 ("mtd: nand: mxic-ecc: Add Macronix external ECC engine support")
    Signed-off-by: Mikhail Arkhipov <[email protected]>
    Signed-off-by: Miquel Raynal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mdiobus: Fix potential out-of-bounds clause 45 read/write access [+ + +]
Author: Jakub Raczynski <[email protected]>
Date:   Mon Jun 9 17:31:47 2025 +0200

    net/mdiobus: Fix potential out-of-bounds clause 45 read/write access
    
    [ Upstream commit 260388f79e94fb3026c419a208ece8358bb7b555 ]
    
    When using publicly available tools like 'mdio-tools' to read/write data
    from/to network interface and its PHY via C45 (clause 45) mdiobus,
    there is no verification of parameters passed to the ioctl and
    it accepts any mdio address.
    Currently there is support for 32 addresses in kernel via PHY_MAX_ADDR define,
    but it is possible to pass higher value than that via ioctl.
    While read/write operation should generally fail in this case,
    mdiobus provides stats array, where wrong address may allow out-of-bounds
    read/write.
    
    Fix that by adding address verification before C45 read/write operation.
    While this excludes this access from any statistics, it improves security of
    read/write operation.
    
    Fixes: 4e4aafcddbbf ("net: mdio: Add dedicated C45 API to MDIO bus drivers")
    Signed-off-by: Jakub Raczynski <[email protected]>
    Reported-by: Wenjing Shan <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mdiobus: Fix potential out-of-bounds read/write access [+ + +]
Author: Jakub Raczynski <[email protected]>
Date:   Mon Jun 9 17:31:46 2025 +0200

    net/mdiobus: Fix potential out-of-bounds read/write access
    
    [ Upstream commit 0e629694126ca388916f059453a1c36adde219c4 ]
    
    When using publicly available tools like 'mdio-tools' to read/write data
    from/to network interface and its PHY via mdiobus, there is no verification of
    parameters passed to the ioctl and it accepts any mdio address.
    Currently there is support for 32 addresses in kernel via PHY_MAX_ADDR define,
    but it is possible to pass higher value than that via ioctl.
    While read/write operation should generally fail in this case,
    mdiobus provides stats array, where wrong address may allow out-of-bounds
    read/write.
    
    Fix that by adding address verification before read/write operation.
    While this excludes this access from any statistics, it improves security of
    read/write operation.
    
    Fixes: 080bb352fad00 ("net: phy: Maintain MDIO device and bus statistics")
    Signed-off-by: Jakub Raczynski <[email protected]>
    Reported-by: Wenjing Shan <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx4_en: Prevent potential integer overflow calculating Hz [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Wed May 28 11:11:09 2025 +0300

    net/mlx4_en: Prevent potential integer overflow calculating Hz
    
    [ Upstream commit 54d34165b4f786d7fea8412a18fb4a54c1eab623 ]
    
    The "freq" variable is in terms of MHz and "max_val_cycles" is in terms
    of Hz.  The fact that "max_val_cycles" is a u64 suggests that support
    for high frequency is intended but the "freq_khz * 1000" would overflow
    the u32 type if we went above 4GHz.  Use unsigned long long type for the
    mutliplication to prevent that.
    
    Fixes: 31c128b66e5b ("net/mlx4_en: Choose time-stamping shift value according to HW frequency")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5: Avoid using xso.real_dev unnecessarily [+ + +]
Author: Cosmin Ratiu <[email protected]>
Date:   Fri Apr 11 10:49:53 2025 +0300

    net/mlx5: Avoid using xso.real_dev unnecessarily
    
    [ Upstream commit d79444e8c3d40b11f5e155e5591d53bd1e512e1f ]
    
    xso.real_dev is the active device of an offloaded xfrm state and is
    managed by bonding. As such, it's subject to change when states are
    migrated to a new device. Using it in places other than
    offloading/unoffloading the states is risky.
    
    This commit saves the device into the driver-specific struct
    mlx5e_ipsec_sa_entry and switches mlx5e_ipsec_init_macs() and
    mlx5e_ipsec_netevent_event() to make use of it.
    
    Additionally, mlx5e_xfrm_update_stats() used xso.real_dev to validate
    that correct net locks are held. But in a bonding config, the net of the
    master device is the same as the underlying devices, and the net is
    already a local var, so use that instead.
    
    The only remaining references to xso.real_dev are now in the
    .xdo_dev_state_add() / .xdo_dev_state_delete() path.
    
    Signed-off-by: Cosmin Ratiu <[email protected]>
    Reviewed-by: Leon Romanovsky <[email protected]>
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Ensure fw pages are always allocated on same NUMA [+ + +]
Author: Moshe Shemesh <[email protected]>
Date:   Tue Jun 10 18:15:06 2025 +0300

    net/mlx5: Ensure fw pages are always allocated on same NUMA
    
    [ Upstream commit f37258133c1e95e61db532e14067e28b4881bf24 ]
    
    When firmware asks the driver to allocate more pages, using event of
    give_pages, the driver should always allocate it from same NUMA, the
    original device NUMA. Current code uses dev_to_node() which can result
    in different NUMA as it is changed by other driver flows, such as
    mlx5_dma_zalloc_coherent_node(). Instead, use saved numa node for
    allocating firmware pages.
    
    Fixes: 311c7c71c9bb ("net/mlx5e: Allocate DMA coherent memory on reader NUMA node")
    Signed-off-by: Moshe Shemesh <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Signed-off-by: Mark Bloch <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Fix ECVF vports unload on shutdown flow [+ + +]
Author: Amir Tzin <[email protected]>
Date:   Tue Jun 10 18:15:07 2025 +0300

    net/mlx5: Fix ECVF vports unload on shutdown flow
    
    [ Upstream commit 687560d8a9a2d654829ad0da1ec24242f1de711d ]
    
    Fix shutdown flow UAF when a virtual function is created on the embedded
    chip (ECVF) of a BlueField device. In such case the vport acl ingress
    table is not properly destroyed.
    
    ECVF functionality is independent of ecpf_vport_exists capability and
    thus functions mlx5_eswitch_(enable|disable)_pf_vf_vports() should not
    test it when enabling/disabling ECVF vports.
    
    kernel log:
    [] refcount_t: underflow; use-after-free.
    [] WARNING: CPU: 3 PID: 1 at lib/refcount.c:28
       refcount_warn_saturate+0x124/0x220
    ----------------
    [] Call trace:
    [] refcount_warn_saturate+0x124/0x220
    [] tree_put_node+0x164/0x1e0 [mlx5_core]
    [] mlx5_destroy_flow_table+0x98/0x2c0 [mlx5_core]
    [] esw_acl_ingress_table_destroy+0x28/0x40 [mlx5_core]
    [] esw_acl_ingress_lgcy_cleanup+0x80/0xf4 [mlx5_core]
    [] esw_legacy_vport_acl_cleanup+0x44/0x60 [mlx5_core]
    [] esw_vport_cleanup+0x64/0x90 [mlx5_core]
    [] mlx5_esw_vport_disable+0xc0/0x1d0 [mlx5_core]
    [] mlx5_eswitch_unload_ec_vf_vports+0xcc/0x150 [mlx5_core]
    [] mlx5_eswitch_disable_sriov+0x198/0x2a0 [mlx5_core]
    [] mlx5_device_disable_sriov+0xb8/0x1e0 [mlx5_core]
    [] mlx5_sriov_detach+0x40/0x50 [mlx5_core]
    [] mlx5_unload+0x40/0xc4 [mlx5_core]
    [] mlx5_unload_one_devl_locked+0x6c/0xe4 [mlx5_core]
    [] mlx5_unload_one+0x3c/0x60 [mlx5_core]
    [] shutdown+0x7c/0xa4 [mlx5_core]
    [] pci_device_shutdown+0x3c/0xa0
    [] device_shutdown+0x170/0x340
    [] __do_sys_reboot+0x1f4/0x2a0
    [] __arm64_sys_reboot+0x2c/0x40
    [] invoke_syscall+0x78/0x100
    [] el0_svc_common.constprop.0+0x54/0x184
    [] do_el0_svc+0x30/0xac
    [] el0_svc+0x48/0x160
    [] el0t_64_sync_handler+0xa4/0x12c
    [] el0t_64_sync+0x1a4/0x1a8
    [] --[ end trace 9c4601d68c70030e ]---
    
    Fixes: a7719b29a821 ("net/mlx5: Add management of EC VF vports")
    Reviewed-by: Daniel Jurgens <[email protected]>
    Reviewed-by: Moshe Shemesh <[email protected]>
    Signed-off-by: Amir Tzin <[email protected]>
    Signed-off-by: Mark Bloch <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: Fix return value when searching for existing flow group [+ + +]
Author: Patrisious Haddad <[email protected]>
Date:   Tue Jun 10 18:15:08 2025 +0300

    net/mlx5: Fix return value when searching for existing flow group
    
    [ Upstream commit 8ec40e3f1f72bf8f8accf18020d487caa99f46a4 ]
    
    When attempting to add a rule to an existing flow group, if a matching
    flow group exists but is not active, the error code returned should be
    EAGAIN, so that the rule can be added to the matching flow group once
    it is active, rather than ENOENT, which indicates that no matching
    flow group was found.
    
    Fixes: bd71b08ec2ee ("net/mlx5: Support multiple updates of steering rules in parallel")
    Signed-off-by: Gavi Teitz <[email protected]>
    Signed-off-by: Roi Dayan <[email protected]>
    Signed-off-by: Patrisious Haddad <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Signed-off-by: Mark Bloch <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net/mlx5: HWS, fix missing ip_version handling in definer [+ + +]
Author: Yevgeny Kliteynik <[email protected]>
Date:   Tue Jun 10 18:15:10 2025 +0300

    net/mlx5: HWS, fix missing ip_version handling in definer
    
    [ Upstream commit b5e3c76f35ee7e814c2469c73406c5bbf110d89c ]
    
    Fix missing field handling in definer - outer IP version.
    
    Fixes: 74a778b4a63f ("net/mlx5: HWS, added definers handling")
    Signed-off-by: Yevgeny Kliteynik <[email protected]>
    Signed-off-by: Mark Bloch <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/mlx5e: Fix leak of Geneve TLV option object [+ + +]
Author: Jianbo Liu <[email protected]>
Date:   Tue Jun 10 18:15:13 2025 +0300

    net/mlx5e: Fix leak of Geneve TLV option object
    
    [ Upstream commit aa9c44b842096c553871bc68a8cebc7861fa192b ]
    
    Previously, a unique tunnel id was added for the matching on TC
    non-zero chains, to support inner header rewrite with goto action.
    Later, it was used to support VF tunnel offload for vxlan, then for
    Geneve and GRE. To support VF tunnel, a temporary mlx5_flow_spec is
    used to parse tunnel options. For Geneve, if there is TLV option, a
    object is created, or refcnt is added if already exists. But the
    temporary mlx5_flow_spec is directly freed after parsing, which causes
    the leak because no information regarding the object is saved in
    flow's mlx5_flow_spec, which is used to free the object when deleting
    the flow.
    
    To fix the leak, call mlx5_geneve_tlv_option_del() before free the
    temporary spec if it has TLV object.
    
    Fixes: 521933cdc4aa ("net/mlx5e: Support Geneve and GRE with VF tunnel offload")
    Signed-off-by: Jianbo Liu <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Reviewed-by: Alex Lazar <[email protected]>
    Signed-off-by: Mark Bloch <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: drv: netdevsim: don't napi_complete() from netpoll [+ + +]
Author: Jakub Kicinski <[email protected]>
Date:   Wed Jun 11 10:46:43 2025 -0700

    net: drv: netdevsim: don't napi_complete() from netpoll
    
    [ Upstream commit 1264971017b4d7141352a7fe29021bdfce5d885d ]
    
    netdevsim supports netpoll. Make sure we don't call napi_complete()
    from it, since it may not be scheduled. Breno reports hitting a
    warning in napi_complete_done():
    
    WARNING: CPU: 14 PID: 104 at net/core/dev.c:6592 napi_complete_done+0x2cc/0x560
      __napi_poll+0x2d8/0x3a0
      handle_softirqs+0x1fe/0x710
    
    This is presumably after netpoll stole the SCHED bit prematurely.
    
    Reported-by: Breno Leitao <[email protected]>
    Fixes: 3762ec05a9fb ("netdevsim: add NAPI support")
    Tested-by: Breno Leitao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: b53: allow RGMII for bcm63xx RGMII ports [+ + +]
Author: Jonas Gorski <[email protected]>
Date:   Mon Jun 2 21:39:52 2025 +0200

    net: dsa: b53: allow RGMII for bcm63xx RGMII ports
    
    [ Upstream commit 5ea0d42c1980e6d10e5cb56a78021db5bfcebaaf ]
    
    Add RGMII to supported interfaces for BCM63xx RGMII ports so they can be
    actually used in RGMII mode.
    
    Without this, phylink will fail to configure them:
    
    [    3.580000] b53-switch 10700000.switch GbE3 (uninitialized): validation of rgmii with support 0000000,00000000,00000000,000062ff and advertisement 0000000,00000000,00000000,000062ff failed: -EINVAL
    [    3.600000] b53-switch 10700000.switch GbE3 (uninitialized): failed to connect to PHY: -EINVAL
    [    3.610000] b53-switch 10700000.switch GbE3 (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 4
    
    Fixes: ce3bf94871f7 ("net: dsa: b53: add support for BCM63xx RGMIIs")
    Reviewed-by: Florian Fainelli <[email protected]>
    Signed-off-by: Jonas Gorski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: b53: do not enable RGMII delay on bcm63xx [+ + +]
Author: Jonas Gorski <[email protected]>
Date:   Mon Jun 2 21:39:50 2025 +0200

    net: dsa: b53: do not enable RGMII delay on bcm63xx
    
    [ Upstream commit 4af523551d876ab8b8057d1e5303a860fd736fcb ]
    
    bcm63xx's RGMII ports are always in MAC mode, never in PHY mode, so we
    shouldn't enable any delays and let the PHY handle any delays as
    necessary.
    
    This fixes using RGMII ports with normal PHYs like BCM54612E, which will
    handle the delay in the PHY.
    
    Fixes: ce3bf94871f7 ("net: dsa: b53: add support for BCM63xx RGMIIs")
    Signed-off-by: Jonas Gorski <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: b53: do not touch DLL_IQQD on bcm53115 [+ + +]
Author: Jonas Gorski <[email protected]>
Date:   Mon Jun 2 21:39:53 2025 +0200

    net: dsa: b53: do not touch DLL_IQQD on bcm53115
    
    [ Upstream commit bc1a65eb81a21e2aa3c3dca058ee8adf687b6ef5 ]
    
    According to OpenMDK, bit 2 of the RGMII register has a different
    meaning for BCM53115 [1]:
    
    "DLL_IQQD         1: In the IDDQ mode, power is down0: Normal function
                      mode"
    
    Configuring RGMII delay works without setting this bit, so let's keep it
    at the default. For other chips, we always set it, so not clearing it
    is not an issue.
    
    One would assume BCM53118 works the same, but OpenMDK is not quite sure
    what this bit actually means [2]:
    
    "BYPASS_IMP_2NS_DEL #1: In the IDDQ mode, power is down#0: Normal
                        function mode1: Bypass dll65_2ns_del IP0: Use
                        dll65_2ns_del IP"
    
    So lets keep setting it for now.
    
    [1] https://github.com/Broadcom-Network-Switching-Software/OpenMDK/blob/master/cdk/PKG/chip/bcm53115/bcm53115_a0_defs.h#L19871
    [2] https://github.com/Broadcom-Network-Switching-Software/OpenMDK/blob/master/cdk/PKG/chip/bcm53118/bcm53118_a0_defs.h#L14392
    
    Fixes: 967dd82ffc52 ("net: dsa: b53: Add support for Broadcom RoboSwitch")
    Signed-off-by: Jonas Gorski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: b53: fix untagged traffic sent via cpu tagged with VID 0 [+ + +]
Author: Jonas Gorski <[email protected]>
Date:   Mon Jun 2 21:49:14 2025 +0200

    net: dsa: b53: fix untagged traffic sent via cpu tagged with VID 0
    
    [ Upstream commit 692eb9f8a5b71d852e873375d20cf5da7a046ea6 ]
    
    When Linux sends out untagged traffic from a port, it will enter the CPU
    port without any VLAN tag, even if the port is a member of a vlan
    filtering bridge with a PVID egress untagged VLAN.
    
    This makes the CPU port's PVID take effect, and the PVID's VLAN
    table entry controls if the packet will be tagged on egress.
    
    Since commit 45e9d59d3950 ("net: dsa: b53: do not allow to configure
    VLAN 0") we remove bridged ports from VLAN 0 when joining or leaving a
    VLAN aware bridge. But we also clear the untagged bit, causing untagged
    traffic from the controller to become tagged with VID 0 (and priority
    0).
    
    Fix this by not touching the untagged map of VLAN 0. Additionally,
    always keep the CPU port as a member, as the untag map is only effective
    as long as there is at least one member, and we would remove it when
    bridging all ports and leaving no standalone ports.
    
    Since Linux (and the switch) treats VLAN 0 tagged traffic like untagged,
    the actual impact of this is rather low, but this also prevented earlier
    detection of the issue.
    
    Fixes: 45e9d59d3950 ("net: dsa: b53: do not allow to configure VLAN 0")
    Signed-off-by: Jonas Gorski <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Reviewed-by: Vladimir Oltean <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: dsa: tag_brcm: legacy: fix pskb_may_pull length [+ + +]
Author: Álvaro Fernández Rojas <[email protected]>
Date:   Thu May 29 14:44:06 2025 +0200

    net: dsa: tag_brcm: legacy: fix pskb_may_pull length
    
    [ Upstream commit efdddc4484859082da6c7877ed144c8121c8ea55 ]
    
    BRCM_LEG_PORT_ID was incorrectly used for pskb_may_pull length.
    The correct check is BRCM_LEG_TAG_LEN + VLAN_HLEN, or 10 bytes.
    
    Fixes: 964dbf186eaa ("net: dsa: tag_brcm: add support for legacy tags")
    Signed-off-by: Álvaro Fernández Rojas <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: Fix TOCTOU issue in sk_is_readable() [+ + +]
Author: Michal Luczaj <[email protected]>
Date:   Mon Jun 9 19:08:03 2025 +0200

    net: Fix TOCTOU issue in sk_is_readable()
    
    [ Upstream commit 2660a544fdc0940bba15f70508a46cf9a6491230 ]
    
    sk->sk_prot->sock_is_readable is a valid function pointer when sk resides
    in a sockmap. After the last sk_psock_put() (which usually happens when
    socket is removed from sockmap), sk->sk_prot gets restored and
    sk->sk_prot->sock_is_readable becomes NULL.
    
    This makes sk_is_readable() racy, if the value of sk->sk_prot is reloaded
    after the initial check. Which in turn may lead to a null pointer
    dereference.
    
    Ensure the function pointer does not turn NULL after the check.
    
    Fixes: 8934ce2fd081 ("bpf: sockmap redirect ingress support")
    Suggested-by: Jakub Sitnicki <[email protected]>
    Signed-off-by: Michal Luczaj <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: fix udp gso skb_segment after pull from frag_list [+ + +]
Author: Shiming Cheng <[email protected]>
Date:   Fri May 30 09:26:08 2025 +0800

    net: fix udp gso skb_segment after pull from frag_list
    
    [ Upstream commit 3382a1ed7f778db841063f5d7e317ac55f9e7f72 ]
    
    Commit a1e40ac5b5e9 ("net: gso: fix udp gso fraglist segmentation after
    pull from frag_list") detected invalid geometry in frag_list skbs and
    redirects them from skb_segment_list to more robust skb_segment. But some
    packets with modified geometry can also hit bugs in that code. We don't
    know how many such cases exist. Addressing each one by one also requires
    touching the complex skb_segment code, which risks introducing bugs for
    other types of skbs. Instead, linearize all these packets that fail the
    basic invariants on gso fraglist skbs. That is more robust.
    
    If only part of the fraglist payload is pulled into head_skb, it will
    always cause exception when splitting skbs by skb_segment. For detailed
    call stack information, see below.
    
    Valid SKB_GSO_FRAGLIST skbs
    - consist of two or more segments
    - the head_skb holds the protocol headers plus first gso_size
    - one or more frag_list skbs hold exactly one segment
    - all but the last must be gso_size
    
    Optional datapath hooks such as NAT and BPF (bpf_skb_pull_data) can
    modify fraglist skbs, breaking these invariants.
    
    In extreme cases they pull one part of data into skb linear. For UDP,
    this  causes three payloads with lengths of (11,11,10) bytes were
    pulled tail to become (12,10,10) bytes.
    
    The skbs no longer meets the above SKB_GSO_FRAGLIST conditions because
    payload was pulled into head_skb, it needs to be linearized before pass
    to regular skb_segment.
    
        skb_segment+0xcd0/0xd14
        __udp_gso_segment+0x334/0x5f4
        udp4_ufo_fragment+0x118/0x15c
        inet_gso_segment+0x164/0x338
        skb_mac_gso_segment+0xc4/0x13c
        __skb_gso_segment+0xc4/0x124
        validate_xmit_skb+0x9c/0x2c0
        validate_xmit_skb_list+0x4c/0x80
        sch_direct_xmit+0x70/0x404
        __dev_queue_xmit+0x64c/0xe5c
        neigh_resolve_output+0x178/0x1c4
        ip_finish_output2+0x37c/0x47c
        __ip_finish_output+0x194/0x240
        ip_finish_output+0x20/0xf4
        ip_output+0x100/0x1a0
        NF_HOOK+0xc4/0x16c
        ip_forward+0x314/0x32c
        ip_rcv+0x90/0x118
        __netif_receive_skb+0x74/0x124
        process_backlog+0xe8/0x1a4
        __napi_poll+0x5c/0x1f8
        net_rx_action+0x154/0x314
        handle_softirqs+0x154/0x4b8
    
        [118.376811] [C201134] rxq0_pus: [name:bug&]kernel BUG at net/core/skbuff.c:4278!
        [118.376829] [C201134] rxq0_pus: [name:traps&]Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP
        [118.470774] [C201134] rxq0_pus: [name:mrdump&]Kernel Offset: 0x178cc00000 from 0xffffffc008000000
        [118.470810] [C201134] rxq0_pus: [name:mrdump&]PHYS_OFFSET: 0x40000000
        [118.470827] [C201134] rxq0_pus: [name:mrdump&]pstate: 60400005 (nZCv daif +PAN -UAO)
        [118.470848] [C201134] rxq0_pus: [name:mrdump&]pc : [0xffffffd79598aefc] skb_segment+0xcd0/0xd14
        [118.470900] [C201134] rxq0_pus: [name:mrdump&]lr : [0xffffffd79598a5e8] skb_segment+0x3bc/0xd14
        [118.470928] [C201134] rxq0_pus: [name:mrdump&]sp : ffffffc008013770
    
    Fixes: a1e40ac5b5e9 ("gso: fix udp gso fraglist segmentation after pull from frag_list")
    Signed-off-by: Shiming Cheng <[email protected]>
    Reviewed-by: Willem de Bruijn <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: lan743x: Fix PHY reset handling during initialization and WOL [+ + +]
Author: Thangaraj Samynathan <[email protected]>
Date:   Mon May 26 11:00:48 2025 +0530

    net: lan743x: Fix PHY reset handling during initialization and WOL
    
    [ Upstream commit 82d1096ca8b5dbb3158d707e6fb3ad21c3403a49 ]
    
    Remove lan743x_phy_init from lan743x_hardware_init as it resets the PHY
    registers, causing WOL to fail on subsequent attempts. Add a call to
    lan743x_hw_reset_phy in the probe function to ensure the PHY is reset
    during device initialization.
    
    Fixes: 23f0703c125be ("lan743x: Add main source files for new lan743x driver")
    Signed-off-by: Thangaraj Samynathan <[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: lan743x: rename lan743x_reset_phy to lan743x_hw_reset_phy [+ + +]
Author: Thangaraj Samynathan <[email protected]>
Date:   Mon May 26 11:00:47 2025 +0530

    net: lan743x: rename lan743x_reset_phy to lan743x_hw_reset_phy
    
    [ Upstream commit 68927eb52d0af04863584930db06075d2610e194 ]
    
    rename the function to lan743x_hw_reset_phy to better describe it
    operation.
    
    Fixes: 23f0703c125be ("lan743x: Add main source files for new lan743x driver")
    Signed-off-by: Thangaraj Samynathan <[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: lan966x: Fix 1-step timestamping over ipv4 or ipv6 [+ + +]
Author: Horatiu Vultur <[email protected]>
Date:   Wed May 21 14:41:59 2025 +0200

    net: lan966x: Fix 1-step timestamping over ipv4 or ipv6
    
    [ Upstream commit 57ee9584fd8606deef66d7b65fa4dcf94f6843aa ]
    
    When enabling 1-step timestamping for ptp frames that are over udpv4 or
    udpv6 then the inserted timestamp is added at the wrong offset in the
    frame, meaning that will modify the frame at the wrong place, so the
    frame will be malformed.
    To fix this, the HW needs to know which kind of frame it is to know
    where to insert the timestamp. For that there is a field in the IFH that
    says the PDU_TYPE, which can be NONE  which is the default value,
    IPV4 or IPV6. Therefore make sure to set the PDU_TYPE so the HW knows
    where to insert the timestamp.
    Like I mention before the issue is not seen with L2 frames because by
    default the PDU_TYPE has a value of 0, which represents the L2 frames.
    
    Fixes: 77eecf25bd9d2f ("net: lan966x: Update extraction/injection for timestamping")
    Signed-off-by: Horatiu Vultur <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: lan966x: Make sure to insert the vlan tags also in host mode [+ + +]
Author: Horatiu Vultur <[email protected]>
Date:   Wed May 28 11:36:19 2025 +0200

    net: lan966x: Make sure to insert the vlan tags also in host mode
    
    [ Upstream commit 27eab4c644236a9324084a70fe79e511cbd07393 ]
    
    When running these commands on DUT (and similar at the other end)
    ip link set dev eth0 up
    ip link add link eth0 name eth0.10 type vlan id 10
    ip addr add 10.0.0.1/24 dev eth0.10
    ip link set dev eth0.10 up
    ping 10.0.0.2
    
    The ping will fail.
    
    The reason why is failing is because, the network interfaces for lan966x
    have a flag saying that the HW can insert the vlan tags into the
    frames(NETIF_F_HW_VLAN_CTAG_TX). Meaning that the frames that are
    transmitted don't have the vlan tag inside the skb data, but they have
    it inside the skb. We already get that vlan tag and put it in the IFH
    but the problem is that we don't configure the HW to rewrite the frame
    when the interface is in host mode.
    The fix consists in actually configuring the HW to insert the vlan tag
    if it is different than 0.
    
    Reviewed-by: Maxime Chevallier <[email protected]>
    Fixes: 6d2c186afa5d ("net: lan966x: Add vlan support.")
    Signed-off-by: Horatiu Vultur <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ncsi: Fix GCPS 64-bit member variables [+ + +]
Author: Hari Kalavakunta <[email protected]>
Date:   Wed Apr 9 18:23:08 2025 -0700

    net: ncsi: Fix GCPS 64-bit member variables
    
    [ Upstream commit e8a1bd8344054ce27bebf59f48e3f6bc10bc419b ]
    
    Correct Get Controller Packet Statistics (GCPS) 64-bit wide member
    variables, as per DSP0222 v1.0.0 and forward specs. The Driver currently
    collects these stats, but they are yet to be exposed to the user.
    Therefore, no user impact.
    
    Statistics fixes:
    Total Bytes Received (byte range 28..35)
    Total Bytes Transmitted (byte range 36..43)
    Total Unicast Packets Received (byte range 44..51)
    Total Multicast Packets Received (byte range 52..59)
    Total Broadcast Packets Received (byte range 60..67)
    Total Unicast Packets Transmitted (byte range 68..75)
    Total Multicast Packets Transmitted (byte range 76..83)
    Total Broadcast Packets Transmitted (byte range 84..91)
    Valid Bytes Received (byte range 204..11)
    
    Signed-off-by: Hari Kalavakunta <[email protected]>
    Reviewed-by: Paul Fertser <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: openvswitch: Fix the dead loop of MPLS parse [+ + +]
Author: Faicker Mo <[email protected]>
Date:   Fri May 23 03:41:43 2025 +0000

    net: openvswitch: Fix the dead loop of MPLS parse
    
    [ Upstream commit 0bdc924bfb319fb10d1113cbf091fc26fb7b1f99 ]
    
    The unexpected MPLS packet may not end with the bottom label stack.
    When there are many stacks, The label count value has wrapped around.
    A dead loop occurs, soft lockup/CPU stuck finally.
    
    stack backtrace:
    UBSAN: array-index-out-of-bounds in /build/linux-0Pa0xK/linux-5.15.0/net/openvswitch/flow.c:662:26
    index -1 is out of range for type '__be32 [3]'
    CPU: 34 PID: 0 Comm: swapper/34 Kdump: loaded Tainted: G           OE   5.15.0-121-generic #131-Ubuntu
    Hardware name: Dell Inc. PowerEdge C6420/0JP9TF, BIOS 2.12.2 07/14/2021
    Call Trace:
     <IRQ>
     show_stack+0x52/0x5c
     dump_stack_lvl+0x4a/0x63
     dump_stack+0x10/0x16
     ubsan_epilogue+0x9/0x36
     __ubsan_handle_out_of_bounds.cold+0x44/0x49
     key_extract_l3l4+0x82a/0x840 [openvswitch]
     ? kfree_skbmem+0x52/0xa0
     key_extract+0x9c/0x2b0 [openvswitch]
     ovs_flow_key_extract+0x124/0x350 [openvswitch]
     ovs_vport_receive+0x61/0xd0 [openvswitch]
     ? kernel_init_free_pages.part.0+0x4a/0x70
     ? get_page_from_freelist+0x353/0x540
     netdev_port_receive+0xc4/0x180 [openvswitch]
     ? netdev_port_receive+0x180/0x180 [openvswitch]
     netdev_frame_hook+0x1f/0x40 [openvswitch]
     __netif_receive_skb_core.constprop.0+0x23a/0xf00
     __netif_receive_skb_list_core+0xfa/0x240
     netif_receive_skb_list_internal+0x18e/0x2a0
     napi_complete_done+0x7a/0x1c0
     bnxt_poll+0x155/0x1c0 [bnxt_en]
     __napi_poll+0x30/0x180
     net_rx_action+0x126/0x280
     ? bnxt_msix+0x67/0x80 [bnxt_en]
     handle_softirqs+0xda/0x2d0
     irq_exit_rcu+0x96/0xc0
     common_interrupt+0x8e/0xa0
     </IRQ>
    
    Fixes: fbdcdd78da7c ("Change in Openvswitch to support MPLS label depth of 3 in ingress direction")
    Signed-off-by: Faicker Mo <[email protected]>
    Acked-by: Ilya Maximets <[email protected]>
    Reviewed-by: Aaron Conole <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: clear phydev->devlink when the link is deleted [+ + +]
Author: Wei Fang <[email protected]>
Date:   Fri May 23 16:37:59 2025 +0800

    net: phy: clear phydev->devlink when the link is deleted
    
    [ Upstream commit 0795b05a59b1371b18ffbf09d385296b12e9f5d5 ]
    
    There is a potential crash issue when disabling and re-enabling the
    network port. When disabling the network port, phy_detach() calls
    device_link_del() to remove the device link, but it does not clear
    phydev->devlink, so phydev->devlink is not a NULL pointer. Then the
    network port is re-enabled, but if phy_attach_direct() fails before
    calling device_link_add(), the code jumps to the "error" label and
    calls phy_detach(). Since phydev->devlink retains the old value from
    the previous attach/detach cycle, device_link_del() uses the old value,
    which accesses a NULL pointer and causes a crash. The simplified crash
    log is as follows.
    
    [   24.702421] Call trace:
    [   24.704856]  device_link_put_kref+0x20/0x120
    [   24.709124]  device_link_del+0x30/0x48
    [   24.712864]  phy_detach+0x24/0x168
    [   24.716261]  phy_attach_direct+0x168/0x3a4
    [   24.720352]  phylink_fwnode_phy_connect+0xc8/0x14c
    [   24.725140]  phylink_of_phy_connect+0x1c/0x34
    
    Therefore, phydev->devlink needs to be cleared when the device link is
    deleted.
    
    Fixes: bc66fa87d4fd ("net: phy: Add link between phy dev and mac dev")
    Signed-off-by: Wei Fang <[email protected]>
    Reviewed-by: Andrew Lunn <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: fix up const issues in to_mdio_device() and to_phy_device() [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu May 22 13:21:47 2025 +0200

    net: phy: fix up const issues in to_mdio_device() and to_phy_device()
    
    [ Upstream commit e9cb929670a1e98b592b30f03f06e9e20110f318 ]
    
    Both to_mdio_device() and to_phy_device() "throw away" the const pointer
    attribute passed to them and return a non-const pointer, which generally
    is not a good thing overall.  Fix this up by using container_of_const()
    which was designed for this very problem.
    
    Cc: Alexander Lobakin <[email protected]>
    Cc: Andrew Lunn <[email protected]>
    Cc: Heiner Kallweit <[email protected]>
    Cc: Russell King <[email protected]>
    Fixes: 7eab14de73a8 ("mdio, phy: fix -Wshadow warnings triggered by nested container_of()")
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Link: https://patch.msgid.link/2025052246-conduit-glory-8fc9@gregkh
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: mscc: Fix memory leak when using one step timestamping [+ + +]
Author: Horatiu Vultur <[email protected]>
Date:   Thu May 22 13:57:22 2025 +0200

    net: phy: mscc: Fix memory leak when using one step timestamping
    
    [ Upstream commit 846992645b25ec4253167e3f931e4597eb84af56 ]
    
    Fix memory leak when running one-step timestamping. When running
    one-step sync timestamping, the HW is configured to insert the TX time
    into the frame, so there is no reason to keep the skb anymore. As in
    this case the HW will never generate an interrupt to say that the frame
    was timestamped, then the frame will never released.
    Fix this by freeing the frame in case of one-step timestamping.
    
    Fixes: 7d272e63e0979d ("net: phy: mscc: timestamping and PHC support")
    Signed-off-by: Horatiu Vultur <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: phy: mscc: Stop clearing the the UDPv4 checksum for L2 frames [+ + +]
Author: Horatiu Vultur <[email protected]>
Date:   Fri May 23 10:27:16 2025 +0200

    net: phy: mscc: Stop clearing the the UDPv4 checksum for L2 frames
    
    [ Upstream commit 57a92d14659df3e7e7e0052358c8cc68bbbc3b5e ]
    
    We have noticed that when PHY timestamping is enabled, L2 frames seems
    to be modified by changing two 2 bytes with a value of 0. The place were
    these 2 bytes seems to be random(or I couldn't find a pattern).  In most
    of the cases the userspace can ignore these frames but if for example
    those 2 bytes are in the correction field there is nothing to do.  This
    seems to happen when configuring the HW for IPv4 even that the flow is
    not enabled.
    These 2 bytes correspond to the UDPv4 checksum and once we don't enable
    clearing the checksum when using L2 frames then the frame doesn't seem
    to be changed anymore.
    
    Fixes: 7d272e63e0979d ("net: phy: mscc: timestamping and PHC support")
    Signed-off-by: Horatiu Vultur <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: make sure that ptp_rate is not 0 before configuring EST [+ + +]
Author: Alexis Lothoré <[email protected]>
Date:   Thu May 29 11:07:24 2025 +0200

    net: stmmac: make sure that ptp_rate is not 0 before configuring EST
    
    [ Upstream commit cbefe2ffa7784525ec5d008ba87c7add19ec631a ]
    
    If the ptp_rate recorded earlier in the driver happens to be 0, this
    bogus value will propagate up to EST configuration, where it will
    trigger a division by 0.
    
    Prevent this division by 0 by adding the corresponding check and error
    code.
    
    Suggested-by: Maxime Chevallier <[email protected]>
    Signed-off-by: Alexis Lothoré <[email protected]>
    Fixes: 8572aec3d0dc ("net: stmmac: Add basic EST support for XGMAC")
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: make sure that ptp_rate is not 0 before configuring timestamping [+ + +]
Author: Alexis Lothoré <[email protected]>
Date:   Thu May 29 11:07:23 2025 +0200

    net: stmmac: make sure that ptp_rate is not 0 before configuring timestamping
    
    [ Upstream commit 030ce919e114a111e83b7976ecb3597cefd33f26 ]
    
    The stmmac platform drivers that do not open-code the clk_ptp_rate value
    after having retrieved the default one from the device-tree can end up
    with 0 in clk_ptp_rate (as clk_get_rate can return 0). It will
    eventually propagate up to PTP initialization when bringing up the
    interface, leading to a divide by 0:
    
     Division by zero in kernel.
     CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.30-00001-g48313bd5768a #22
     Hardware name: STM32 (Device Tree Support)
     Call trace:
      unwind_backtrace from show_stack+0x18/0x1c
      show_stack from dump_stack_lvl+0x6c/0x8c
      dump_stack_lvl from Ldiv0_64+0x8/0x18
      Ldiv0_64 from stmmac_init_tstamp_counter+0x190/0x1a4
      stmmac_init_tstamp_counter from stmmac_hw_setup+0xc1c/0x111c
      stmmac_hw_setup from __stmmac_open+0x18c/0x434
      __stmmac_open from stmmac_open+0x3c/0xbc
      stmmac_open from __dev_open+0xf4/0x1ac
      __dev_open from __dev_change_flags+0x1cc/0x224
      __dev_change_flags from dev_change_flags+0x24/0x60
      dev_change_flags from ip_auto_config+0x2e8/0x11a0
      ip_auto_config from do_one_initcall+0x84/0x33c
      do_one_initcall from kernel_init_freeable+0x1b8/0x214
      kernel_init_freeable from kernel_init+0x24/0x140
      kernel_init from ret_from_fork+0x14/0x28
     Exception stack(0xe0815fb0 to 0xe0815ff8)
    
    Prevent this division by 0 by adding an explicit check and error log
    about the actual issue. While at it, remove the same check from
    stmmac_ptp_register, which then becomes duplicate
    
    Fixes: 19d857c9038e ("stmmac: Fix calculations for ptp counters when clock input = 50Mhz.")
    Signed-off-by: Alexis Lothoré <[email protected]>
    Reviewed-by: Yanteng Si <[email protected]>
    Reviewed-by: Maxime Chevallier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: stmmac: platform: guarantee uniqueness of bus_id [+ + +]
Author: Quentin Schulz <[email protected]>
Date:   Tue May 27 13:56:23 2025 +0200

    net: stmmac: platform: guarantee uniqueness of bus_id
    
    [ Upstream commit eb7fd7aa35bfcc1e1fda4ecc42ccfcb526cdc780 ]
    
    bus_id is currently derived from the ethernetX alias. If one is missing
    for the device, 0 is used. If ethernet0 points to another stmmac device
    or if there are 2+ stmmac devices without an ethernet alias, then bus_id
    will be 0 for all of those.
    
    This is an issue because the bus_id is used to generate the mdio bus id
    (new_bus->id in drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
    stmmac_mdio_register) and this needs to be unique.
    
    This allows to avoid needing to define ethernet aliases for devices with
    multiple stmmac controllers (such as the Rockchip RK3588) for multiple
    stmmac devices to probe properly.
    
    Obviously, the bus_id isn't guaranteed to be stable across reboots if no
    alias is set for the device but that is easily fixed by simply adding an
    alias if this is desired.
    
    Fixes: 25c83b5c2e82 ("dt:net:stmmac: Add support to dwmac version 3.610 and 3.710")
    Signed-off-by: Quentin Schulz <[email protected]>
    Reviewed-by: Maxime Chevallier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: ti: icssg-prueth: Fix swapped TX stats for MII interfaces. [+ + +]
Author: Meghana Malladi <[email protected]>
Date:   Tue Jun 3 10:59:04 2025 +0530

    net: ti: icssg-prueth: Fix swapped TX stats for MII interfaces.
    
    [ Upstream commit 919d763d609428c2680ec8159257d9655f002f89 ]
    
    In MII mode, Tx lines are swapped for port0 and port1, which means
    Tx port0 receives data from PRU1 and the Tx port1 receives data from
    PRU0. This is an expected hardware behavior and reading the Tx stats
    needs to be handled accordingly in the driver. Update the driver to
    read Tx stats from the PRU1 for port0 and PRU0 for port1.
    
    Fixes: c1e10d5dc7a1 ("net: ti: icssg-prueth: Add ICSSG Stats")
    Signed-off-by: Meghana Malladi <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: tipc: fix refcount warning in tipc_aead_encrypt [+ + +]
Author: Charalampos Mitrodimas <[email protected]>
Date:   Tue May 27 16:35:44 2025 +0000

    net: tipc: fix refcount warning in tipc_aead_encrypt
    
    [ Upstream commit f29ccaa07cf3d35990f4d25028cc55470d29372b ]
    
    syzbot reported a refcount warning [1] caused by calling get_net() on
    a network namespace that is being destroyed (refcount=0). This happens
    when a TIPC discovery timer fires during network namespace cleanup.
    
    The recently added get_net() call in commit e279024617134 ("net/tipc:
    fix slab-use-after-free Read in tipc_aead_encrypt_done") attempts to
    hold a reference to the network namespace. However, if the namespace
    is already being destroyed, its refcount might be zero, leading to the
    use-after-free warning.
    
    Replace get_net() with maybe_get_net(), which safely checks if the
    refcount is non-zero before incrementing it. If the namespace is being
    destroyed, return -ENODEV early, after releasing the bearer reference.
    
    [1]: https://lore.kernel.org/all/[email protected]/T/#m12019cf9ae77e1954f666914640efa36d52704a2
    
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/T/#m12019cf9ae77e1954f666914640efa36d52704a2
    Fixes: e27902461713 ("net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done")
    Signed-off-by: Charalampos Mitrodimas <[email protected]>
    Reviewed-by: Tung Nguyen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: aqc111: debug info before sanitation [+ + +]
Author: Oliver Neukum <[email protected]>
Date:   Wed May 28 13:03:54 2025 +0200

    net: usb: aqc111: debug info before sanitation
    
    commit d3faab9b5a6a0477d69c38bd11c43aa5e936f929 upstream.
    
    If we sanitize error returns, the debug statements need
    to come before that so that we don't lose information.
    
    Signed-off-by: Oliver Neukum <[email protected]>
    Fixes: 405b0d610745 ("net: usb: aqc111: fix error handling of usbnet read calls")
    Reviewed-by: Andrew Lunn <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: usb: aqc111: fix error handling of usbnet read calls [+ + +]
Author: Nikita Zhandarovich <[email protected]>
Date:   Tue May 20 14:32:39 2025 +0300

    net: usb: aqc111: fix error handling of usbnet read calls
    
    [ Upstream commit 405b0d610745fb5e84fc2961d9b960abb9f3d107 ]
    
    Syzkaller, courtesy of syzbot, identified an error (see report [1]) in
    aqc111 driver, caused by incomplete sanitation of usb read calls'
    results. This problem is quite similar to the one fixed in commit
    920a9fa27e78 ("net: asix: add proper error handling of usb read errors").
    
    For instance, usbnet_read_cmd() may read fewer than 'size' bytes,
    even if the caller expected the full amount, and aqc111_read_cmd()
    will not check its result properly. As [1] shows, this may lead
    to MAC address in aqc111_bind() being only partly initialized,
    triggering KMSAN warnings.
    
    Fix the issue by verifying that the number of bytes read is
    as expected and not less.
    
    [1] Partial syzbot report:
    BUG: KMSAN: uninit-value in is_valid_ether_addr include/linux/etherdevice.h:208 [inline]
    BUG: KMSAN: uninit-value in usbnet_probe+0x2e57/0x4390 drivers/net/usb/usbnet.c:1830
     is_valid_ether_addr include/linux/etherdevice.h:208 [inline]
     usbnet_probe+0x2e57/0x4390 drivers/net/usb/usbnet.c:1830
     usb_probe_interface+0xd01/0x1310 drivers/usb/core/driver.c:396
     call_driver_probe drivers/base/dd.c:-1 [inline]
     really_probe+0x4d1/0xd90 drivers/base/dd.c:658
     __driver_probe_device+0x268/0x380 drivers/base/dd.c:800
    ...
    
    Uninit was stored to memory at:
     dev_addr_mod+0xb0/0x550 net/core/dev_addr_lists.c:582
     __dev_addr_set include/linux/netdevice.h:4874 [inline]
     eth_hw_addr_set include/linux/etherdevice.h:325 [inline]
     aqc111_bind+0x35f/0x1150 drivers/net/usb/aqc111.c:717
     usbnet_probe+0xbe6/0x4390 drivers/net/usb/usbnet.c:1772
     usb_probe_interface+0xd01/0x1310 drivers/usb/core/driver.c:396
    ...
    
    Uninit was stored to memory at:
     ether_addr_copy include/linux/etherdevice.h:305 [inline]
     aqc111_read_perm_mac drivers/net/usb/aqc111.c:663 [inline]
     aqc111_bind+0x794/0x1150 drivers/net/usb/aqc111.c:713
     usbnet_probe+0xbe6/0x4390 drivers/net/usb/usbnet.c:1772
     usb_probe_interface+0xd01/0x1310 drivers/usb/core/driver.c:396
     call_driver_probe drivers/base/dd.c:-1 [inline]
    ...
    
    Local variable buf.i created at:
     aqc111_read_perm_mac drivers/net/usb/aqc111.c:656 [inline]
     aqc111_bind+0x221/0x1150 drivers/net/usb/aqc111.c:713
     usbnet_probe+0xbe6/0x4390 drivers/net/usb/usbnet.c:1772
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=3b6b9ff7b80430020c7b
    Tested-by: [email protected]
    Fixes: df2d59a2ab6c ("net: usb: aqc111: Add support for getting and setting of MAC address")
    Signed-off-by: Nikita Zhandarovich <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: wwan: mhi_wwan_mbim: use correct mux_id for multiplexing [+ + +]
Author: Daniele Palmas <[email protected]>
Date:   Tue Jun 3 11:12:04 2025 +0200

    net: wwan: mhi_wwan_mbim: use correct mux_id for multiplexing
    
    [ Upstream commit 501fe52aa908c96f2c9b8d54767938a1a5960354 ]
    
    Recent Qualcomm chipsets like SDX72/75 require MBIM sessionId mapping
    to muxId in the range (0x70-0x8F) for the PCIe tethered use.
    
    This has been partially addressed by the referenced commit, mapping
    the default data call to muxId = 112, but the multiplexed data calls
    scenario was not properly considered, mapping sessionId = 1 to muxId
    1, while it should have been 113.
    
    Fix this by moving the session_id assignment logic to mhi_mbim_newlink,
    in order to map sessionId = n to muxId = n + WDS_BIND_MUX_DATA_PORT_MUX_ID.
    
    Fixes: 65bc58c3dcad ("net: wwan: mhi: make default data link id configurable")
    Signed-off-by: Daniele Palmas <[email protected]>
    Reviewed-by: Loic Poulain <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: wwan: t7xx: Fix napi rx poll issue [+ + +]
Author: Jinjian Song <[email protected]>
Date:   Fri May 30 11:16:48 2025 +0800

    net: wwan: t7xx: Fix napi rx poll issue
    
    [ Upstream commit 905fe0845bb27e4eed2ca27ea06e6c4847f1b2b1 ]
    
    When driver handles the napi rx polling requests, the netdev might
    have been released by the dellink logic triggered by the disconnect
    operation on user plane. However, in the logic of processing skb in
    polling, an invalid netdev is still being used, which causes a panic.
    
    BUG: kernel NULL pointer dereference, address: 00000000000000f1
    Oops: 0000 [#1] PREEMPT SMP NOPTI
    RIP: 0010:dev_gro_receive+0x3a/0x620
    [...]
    Call Trace:
     <IRQ>
     ? __die_body+0x68/0xb0
     ? page_fault_oops+0x379/0x3e0
     ? exc_page_fault+0x4f/0xa0
     ? asm_exc_page_fault+0x22/0x30
     ? __pfx_t7xx_ccmni_recv_skb+0x10/0x10 [mtk_t7xx (HASH:1400 7)]
     ? dev_gro_receive+0x3a/0x620
     napi_gro_receive+0xad/0x170
     t7xx_ccmni_recv_skb+0x48/0x70 [mtk_t7xx (HASH:1400 7)]
     t7xx_dpmaif_napi_rx_poll+0x590/0x800 [mtk_t7xx (HASH:1400 7)]
     net_rx_action+0x103/0x470
     irq_exit_rcu+0x13a/0x310
     sysvec_apic_timer_interrupt+0x56/0x90
     </IRQ>
    
    Fixes: 5545b7b9f294 ("net: wwan: t7xx: Add NAPI support")
    Signed-off-by: Jinjian Song <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: xilinx: axienet: Fix Tx skb circular buffer occupancy check in dmaengine xmit [+ + +]
Author: Suraj Gupta <[email protected]>
Date:   Wed May 21 23:46:08 2025 +0530

    net: xilinx: axienet: Fix Tx skb circular buffer occupancy check in dmaengine xmit
    
    [ Upstream commit 32374234ab0101881e7d0c6a8ef7ebce566c46c9 ]
    
    In Dmaengine flow, driver maintains struct skbuf_dma_descriptor rings each
    element of which corresponds to a skb. In Tx datapath, compare available
    space in skb ring with number of skbs instead of skb fragments.
    Replace x * (MAX_SKB_FRAGS) in netif_txq_completed_wake() and
    netif_txq_maybe_stop() with x * (1 skb) to fix the comparison.
    
    Fixes: 6a91b846af85 ("net: axienet: Introduce dmaengine support")
    Signed-off-by: Suraj Gupta <[email protected]>
    Reviewed-by: Sean Anderson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net_sched: ets: fix a race in ets_qdisc_change() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Jun 11 11:15:14 2025 +0000

    net_sched: ets: fix a race in ets_qdisc_change()
    
    [ Upstream commit d92adacdd8c2960be856e0b82acc5b7c5395fddb ]
    
    Gerrard Tai reported a race condition in ETS, whenever SFQ perturb timer
    fires at the wrong time.
    
    The race is as follows:
    
    CPU 0                                 CPU 1
    [1]: lock root
    [2]: qdisc_tree_flush_backlog()
    [3]: unlock root
     |
     |                                    [5]: lock root
     |                                    [6]: rehash
     |                                    [7]: qdisc_tree_reduce_backlog()
     |
    [4]: qdisc_put()
    
    This can be abused to underflow a parent's qlen.
    
    Calling qdisc_purge_queue() instead of qdisc_tree_flush_backlog()
    should fix the race, because all packets will be purged from the qdisc
    before releasing the lock.
    
    Fixes: b05972f01e7d ("net: sched: tbf: don't call qdisc_put() while holding tree lock")
    Reported-by: Gerrard Tai <[email protected]>
    Suggested-by: Gerrard Tai <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net_sched: prio: fix a race in prio_tune() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Jun 11 11:15:11 2025 +0000

    net_sched: prio: fix a race in prio_tune()
    
    [ Upstream commit d35acc1be3480505b5931f17e4ea9b7617fea4d3 ]
    
    Gerrard Tai reported a race condition in PRIO, whenever SFQ perturb timer
    fires at the wrong time.
    
    The race is as follows:
    
    CPU 0                                 CPU 1
    [1]: lock root
    [2]: qdisc_tree_flush_backlog()
    [3]: unlock root
     |
     |                                    [5]: lock root
     |                                    [6]: rehash
     |                                    [7]: qdisc_tree_reduce_backlog()
     |
    [4]: qdisc_put()
    
    This can be abused to underflow a parent's qlen.
    
    Calling qdisc_purge_queue() instead of qdisc_tree_flush_backlog()
    should fix the race, because all packets will be purged from the qdisc
    before releasing the lock.
    
    Fixes: 7b8e0b6e6599 ("net: sched: prio: delay destroying child qdiscs on change")
    Reported-by: Gerrard Tai <[email protected]>
    Suggested-by: Gerrard Tai <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net_sched: red: fix a race in __red_change() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Jun 11 11:15:12 2025 +0000

    net_sched: red: fix a race in __red_change()
    
    [ Upstream commit 85a3e0ede38450ea3053b8c45d28cf55208409b8 ]
    
    Gerrard Tai reported a race condition in RED, whenever SFQ perturb timer
    fires at the wrong time.
    
    The race is as follows:
    
    CPU 0                                 CPU 1
    [1]: lock root
    [2]: qdisc_tree_flush_backlog()
    [3]: unlock root
     |
     |                                    [5]: lock root
     |                                    [6]: rehash
     |                                    [7]: qdisc_tree_reduce_backlog()
     |
    [4]: qdisc_put()
    
    This can be abused to underflow a parent's qlen.
    
    Calling qdisc_purge_queue() instead of qdisc_tree_flush_backlog()
    should fix the race, because all packets will be purged from the qdisc
    before releasing the lock.
    
    Fixes: 0c8d13ac9607 ("net: sched: red: delay destroying child qdisc on replace")
    Reported-by: Gerrard Tai <[email protected]>
    Suggested-by: Gerrard Tai <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net_sched: sch_sfq: fix a potential crash on gso_skb handling [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri Jun 6 16:51:27 2025 +0000

    net_sched: sch_sfq: fix a potential crash on gso_skb handling
    
    [ Upstream commit 82ffbe7776d0ac084031f114167712269bf3d832 ]
    
    SFQ has an assumption of always being able to queue at least one packet.
    
    However, after the blamed commit, sch->q.len can be inflated by packets
    in sch->gso_skb, and an enqueue() on an empty SFQ qdisc can be followed
    by an immediate drop.
    
    Fix sfq_drop() to properly clear q->tail in this situation.
    
    Tested:
    
    ip netns add lb
    ip link add dev to-lb type veth peer name in-lb netns lb
    ethtool -K to-lb tso off                 # force qdisc to requeue gso_skb
    ip netns exec lb ethtool -K in-lb gro on # enable NAPI
    ip link set dev to-lb up
    ip -netns lb link set dev in-lb up
    ip addr add dev to-lb 192.168.20.1/24
    ip -netns lb addr add dev in-lb 192.168.20.2/24
    tc qdisc replace dev to-lb root sfq limit 100
    
    ip netns exec lb netserver
    
    netperf -H 192.168.20.2 -l 100 &
    netperf -H 192.168.20.2 -l 100 &
    netperf -H 192.168.20.2 -l 100 &
    netperf -H 192.168.20.2 -l 100 &
    
    Fixes: a53851e2c321 ("net: sched: explicit locking in gso_cpu fallback")
    Reported-by: Marcus Wichelmann <[email protected]>
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Toke Høiland-Jørgensen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net_sched: tbf: fix a race in tbf_change() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Jun 11 11:15:13 2025 +0000

    net_sched: tbf: fix a race in tbf_change()
    
    [ Upstream commit 43eb466041216d25dedaef1c383ad7bd89929cbc ]
    
    Gerrard Tai reported a race condition in TBF, whenever SFQ perturb timer
    fires at the wrong time.
    
    The race is as follows:
    
    CPU 0                                 CPU 1
    [1]: lock root
    [2]: qdisc_tree_flush_backlog()
    [3]: unlock root
     |
     |                                    [5]: lock root
     |                                    [6]: rehash
     |                                    [7]: qdisc_tree_reduce_backlog()
     |
    [4]: qdisc_put()
    
    This can be abused to underflow a parent's qlen.
    
    Calling qdisc_purge_queue() instead of qdisc_tree_flush_backlog()
    should fix the race, because all packets will be purged from the qdisc
    before releasing the lock.
    
    Fixes: b05972f01e7d ("net: sched: tbf: don't call qdisc_put() while holding tree lock")
    Reported-by: Gerrard Tai <[email protected]>
    Suggested-by: Gerrard Tai <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Zhengchao Shao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netfilter: bridge: Move specific fragmented packet to slow_path instead of dropping it [+ + +]
Author: Huajian Yang <[email protected]>
Date:   Thu Apr 17 17:29:53 2025 +0800

    netfilter: bridge: Move specific fragmented packet to slow_path instead of dropping it
    
    [ Upstream commit aa04c6f45b9224b949aa35d4fa5f8d0ba07b23d4 ]
    
    The config NF_CONNTRACK_BRIDGE will change the bridge forwarding for
    fragmented packets.
    
    The original bridge does not know that it is a fragmented packet and
    forwards it directly, after NF_CONNTRACK_BRIDGE is enabled, function
    nf_br_ip_fragment and br_ip6_fragment will check the headroom.
    
    In original br_forward, insufficient headroom of skb may indeed exist,
    but there's still a way to save the skb in the device driver after
    dev_queue_xmit.So droping the skb will change the original bridge
    forwarding in some cases.
    
    Fixes: 3c171f496ef5 ("netfilter: bridge: add connection tracking system")
    Signed-off-by: Huajian Yang <[email protected]>
    Reviewed-by: Florian Westphal <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nf_nat: also check reverse tuple to obtain clashing entry [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Fri May 30 12:34:02 2025 +0200

    netfilter: nf_nat: also check reverse tuple to obtain clashing entry
    
    [ Upstream commit 50d9ce9679dd50df2dc51ada717fa875bc248fad ]
    
    The logic added in the blamed commit was supposed to only omit nat source
    port allocation if neither the existing nor the new entry are subject to
    NAT.
    
    However, its not enough to lookup the conntrack based on the proposed
    tuple, we must also check the reverse direction.
    
    Otherwise there are esoteric cases where the collision is in the reverse
    direction because that colliding connection has a port rewrite, but the
    new entry doesn't.  In this case, we only check the new entry and then
    erronously conclude that no clash exists anymore.
    
     The existing (udp) tuple is:
      a:p -> b:P, with nat translation to s:P, i.e. pure daddr rewrite,
      reverse tuple in conntrack table is s:P -> a:p.
    
    When another UDP packet is sent directly to s, i.e. a:p->s:P, this is
    correctly detected as a colliding entry: tuple is taken by existing reply
    tuple in reverse direction.
    
    But the colliding conntrack is only searched for with unreversed
    direction, and we can't find such entry matching a:p->s:P.
    
    The incorrect conclusion is that the clashing entry has timed out and
    that no port address translation is required.
    
    Such conntrack will then be discarded at nf_confirm time because the
    proposed reverse direction clashes with an existing mapping in the
    conntrack table.
    
    Search for the reverse tuple too, this will then check the NAT bits of
    the colliding entry and triggers port reallocation.
    
    Followp patch extends nft_nat.sh selftest to cover this scenario.
    
    The IPS_SEQ_ADJUST change is also a bug fix:
    Instead of checking for SEQ_ADJ this tested for SEEN_REPLY and ASSURED
    by accident -- _BIT is only for use with the test_bit() API.
    
    This bug has little consequence in practice, because the sequence number
    adjustments are only useful for TCP which doesn't support clash resolution.
    
    The existing test case (conntrack_reverse_clash.sh) exercise a race
    condition path (parallel conntrack creation on different CPUs), so
    the colliding entries have neither SEEN_REPLY nor ASSURED set.
    
    Thanks to Yafang Shao and Shaun Brady for an initial investigation
    of this bug.
    
    Fixes: d8f84a9bc7c4 ("netfilter: nf_nat: don't try nat source port reallocation for reverse dir clash")
    Closes: https://bugzilla.netfilter.org/show_bug.cgi?id=1795
    Reported-by: Yafang Shao <[email protected]>
    Reported-by: Shaun Brady <[email protected]>
    Signed-off-by: Florian Westphal <[email protected]>
    Tested-by: Yafang Shao <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nf_set_pipapo_avx2: fix initial map fill [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Fri May 23 14:20:44 2025 +0200

    netfilter: nf_set_pipapo_avx2: fix initial map fill
    
    [ Upstream commit ea77c397bff8b6d59f6d83dae1425b08f465e8b5 ]
    
    If the first field doesn't cover the entire start map, then we must zero
    out the remainder, else we leak those bits into the next match round map.
    
    The early fix was incomplete and did only fix up the generic C
    implementation.
    
    A followup patch adds a test case to nft_concat_range.sh.
    
    Fixes: 791a615b7ad2 ("netfilter: nf_set_pipapo: fix initial map fill")
    Signed-off-by: Florian Westphal <[email protected]>
    Reviewed-by: Stefano Brivio <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nf_tables: nft_fib: consistent l3mdev handling [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Wed May 21 11:38:48 2025 +0200

    netfilter: nf_tables: nft_fib: consistent l3mdev handling
    
    [ Upstream commit 9a119669fb1924cd9658c16da39a5a585e129e50 ]
    
    fib has two modes:
    1. Obtain output device according to source or destination address
    2. Obtain the type of the address, e.g. local, unicast, multicast.
    
    'fib daddr type' should return 'local' if the address is configured
    in this netns or unicast otherwise.
    
    'fib daddr . iif type' should return 'local' if the address is configured
    on the input interface or unicast otherwise, i.e. more restrictive.
    
    However, if the interface is part of a VRF, then 'fib daddr type'
    returns unicast even if the address is configured on the incoming
    interface.
    
    This is broken for both ipv4 and ipv6.
    
    In the ipv4 case, inet_dev_addr_type must only be used if the
    'iif' or 'oif' (strict mode) was requested.
    
    Else inet_addr_type_dev_table() needs to be used and the correct
    dev argument must be passed as well so the correct fib (vrf) table
    is used.
    
    In the ipv6 case, the bug is similar, without strict mode, dev is NULL
    so .flowi6_l3mdev will be set to 0.
    
    Add a new 'nft_fib_l3mdev_master_ifindex_rcu()' helper and use that
    to init the .l3mdev structure member.
    
    For ipv6, use it from nft_fib6_flowi_init() which gets called from
    both the 'type' and the 'route' mode eval functions.
    
    This provides consistent behaviour for all modes for both ipv4 and ipv6:
    If strict matching is requested, the input respectively output device
    of the netfilter hooks is used.
    
    Otherwise, use skb->dev to obtain the l3mdev ifindex.
    
    Without this, most type checks in updated nft_fib.sh selftest fail:
    
      FAIL: did not find veth0 . 10.9.9.1 . local in fibtype4
      FAIL: did not find veth0 . dead:1::1 . local in fibtype6
      FAIL: did not find veth0 . dead:9::1 . local in fibtype6
      FAIL: did not find tvrf . 10.0.1.1 . local in fibtype4
      FAIL: did not find tvrf . 10.9.9.1 . local in fibtype4
      FAIL: did not find tvrf . dead:1::1 . local in fibtype6
      FAIL: did not find tvrf . dead:9::1 . local in fibtype6
      FAIL: fib expression address types match (iif in vrf)
    
    (fib errounously returns 'unicast' for all of them, even
     though all of these addresses are local to the vrf).
    
    Fixes: f6d0cbcf09c5 ("netfilter: nf_tables: add fib expression")
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nf_tables: nft_fib_ipv6: fix VRF ipv4/ipv6 result discrepancy [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Wed May 21 11:38:47 2025 +0200

    netfilter: nf_tables: nft_fib_ipv6: fix VRF ipv4/ipv6 result discrepancy
    
    [ Upstream commit 8b53f46eb430fe5b42d485873b85331d2de2c469 ]
    
    With a VRF, ipv4 and ipv6 FIB expression behave differently.
    
       fib daddr . iif oif
    
    Will return the input interface name for ipv4, but the real device
    for ipv6.  Example:
    
    If VRF device name is tvrf and real (incoming) device is veth0.
    First round is ok, both ipv4 and ipv6 will yield 'veth0'.
    
    But in the second round (incoming device will be set to "tvrf"), ipv4
    will yield "tvrf" whereas ipv6 returns "veth0" for the second round too.
    
    This makes ipv6 behave like ipv4.
    
    A followup patch will add a test case for this, without this change
    it will fail with:
      get element inet t fibif6iif { tvrf . dead:1::99 . tvrf }
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      FAIL: did not find tvrf . dead:1::99 . tvrf in fibif6iif
    
    Alternatively we could either not do anything at all or change
    ipv4 to also return the lower/real device, however, nft (userspace)
    doc says "iif: if fib lookup provides a route then check its output
    interface is identical to the packets input interface." which is what
    the nft fib ipv4 behaviour is.
    
    Fixes: f6d0cbcf09c5 ("netfilter: nf_tables: add fib expression")
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nft_quota: match correctly when the quota just depleted [+ + +]
Author: Zhongqiu Duan <[email protected]>
Date:   Thu Apr 17 15:49:30 2025 +0000

    netfilter: nft_quota: match correctly when the quota just depleted
    
    [ Upstream commit bfe7cfb65c753952735c3eed703eba9a8b96a18d ]
    
    The xt_quota compares skb length with remaining quota, but the nft_quota
    compares it with consumed bytes.
    
    The xt_quota can match consumed bytes up to quota at maximum. But the
    nft_quota break match when consumed bytes equal to quota.
    
    i.e., nft_quota match consumed bytes in [0, quota - 1], not [0, quota].
    
    Fixes: 795595f68d6c ("netfilter: nft_quota: dump consumed quota")
    Signed-off-by: Zhongqiu Duan <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nft_set_pipapo: prevent overflow in lookup table allocation [+ + +]
Author: Pablo Neira Ayuso <[email protected]>
Date:   Tue Apr 22 21:52:43 2025 +0200

    netfilter: nft_set_pipapo: prevent overflow in lookup table allocation
    
    [ Upstream commit 4c5c6aa9967dbe55bd017bb509885928d0f31206 ]
    
    When calculating the lookup table size, ensure the following
    multiplication does not overflow:
    
    - desc->field_len[] maximum value is U8_MAX multiplied by
      NFT_PIPAPO_GROUPS_PER_BYTE(f) that can be 2, worst case.
    - NFT_PIPAPO_BUCKETS(f->bb) is 2^8, worst case.
    - sizeof(unsigned long), from sizeof(*f->lt), lt in
      struct nft_pipapo_field.
    
    Then, use check_mul_overflow() to multiply by bucket size and then use
    check_add_overflow() to the alignment for avx2 (if needed). Finally, add
    lt_size_check_overflow() helper and use it to consolidate this.
    
    While at it, replace leftover allocation using the GFP_KERNEL to
    GFP_KERNEL_ACCOUNT for consistency, in pipapo_resize().
    
    Fixes: 3c4287f62044 ("nf_tables: Add set type for arbitrary concatenation of ranges")
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Reviewed-by: Stefano Brivio <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: nft_tunnel: fix geneve_opt dump [+ + +]
Author: Fernando Fernandez Mancera <[email protected]>
Date:   Wed May 21 11:41:08 2025 +0200

    netfilter: nft_tunnel: fix geneve_opt dump
    
    [ Upstream commit 22a9613de4c29d7d0770bfb8a5a9d73eb8df7dad ]
    
    When dumping a nft_tunnel with more than one geneve_opt configured the
    netlink attribute hierarchy should be as follow:
    
     NFTA_TUNNEL_KEY_OPTS
     |
     |--NFTA_TUNNEL_KEY_OPTS_GENEVE
     |  |
     |  |--NFTA_TUNNEL_KEY_GENEVE_CLASS
     |  |--NFTA_TUNNEL_KEY_GENEVE_TYPE
     |  |--NFTA_TUNNEL_KEY_GENEVE_DATA
     |
     |--NFTA_TUNNEL_KEY_OPTS_GENEVE
     |  |
     |  |--NFTA_TUNNEL_KEY_GENEVE_CLASS
     |  |--NFTA_TUNNEL_KEY_GENEVE_TYPE
     |  |--NFTA_TUNNEL_KEY_GENEVE_DATA
     |
     |--NFTA_TUNNEL_KEY_OPTS_GENEVE
     ...
    
    Otherwise, userspace tools won't be able to fetch the geneve options
    configured correctly.
    
    Fixes: 925d844696d9 ("netfilter: nft_tunnel: add support for geneve opts")
    Signed-off-by: Fernando Fernandez Mancera <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

netfilter: xtables: support arpt_mark and ipv6 optstrip for iptables-nft only builds [+ + +]
Author: Florian Westphal <[email protected]>
Date:   Fri May 16 16:12:13 2025 +0200

    netfilter: xtables: support arpt_mark and ipv6 optstrip for iptables-nft only builds
    
    [ Upstream commit c38eb2973c18d34a8081d173a6ad298461f4a37c ]
    
    Its now possible to build a kernel that has no support for the classic
    xtables get/setsockopt interfaces and builtin tables.
    
    In this case, we have CONFIG_IP6_NF_MANGLE=n and
    CONFIG_IP_NF_ARPTABLES=n.
    
    For optstript, the ipv6 code is so small that we can enable it if
    netfilter ipv6 support exists. For mark, check if either classic
    arptables or NFT_ARP_COMPAT is set.
    
    Fixes: a9525c7f6219 ("netfilter: xtables: allow xtables-nft only builds")
    Signed-off-by: Florian Westphal <[email protected]>
    Signed-off-by: Pablo Neira Ayuso <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nfs: clear SB_RDONLY before getting superblock [+ + +]
Author: Li Lingfeng <[email protected]>
Date:   Tue Mar 4 21:05:32 2025 +0800

    nfs: clear SB_RDONLY before getting superblock
    
    [ Upstream commit 8cd9b785943c57a136536250da80ba1eb6f8eb18 ]
    
    As described in the link, commit 52cb7f8f1778 ("nfs: ignore SB_RDONLY when
    mounting nfs") removed the check for the ro flag when determining whether
    to share the superblock, which caused issues when mounting different
    subdirectories under the same export directory via NFSv3. However, this
    change did not affect NFSv4.
    
    For NFSv3:
    1) A single superblock is created for the initial mount.
    2) When mounted read-only, this superblock carries the SB_RDONLY flag.
    3) Before commit 52cb7f8f1778 ("nfs: ignore SB_RDONLY when mounting nfs"):
    Subsequent rw mounts would not share the existing ro superblock due to
    flag mismatch, creating a new superblock without SB_RDONLY.
    After the commit:
      The SB_RDONLY flag is ignored during superblock comparison, and this leads
      to sharing the existing superblock even for rw mounts.
      Ultimately results in write operations being rejected at the VFS layer.
    
    For NFSv4:
    1) Multiple superblocks are created and the last one will be kept.
    2) The actually used superblock for ro mounts doesn't carry SB_RDONLY flag.
    Therefore, commit 52cb7f8f1778 doesn't affect NFSv4 mounts.
    
    Clear SB_RDONLY before getting superblock when NFS_MOUNT_UNSHARED is not
    set to fix it.
    
    Fixes: 52cb7f8f1778 ("nfs: ignore SB_RDONLY when mounting nfs")
    Closes: https://lore.kernel.org/all/[email protected]/T/
    Signed-off-by: Li Lingfeng <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nfs: ignore SB_RDONLY when remounting nfs [+ + +]
Author: Li Lingfeng <[email protected]>
Date:   Tue Mar 4 21:05:33 2025 +0800

    nfs: ignore SB_RDONLY when remounting nfs
    
    [ Upstream commit 80c4de6ab44c14e910117a02f2f8241ffc6ec54a ]
    
    In some scenarios, when mounting NFS, more than one superblock may be
    created. The final superblock used is the last one created, but only the
    first superblock carries the ro flag passed from user space. If a ro flag
    is added to the superblock via remount, it will trigger the issue
    described in Link[1].
    
    Link[2] attempted to address this by marking the superblock as ro during
    the initial mount. However, this introduced a new problem in scenarios
    where multiple mount points share the same superblock:
    [root@a ~]# mount /dev/sdb /mnt/sdb
    [root@a ~]# echo "/mnt/sdb *(rw,no_root_squash)" > /etc/exports
    [root@a ~]# echo "/mnt/sdb/test_dir2 *(ro,no_root_squash)" >> /etc/exports
    [root@a ~]# systemctl restart nfs-server
    [root@a ~]# mount -t nfs -o rw 127.0.0.1:/mnt/sdb/test_dir1 /mnt/test_mp1
    [root@a ~]# mount | grep nfs4
    127.0.0.1:/mnt/sdb/test_dir1 on /mnt/test_mp1 type nfs4 (rw,relatime,...
    [root@a ~]# mount -t nfs -o ro 127.0.0.1:/mnt/sdb/test_dir2 /mnt/test_mp2
    [root@a ~]# mount | grep nfs4
    127.0.0.1:/mnt/sdb/test_dir1 on /mnt/test_mp1 type nfs4 (ro,relatime,...
    127.0.0.1:/mnt/sdb/test_dir2 on /mnt/test_mp2 type nfs4 (ro,relatime,...
    [root@a ~]#
    
    When mounting the second NFS, the shared superblock is marked as ro,
    causing the previous NFS mount to become read-only.
    
    To resolve both issues, the ro flag is no longer applied to the superblock
    during remount. Instead, the ro flag on the mount is used to control
    whether the mount point is read-only.
    
    Fixes: 281cad46b34d ("NFS: Create a submount rpc_op")
    Link[1]: https://lore.kernel.org/all/[email protected]/
    Link[2]: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Li Lingfeng <[email protected]>
    Signed-off-by: Anna Schumaker <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nilfs2: add pointer check for nilfs_direct_propagate() [+ + +]
Author: Wentao Liang <[email protected]>
Date:   Tue Apr 29 02:37:07 2025 +0900

    nilfs2: add pointer check for nilfs_direct_propagate()
    
    [ Upstream commit f43f02429295486059605997bc43803527d69791 ]
    
    Patch series "nilfs2: improve sanity checks in dirty state propagation".
    
    This fixes one missed check for block mapping anomalies and one improper
    return of an error code during a preparation step for log writing, thereby
    improving checking for filesystem corruption on writeback.
    
    This patch (of 2):
    
    In nilfs_direct_propagate(), the printer get from nilfs_direct_get_ptr()
    need to be checked to ensure it is not an invalid pointer.
    
    If the pointer value obtained by nilfs_direct_get_ptr() is
    NILFS_BMAP_INVALID_PTR, means that the metadata (in this case, i_bmap in
    the nilfs_inode_info struct) that should point to the data block at the
    buffer head of the argument is corrupted and the data block is orphaned,
    meaning that the file system has lost consistency.
    
    Add a value check and return -EINVAL when it is an invalid pointer.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 36a580eb489f ("nilfs2: direct block mapping")
    Signed-off-by: Wentao Liang <[email protected]>
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nilfs2: do not propagate ENOENT error from nilfs_btree_propagate() [+ + +]
Author: Ryusuke Konishi <[email protected]>
Date:   Tue Apr 29 02:37:08 2025 +0900

    nilfs2: do not propagate ENOENT error from nilfs_btree_propagate()
    
    [ Upstream commit 8e39fbb1edbb4ec9d7c1124f403877fc167fcecd ]
    
    In preparation for writing logs, in nilfs_btree_propagate(), which makes
    parent and ancestor node blocks dirty starting from a modified data block
    or b-tree node block, if the starting block does not belong to the b-tree,
    i.e.  is isolated, nilfs_btree_do_lookup() called within the function
    fails with -ENOENT.
    
    In this case, even though -ENOENT is an internal code, it is propagated to
    the log writer via nilfs_bmap_propagate() and may be erroneously returned
    to system calls such as fsync().
    
    Fix this issue by changing the error code to -EINVAL in this case, and
    having the bmap layer detect metadata corruption and convert the error
    code appropriately.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 1f5abe7e7dbc ("nilfs2: replace BUG_ON and BUG calls triggerable from ioctl")
    Signed-off-by: Ryusuke Konishi <[email protected]>
    Cc: Wentao Liang <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvme: fix command limits status code [+ + +]
Author: Keith Busch <[email protected]>
Date:   Tue May 20 13:20:37 2025 -0700

    nvme: fix command limits status code
    
    [ Upstream commit 10f4a7cd724e34b7a6ff96e57ac49dc0cadececc ]
    
    The command specific status code, 0x183, was introduced in the NVMe 2.0
    specification defined to "Command Size Limits Exceeded" and only ever
    applied to DSM and Copy commands.  Fix the name and, remove the
    incorrect translation to error codes and special treatment in the
    target code for it.
    
    Fixes: 3b7c33b28a44d4 ("nvme.h: add Write Zeroes definitions")
    Cc: Chaitanya Kulkarni <[email protected]>
    Reviewed-by: Chaitanya Kulkarni <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvmem: zynqmp_nvmem: unbreak driver after cleanup [+ + +]
Author: Peter Korsgaard <[email protected]>
Date:   Fri May 9 13:24:07 2025 +0100

    nvmem: zynqmp_nvmem: unbreak driver after cleanup
    
    commit fe8abdd175d7b547ae1a612757e7902bcd62e9cf upstream.
    
    Commit 29be47fcd6a0 ("nvmem: zynqmp_nvmem: zynqmp_nvmem_probe cleanup")
    changed the driver to expect the device pointer to be passed as the
    "context", but in nvmem the context parameter comes from nvmem_config.priv
    which is never set - Leading to null pointer exceptions when the device is
    accessed.
    
    Fixes: 29be47fcd6a0 ("nvmem: zynqmp_nvmem: zynqmp_nvmem_probe cleanup")
    Cc: stable <[email protected]>
    Signed-off-by: Peter Korsgaard <[email protected]>
    Reviewed-by: Michal Simek <[email protected]>
    Tested-by: Michal Simek <[email protected]>
    Signed-off-by: Srinivas Kandagatla <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nvmet-fcloop: access fcpreq only when holding reqlock [+ + +]
Author: Daniel Wagner <[email protected]>
Date:   Wed May 7 14:23:03 2025 +0200

    nvmet-fcloop: access fcpreq only when holding reqlock
    
    [ Upstream commit 47a827cd7929d0550c3496d70b417fcb5649b27b ]
    
    The abort handling logic expects that the state and the fcpreq are only
    accessed when holding the reqlock lock.
    
    While at it, only handle the aborts in the abort handler.
    
    Signed-off-by: Daniel Wagner <[email protected]>
    Signed-off-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
objtool/rust: relax slice condition to cover more `noreturn` Rust functions [+ + +]
Author: Miguel Ojeda <[email protected]>
Date:   Tue May 20 20:55:55 2025 +0200

    objtool/rust: relax slice condition to cover more `noreturn` Rust functions
    
    commit cbeaa41dfe26b72639141e87183cb23e00d4b0dd upstream.
    
    Developers are indeed hitting other of the `noreturn` slice symbols in
    Nova [1], thus relax the last check in the list so that we catch all of
    them, i.e.
    
        *_4core5slice5index22slice_index_order_fail
        *_4core5slice5index24slice_end_index_len_fail
        *_4core5slice5index26slice_start_index_len_fail
        *_4core5slice5index29slice_end_index_overflow_fail
        *_4core5slice5index31slice_start_index_overflow_fail
    
    These all exist since at least Rust 1.78.0, thus backport it too.
    
    See commit 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
    for more details.
    
    Cc: [email protected] # Needed in 6.12.y and later.
    Cc: John Hubbard <[email protected]>
    Cc: Timur Tabi <[email protected]>
    Cc: Kane York <[email protected]>
    Cc: Josh Poimboeuf <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Reported-by: Joel Fernandes <[email protected]>
    Fixes: 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
    Closes: https://lore.kernel.org/rust-for-linux/20250513180757.GA1295002@joelnvbox/ [1]
    Tested-by: Joel Fernandes <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Miguel Ojeda <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ocfs2: fix possible memory leak in ocfs2_finish_quota_recovery [+ + +]
Author: Murad Masimov <[email protected]>
Date:   Wed Apr 2 09:56:27 2025 +0300

    ocfs2: fix possible memory leak in ocfs2_finish_quota_recovery
    
    [ Upstream commit cdc3ed3035d0fe934aa1d9b78ce256752fd3bb7d ]
    
    If ocfs2_finish_quota_recovery() exits due to an error before passing all
    rc_list elements to ocfs2_recover_local_quota_file() then it can lead to a
    memory leak as rc_list may still contain elements that have to be freed.
    
    Release all memory allocated by ocfs2_add_recovery_chunk() using
    ocfs2_free_quota_recovery() instead of kfree().
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 2205363dce74 ("ocfs2: Implement quota recovery")
    Signed-off-by: Murad Masimov <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    Reviewed-by: Joseph Qi <[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]>

 
octeontx2-pf: QOS: Perform cache sync on send queue teardown [+ + +]
Author: Hariprasad Kelam <[email protected]>
Date:   Thu May 22 15:17:41 2025 +0530

    octeontx2-pf: QOS: Perform cache sync on send queue teardown
    
    [ Upstream commit 479c58016099d19686e36f6c50f912360839a7fa ]
    
    QOS is designed to create a new send queue whenever  a class
    is created, ensuring proper shaping and scheduling. However,
    when multiple send queues are created and deleted in a loop,
    SMMU errors are observed.
    
    This patch addresses the issue by performing an data cache sync
    during the teardown of QOS send queues.
    
    Fixes: ab6dddd2a669 ("octeontx2-pf: qos send queues management")
    Signed-off-by: Hariprasad Kelam <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

octeontx2-pf: QOS: Refactor TC_HTB_LEAF_DEL_LAST callback [+ + +]
Author: Hariprasad Kelam <[email protected]>
Date:   Thu May 22 17:28:42 2025 +0530

    octeontx2-pf: QOS: Refactor TC_HTB_LEAF_DEL_LAST callback
    
    [ Upstream commit 67af4ec948e8ce3ea53a9cf614d01fddf172e56d ]
    
    This patch addresses below issues,
    
    1. Active traffic on the leaf node must be stopped before its send queue
       is reassigned to the parent. This patch resolves the issue by marking
       the node as 'Inner'.
    
    2. During a system reboot, the interface receives TC_HTB_LEAF_DEL
       and TC_HTB_LEAF_DEL_LAST callbacks to delete its HTB queues.
       In the case of TC_HTB_LEAF_DEL_LAST, although the same send queue
       is reassigned to the parent, the current logic still attempts to update
       the real number of queues, leadning to below warnings
    
            New queues can't be registered after device unregistration.
            WARNING: CPU: 0 PID: 6475 at net/core/net-sysfs.c:1714
            netdev_queue_update_kobjects+0x1e4/0x200
    
    Fixes: 5e6808b4c68d ("octeontx2-pf: Add support for HTB offload")
    Signed-off-by: Hariprasad Kelam <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
of: unittest: Unlock on error in unittest_data_add() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Wed Apr 30 11:05:40 2025 +0300

    of: unittest: Unlock on error in unittest_data_add()
    
    [ Upstream commit 493e6cb63a21e9f009dc4c209fd311f2bb777656 ]
    
    The of_overlay_mutex_unlock() was accidentally deleted if "of_root" is
    NULL.  Change this to a goto unlock.
    
    Fixes: d1eabd218ede ("of: unittest: treat missing of_root as error instead of fixing up")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Stephen Boyd <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
overflow: Fix direct struct member initialization in _DEFINE_FLEX() [+ + +]
Author: Gustavo A. R. Silva <[email protected]>
Date:   Thu May 1 18:44:43 2025 -0600

    overflow: Fix direct struct member initialization in _DEFINE_FLEX()
    
    [ Upstream commit 47e36ed7840661a9f7fb53554a1b04a5f8daffea ]
    
    Currently, to statically initialize the struct members of the `type`
    object created by _DEFINE_FLEX(), the internal `obj` member must be
    explicitly referenced at the call site. See:
    
    struct flex {
            int a;
            int b;
            struct foo flex_array[];
    };
    
    _DEFINE_FLEX(struct flex, instance, flex_array,
                     FIXED_SIZE, = {
                            .obj = {
                                    .a = 0,
                                    .b = 1,
                            },
                    });
    
    This leaks _DEFINE_FLEX() internal implementation details and make
    the helper harder to use and read.
    
    Fix this and allow for a more natural and intuitive C99 init-style:
    
    _DEFINE_FLEX(struct flex, instance, flex_array,
                     FIXED_SIZE, = {
                            .a = 0,
                            .b = 1,
                    });
    
    Note that before these changes, the `initializer` argument was optional,
    but now it's required.
    
    Also, update "counter" member initialization in DEFINE_FLEX().
    
    Fixes: 26dd68d293fd ("overflow: add DEFINE_FLEX() for on-stack allocs")
    Signed-off-by: Gustavo A. R. Silva <[email protected]>
    Link: https://lore.kernel.org/r/aBQVeyKfLOkO9Yss@kspp
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

overflow: Introduce __DEFINE_FLEX for having no initializer [+ + +]
Author: Kees Cook <[email protected]>
Date:   Fri May 30 12:06:47 2025 -0700

    overflow: Introduce __DEFINE_FLEX for having no initializer
    
    commit 5c78e793f78732b60276401f75cc1a101f9ad121 upstream.
    
    While not yet in the tree, there is a proposed patch[1] that was
    depending on the prior behavior of _DEFINE_FLEX, which did not have an
    explicit initializer. Provide this via __DEFINE_FLEX now, which can also
    have attributes applied (e.g. __uninitialized).
    
    Examples of the resulting initializer behaviors can be seen here:
    https://godbolt.org/z/P7Go8Tr33
    
    Link: https://lore.kernel.org/netdev/[email protected] [1]
    Fixes: 47e36ed78406 ("overflow: Fix direct struct member initialization in _DEFINE_FLEX()")
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
page_pool: Fix use-after-free in page_pool_recycle_in_ring [+ + +]
Author: Dong Chenchen <[email protected]>
Date:   Tue May 27 19:41:52 2025 +0800

    page_pool: Fix use-after-free in page_pool_recycle_in_ring
    
    [ Upstream commit 271683bb2cf32e5126c592b5d5e6a756fa374fd9 ]
    
    syzbot reported a uaf in page_pool_recycle_in_ring:
    
    BUG: KASAN: slab-use-after-free in lock_release+0x151/0xa30 kernel/locking/lockdep.c:5862
    Read of size 8 at addr ffff8880286045a0 by task syz.0.284/6943
    
    CPU: 0 UID: 0 PID: 6943 Comm: syz.0.284 Not tainted 6.13.0-rc3-syzkaller-gdfa94ce54f41 #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
    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:378 [inline]
     print_report+0x169/0x550 mm/kasan/report.c:489
     kasan_report+0x143/0x180 mm/kasan/report.c:602
     lock_release+0x151/0xa30 kernel/locking/lockdep.c:5862
     __raw_spin_unlock_bh include/linux/spinlock_api_smp.h:165 [inline]
     _raw_spin_unlock_bh+0x1b/0x40 kernel/locking/spinlock.c:210
     spin_unlock_bh include/linux/spinlock.h:396 [inline]
     ptr_ring_produce_bh include/linux/ptr_ring.h:164 [inline]
     page_pool_recycle_in_ring net/core/page_pool.c:707 [inline]
     page_pool_put_unrefed_netmem+0x748/0xb00 net/core/page_pool.c:826
     page_pool_put_netmem include/net/page_pool/helpers.h:323 [inline]
     page_pool_put_full_netmem include/net/page_pool/helpers.h:353 [inline]
     napi_pp_put_page+0x149/0x2b0 net/core/skbuff.c:1036
     skb_pp_recycle net/core/skbuff.c:1047 [inline]
     skb_free_head net/core/skbuff.c:1094 [inline]
     skb_release_data+0x6c4/0x8a0 net/core/skbuff.c:1125
     skb_release_all net/core/skbuff.c:1190 [inline]
     __kfree_skb net/core/skbuff.c:1204 [inline]
     sk_skb_reason_drop+0x1c9/0x380 net/core/skbuff.c:1242
     kfree_skb_reason include/linux/skbuff.h:1263 [inline]
     __skb_queue_purge_reason include/linux/skbuff.h:3343 [inline]
    
    root cause is:
    
    page_pool_recycle_in_ring
      ptr_ring_produce
        spin_lock(&r->producer_lock);
        WRITE_ONCE(r->queue[r->producer++], ptr)
          //recycle last page to pool
                                    page_pool_release
                                      page_pool_scrub
                                        page_pool_empty_ring
                                          ptr_ring_consume
                                          page_pool_return_page  //release all page
                                      __page_pool_destroy
                                         free_percpu(pool->recycle_stats);
                                         free(pool) //free
    
         spin_unlock(&r->producer_lock); //pool->ring uaf read
      recycle_stat_inc(pool, ring);
    
    page_pool can be free while page pool recycle the last page in ring.
    Add producer-lock barrier to page_pool_release to prevent the page
    pool from being free before all pages have been recycled.
    
    recycle_stat_inc() is empty when CONFIG_PAGE_POOL_STATS is not
    enabled, which will trigger Wempty-body build warning. Add definition
    for pool stat macro to fix warning.
    
    Suggested-by: Jakub Kicinski <[email protected]>
    Link: https://lore.kernel.org/netdev/[email protected]
    Fixes: ff7d6b27f894 ("page_pool: refurbish version of page_pool code")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=204a4382fcb3311f3858
    Signed-off-by: Dong Chenchen <[email protected]>
    Reviewed-by: Toke Høiland-Jørgensen <[email protected]>
    Reviewed-by: Mina Almasry <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

page_pool: Move pp_magic check into helper functions [+ + +]
Author: Toke Høiland-Jørgensen <[email protected]>
Date:   Wed Apr 9 12:41:36 2025 +0200

    page_pool: Move pp_magic check into helper functions
    
    [ Upstream commit cd3c93167da0e760b5819246eae7a4ea30fd014b ]
    
    Since we are about to stash some more information into the pp_magic
    field, let's move the magic signature checks into a pair of helper
    functions so it can be changed in one place.
    
    Reviewed-by: Mina Almasry <[email protected]>
    Tested-by: Yonglong Liu <[email protected]>
    Acked-by: Jesper Dangaard Brouer <[email protected]>
    Reviewed-by: Ilias Apalodimas <[email protected]>
    Signed-off-by: Toke Høiland-Jørgensen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

page_pool: Track DMA-mapped pages and unmap them when destroying the pool [+ + +]
Author: Toke Høiland-Jørgensen <[email protected]>
Date:   Wed Apr 9 12:41:37 2025 +0200

    page_pool: Track DMA-mapped pages and unmap them when destroying the pool
    
    [ Upstream commit ee62ce7a1d909ccba0399680a03c2dee83bcae95 ]
    
    When enabling DMA mapping in page_pool, pages are kept DMA mapped until
    they are released from the pool, to avoid the overhead of re-mapping the
    pages every time they are used. This causes resource leaks and/or
    crashes when there are pages still outstanding while the device is torn
    down, because page_pool will attempt an unmap through a non-existent DMA
    device on the subsequent page return.
    
    To fix this, implement a simple tracking of outstanding DMA-mapped pages
    in page pool using an xarray. This was first suggested by Mina[0], and
    turns out to be fairly straight forward: We simply store pointers to
    pages directly in the xarray with xa_alloc() when they are first DMA
    mapped, and remove them from the array on unmap. Then, when a page pool
    is torn down, it can simply walk the xarray and unmap all pages still
    present there before returning, which also allows us to get rid of the
    get/put_device() calls in page_pool. Using xa_cmpxchg(), no additional
    synchronisation is needed, as a page will only ever be unmapped once.
    
    To avoid having to walk the entire xarray on unmap to find the page
    reference, we stash the ID assigned by xa_alloc() into the page
    structure itself, using the upper bits of the pp_magic field. This
    requires a couple of defines to avoid conflicting with the
    POINTER_POISON_DELTA define, but this is all evaluated at compile-time,
    so does not affect run-time performance. The bitmap calculations in this
    patch gives the following number of bits for different architectures:
    
    - 23 bits on 32-bit architectures
    - 21 bits on PPC64 (because of the definition of ILLEGAL_POINTER_VALUE)
    - 32 bits on other 64-bit architectures
    
    Stashing a value into the unused bits of pp_magic does have the effect
    that it can make the value stored there lie outside the unmappable
    range (as governed by the mmap_min_addr sysctl), for architectures that
    don't define ILLEGAL_POINTER_VALUE. This means that if one of the
    pointers that is aliased to the pp_magic field (such as page->lru.next)
    is dereferenced while the page is owned by page_pool, that could lead to
    a dereference into userspace, which is a security concern. The risk of
    this is mitigated by the fact that (a) we always clear pp_magic before
    releasing a page from page_pool, and (b) this would need a
    use-after-free bug for struct page, which can have many other risks
    since page->lru.next is used as a generic list pointer in multiple
    places in the kernel. As such, with this patch we take the position that
    this risk is negligible in practice. For more discussion, see[1].
    
    Since all the tracking added in this patch is performed on DMA
    map/unmap, no additional code is needed in the fast path, meaning the
    performance overhead of this tracking is negligible there. A
    micro-benchmark shows that the total overhead of the tracking itself is
    about 400 ns (39 cycles(tsc) 395.218 ns; sum for both map and unmap[2]).
    Since this cost is only paid on DMA map and unmap, it seems like an
    acceptable cost to fix the late unmap issue. Further optimisation can
    narrow the cases where this cost is paid (for instance by eliding the
    tracking when DMA map/unmap is a no-op).
    
    The extra memory needed to track the pages is neatly encapsulated inside
    xarray, which uses the 'struct xa_node' structure to track items. This
    structure is 576 bytes long, with slots for 64 items, meaning that a
    full node occurs only 9 bytes of overhead per slot it tracks (in
    practice, it probably won't be this efficient, but in any case it should
    be an acceptable overhead).
    
    [0] https://lore.kernel.org/all/CAHS8izPg7B5DwKfSuzz-iOop_YRbk3Sd6Y4rX7KBG9DcVJcyWg@mail.gmail.com/
    [1] https://lore.kernel.org/r/[email protected]
    [2] https://lore.kernel.org/r/[email protected]
    
    Reported-by: Yonglong Liu <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]
    Fixes: ff7d6b27f894 ("page_pool: refurbish version of page_pool code")
    Suggested-by: Mina Almasry <[email protected]>
    Reviewed-by: Mina Almasry <[email protected]>
    Reviewed-by: Jesper Dangaard Brouer <[email protected]>
    Tested-by: Jesper Dangaard Brouer <[email protected]>
    Tested-by: Qiuling Ren <[email protected]>
    Tested-by: Yuying Ma <[email protected]>
    Tested-by: Yonglong Liu <[email protected]>
    Acked-by: Jesper Dangaard Brouer <[email protected]>
    Signed-off-by: Toke Høiland-Jørgensen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
path_overmount(): avoid false negatives [+ + +]
Author: Al Viro <[email protected]>
Date:   Sun Jun 1 14:02:26 2025 -0400

    path_overmount(): avoid false negatives
    
    [ Upstream commit 5f31c549382bcddbbd754c72c5433b19420d485d ]
    
    Holding namespace_sem is enough to make sure that result remains valid.
    It is *not* enough to avoid false negatives from __lookup_mnt().  Mounts
    can be unhashed outside of namespace_sem (stuck children getting detached
    on final mntput() of lazy-umounted mount) and having an unrelated mount
    removed from the hash chain while we traverse it may end up with false
    negative from __lookup_mnt().  We need to sample and recheck the seqlock
    component of mount_lock...
    
    Bug predates the introduction of path_overmount() - it had come from
    the code in finish_automount() that got abstracted into that helper.
    
    Reviewed-by: Christian Brauner <[email protected]>
    Fixes: 26df6034fdb2 ("fix automount/automount race properly")
    Fixes: 6ac392815628 ("fs: allow to mount beneath top mount")
    Signed-off-by: Al Viro <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI/ACPI: Fix allocated memory release on error in pci_acpi_scan_root() [+ + +]
Author: Zhe Qiao <[email protected]>
Date:   Wed Apr 30 14:06:03 2025 +0800

    PCI/ACPI: Fix allocated memory release on error in pci_acpi_scan_root()
    
    [ Upstream commit 631b2af2f35737750af284be22e63da56bf20139 ]
    
    In the pci_acpi_scan_root() function, when creating a PCI bus fails,
    we need to free up the previously allocated memory, which can avoid
    invalid memory usage and save resources.
    
    Fixes: 789befdfa389 ("arm64: PCI: Migrate ACPI related functions to pci-acpi.c")
    Signed-off-by: Zhe Qiao <[email protected]>
    [kwilczynski: commit log]
    Signed-off-by: Krzysztof Wilczyński <[email protected]>
    Acked-by: Rafael J. Wysocki <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI/DPC: Initialize aer_err_info before using it [+ + +]
Author: Bjorn Helgaas <[email protected]>
Date:   Thu May 22 18:21:07 2025 -0500

    PCI/DPC: Initialize aer_err_info before using it
    
    [ Upstream commit a424b598e6a6c1e69a2bb801d6fd16e805ab2c38 ]
    
    Previously the struct aer_err_info "info" was allocated on the stack
    without being initialized, so it contained junk except for the fields we
    explicitly set later.
    
    Initialize "info" at declaration so it starts as all zeros.
    
    Fixes: 8aefa9b0d910 ("PCI/DPC: Print AER status in DPC event handling")
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Tested-by: Krzysztof Wilczyński <[email protected]>
    Reviewed-by: Kuppuswamy Sathyanarayanan <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Reviewed-by: Jonathan Cameron <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI/DPC: Log Error Source ID only when valid [+ + +]
Author: Bjorn Helgaas <[email protected]>
Date:   Thu May 22 18:21:08 2025 -0500

    PCI/DPC: Log Error Source ID only when valid
    
    [ Upstream commit a0b62cc310239c7f1323fb20bd3789f21bdd8615 ]
    
    DPC Error Source ID is only valid when the DPC Trigger Reason indicates
    that DPC was triggered due to reception of an ERR_NONFATAL or ERR_FATAL
    Message (PCIe r6.0, sec 7.9.14.5).
    
    When DPC was triggered by ERR_NONFATAL (PCI_EXP_DPC_STATUS_TRIGGER_RSN_NFE)
    or ERR_FATAL (PCI_EXP_DPC_STATUS_TRIGGER_RSN_FE) from a downstream device,
    log the Error Source ID (decoded into domain/bus/device/function).  Don't
    print the source otherwise, since it's not valid.
    
    For DPC trigger due to reception of ERR_NONFATAL or ERR_FATAL, the dmesg
    logging changes:
    
      - pci 0000:00:01.0: DPC: containment event, status:0x000d source:0x0200
      - pci 0000:00:01.0: DPC: ERR_FATAL detected
      + pci 0000:00:01.0: DPC: containment event, status:0x000d, ERR_FATAL received from 0000:02:00.0
    
    and when DPC triggered for other reasons, where DPC Error Source ID is
    undefined, e.g., unmasked uncorrectable error:
    
      - pci 0000:00:01.0: DPC: containment event, status:0x0009 source:0x0200
      - pci 0000:00:01.0: DPC: unmasked uncorrectable error detected
      + pci 0000:00:01.0: DPC: containment event, status:0x0009: unmasked uncorrectable error detected
    
    Previously the "containment event" message was at KERN_INFO and the
    "%s detected" message was at KERN_WARNING.  Now the single message is at
    KERN_WARNING.
    
    Fixes: 26e515713342 ("PCI: Add Downstream Port Containment driver")
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Tested-by: Krzysztof Wilczyński <[email protected]>
    Reviewed-by: Kuppuswamy Sathyanarayanan <[email protected]>
    Reviewed-by: Jonathan Cameron <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
PCI: apple: Use gpiod_set_value_cansleep in probe flow [+ + +]
Author: Hector Martin <[email protected]>
Date:   Tue Apr 1 10:17:11 2025 +0100

    PCI: apple: Use gpiod_set_value_cansleep in probe flow
    
    [ Upstream commit 7334364f9de79a9a236dd0243ba574b8d2876e89 ]
    
    We're allowed to sleep here, so tell the GPIO core by using
    gpiod_set_value_cansleep instead of gpiod_set_value.
    
    Fixes: 1e33888fbe44 ("PCI: apple: Add initial hardware bring-up")
    Signed-off-by: Hector Martin <[email protected]>
    Signed-off-by: Alyssa Rosenzweig <[email protected]>
    Signed-off-by: Marc Zyngier <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Tested-by: Janne Grunau <[email protected]>
    Reviewed-by: Rob Herring (Arm) <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Acked-by: Alyssa Rosenzweig <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: cadence: Fix runtime atomic count underflow [+ + +]
Author: Hans Zhang <[email protected]>
Date:   Sat Apr 19 21:30:58 2025 +0800

    PCI: cadence: Fix runtime atomic count underflow
    
    [ Upstream commit 8805f32a96d3b97cef07999fa6f52112678f7e65 ]
    
    If the call to pci_host_probe() in cdns_pcie_host_setup() fails, PM
    runtime count is decremented in the error path using pm_runtime_put_sync().
    But the runtime count is not incremented by this driver, but only by the
    callers (cdns_plat_pcie_probe/j721e_pcie_probe). And the callers also
    decrement the runtime PM count in their error path. So this leads to the
    below warning from the PM core:
    
            "runtime PM usage count underflow!"
    
    So fix it by getting rid of pm_runtime_put_sync() in the error path and
    directly return the errno.
    
    Fixes: 49e427e6bdd1 ("Merge branch 'pci/host-probe-refactor'")
    Signed-off-by: Hans Zhang <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: endpoint: Retain fixed-size BAR size as well as aligned size [+ + +]
Author: Jerome Brunet <[email protected]>
Date:   Thu Apr 24 10:34:04 2025 +0200

    PCI: endpoint: Retain fixed-size BAR size as well as aligned size
    
    [ Upstream commit 793908d60b8745c386b9f4e29eb702f74ceb0886 ]
    
    When allocating space for an endpoint function on a BAR with a fixed size,
    the size saved in 'struct pci_epf_bar.size' should be the fixed size as
    expected by pci_epc_set_bar().
    
    However, if pci_epf_alloc_space() increased the allocation size to
    accommodate iATU alignment requirements, it previously saved the larger
    aligned size in .size, which broke pci_epc_set_bar().
    
    To solve this, keep the fixed BAR size in .size and save the aligned size
    in a new .aligned_size for use when deallocating it.
    
    Fixes: 2a9a801620ef ("PCI: endpoint: Add support to specify alignment for buffers allocated to BARs")
    Signed-off-by: Jerome Brunet <[email protected]>
    [mani: commit message fixup]
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    [bhelgaas: more specific subject, commit log, wrap comment to match file]
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Niklas Cassel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: Print the actual delay time in pci_bridge_wait_for_secondary_bus() [+ + +]
Author: Wilfred Mallawa <[email protected]>
Date:   Mon Apr 14 10:15:06 2025 +1000

    PCI: Print the actual delay time in pci_bridge_wait_for_secondary_bus()
    
    [ Upstream commit d24eba726aadf8778f2907dd42281c6380b0ccaa ]
    
    Print the delay amount that pcie_wait_for_link_delay() is invoked with
    instead of the hardcoded 1000ms value in the debug info print.
    
    Fixes: 7b3ba09febf4 ("PCI/PM: Shorten pci_bridge_wait_for_secondary_bus() wait time for slow links")
    Signed-off-by: Wilfred Mallawa <[email protected]>
    Signed-off-by: Bjorn Helgaas <[email protected]>
    Reviewed-by: Damien Le Moal <[email protected]>
    Reviewed-by: Kuppuswamy Sathyanarayanan <[email protected]>
    Reviewed-by: Mika Westerberg <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PCI: rcar-gen4: set ep BAR4 fixed size [+ + +]
Author: Jerome Brunet <[email protected]>
Date:   Fri Mar 28 15:30:44 2025 +0100

    PCI: rcar-gen4: set ep BAR4 fixed size
    
    [ Upstream commit b584ab12d59f646b9254b2b16ff197d612fd4935 ]
    
    On rcar-gen4, the ep BAR4 has a fixed size of 256B. Document this
    constraint in the epc features of the platform.
    
    Fixes: e311b3834dfa ("PCI: rcar-gen4: Add endpoint mode support")
    Signed-off-by: Jerome Brunet <[email protected]>
    Signed-off-by: Manivannan Sadhasivam <[email protected]>
    Reviewed-by: Manivannan Sadhasivam <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf build: Warn when libdebuginfod devel files are not available [+ + +]
Author: Arnaldo Carvalho de Melo <[email protected]>
Date:   Tue Apr 8 11:37:20 2025 -0300

    perf build: Warn when libdebuginfod devel files are not available
    
    [ Upstream commit 4fce4b91fd1aabb326c46e237eb4b19ab72598f8 ]
    
    While working on 'perf version --build-options' I noticed that:
    
      $ perf version --build-options
      perf version 6.15.rc1.g312a07a00d31
                       aio: [ on  ]  # HAVE_AIO_SUPPORT
                       bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
             bpf_skeletons: [ on  ]  # HAVE_BPF_SKEL
                debuginfod: [ OFF ]  # HAVE_DEBUGINFOD_SUPPORT
      <SNIP>
    
    And looking at tools/perf/Makefile.config I also noticed that it is not
    opt-in, meaning we will attempt to build with it in all normal cases.
    
    So add the usual warning at build time to let the user know that
    something recommended is missing, now we see:
    
      Makefile.config:563: No elfutils/debuginfod.h found, no debuginfo server support, please install elfutils-debuginfod-client-devel or equivalent
    
    And after following the recommendation:
    
      $ perf check feature debuginfod
                debuginfod: [ on  ]  # HAVE_DEBUGINFOD_SUPPORT
      $ ldd ~/bin/perf | grep debuginfo
            libdebuginfod.so.1 => /lib64/libdebuginfod.so.1 (0x00007fee5cf5f000)
      $
    
    With this feature on several perf tools will fetch what is needed and
    not require all the contents of the debuginfo packages, for instance:
    
      # rpm -qa | grep kernel-debuginfo
      # pahole --running_kernel_vmlinux
      pahole: couldn't find a vmlinux that matches the running kernel
      HINT: Maybe you're inside a container or missing a debuginfo package?
      #
      # perf trace -e open* perf probe --vars icmp_rcv
          0.000 ( 0.005 ms): perf/97391 openat(dfd: CWD, filename: "/etc/ld.so.cache", flags: RDONLY|CLOEXEC) = 3
          0.014 ( 0.004 ms): perf/97391 openat(dfd: CWD, filename: "/lib64/libm.so.6", flags: RDONLY|CLOEXEC) = 3
      <SNIP>
      32130.100 ( 0.008 ms): perf/97391 openat(dfd: CWD, filename: "/root/.cache/debuginfod_client/aa3c82b4a13f9c0e0301bebb20fe958c4db6f362/debuginfo") = 3
      <SNIP>
      Available variables at icmp_rcv
            @<icmp_rcv+0>
                    struct sk_buff* skb
      <SNIP>
      #
      # pahole --running_kernel_vmlinux
      /root/.cache/debuginfod_client/aa3c82b4a13f9c0e0301bebb20fe958c4db6f362/debuginfo
      # file /root/.cache/debuginfod_client/aa3c82b4a13f9c0e0301bebb20fe958c4db6f362/debuginfo
      /root/.cache/debuginfod_client/aa3c82b4a13f9c0e0301bebb20fe958c4db6f362/debuginfo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=aa3c82b4a13f9c0e0301bebb20fe958c4db6f362, with debug_info, not stripped
      # ls -la /root/.cache/debuginfod_client/aa3c82b4a13f9c0e0301bebb20fe958c4db6f362/debuginfo
      -r--------. 1 root root 475401512 Mar 27 21:00 /root/.cache/debuginfod_client/aa3c82b4a13f9c0e0301bebb20fe958c4db6f362/debuginfo
      #
    
    Then, cached:
    
      # perf stat --null perf probe --vars icmp_rcv
      Available variables at icmp_rcv
            @<icmp_rcv+0>
                    struct sk_buff* skb
    
       Performance counter stats for 'perf probe --vars icmp_rcv':
    
           0.671389041 seconds time elapsed
    
           0.519176000 seconds user
           0.150860000 seconds sys
    
    Fixes: c7a14fdcb3fa7736 ("perf build-ids: Fall back to debuginfod query if debuginfo not found")
    Tested-by: Ingo Molnar <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Dmitriy Vyukov <[email protected]>
    Cc: Howard Chu <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Frank Ch. Eigler <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [ Folded patch from Ingo to have the debian/ubuntu devel package added build warning message ]
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf callchain: Always populate the addr_location map when adding IP [+ + +]
Author: Ian Rogers <[email protected]>
Date:   Wed May 28 21:39:37 2025 -0700

    perf callchain: Always populate the addr_location map when adding IP
    
    [ Upstream commit a913ef6fd883c05bd6538ed21ee1e773f0d750b7 ]
    
    Dropping symbols also meant the callchain maps wasn't populated, but
    the callchain map is needed to find the DSO.
    
    Plumb the symbols option better, falling back to thread__find_map()
    rather than thread__find_symbol() when symbols are disabled.
    
    Fixes: 02b2705017d2e5ad ("perf callchain: Allow symbols to be optional when resolving a callchain")
    Signed-off-by: Ian Rogers <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Andi Kleen <[email protected]>
    Cc: Athira Rajeev <[email protected]>
    Cc: Ben Gainey <[email protected]>
    Cc: Chaitanya S Prakash <[email protected]>
    Cc: Charlie Jenkins <[email protected]>
    Cc: Chun-Tse Shao <[email protected]>
    Cc: Colin Ian King <[email protected]>
    Cc: Dmitriy Vyukov <[email protected]>
    Cc: Dr. David Alan Gilbert <[email protected]>
    Cc: Graham Woodward <[email protected]>
    Cc: Howard Chu <[email protected]>
    Cc: Ilkka Koskinen <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: James Clark <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: John Garry <[email protected]>
    Cc: Kajol Jain <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Krzysztof Łopatowski <[email protected]>
    Cc: Leo Yan <[email protected]>
    Cc: Levi Yun <[email protected]>
    Cc: Li Huafei <[email protected]>
    Cc: [email protected]
    Cc: Mark Rutland <[email protected]>
    Cc: Martin Liška <[email protected]>
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Matt Fleming <[email protected]>
    Cc: Mike Leach <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Ravi Bangoria <[email protected]>
    Cc: Song Liu <[email protected]>
    Cc: Steinar H. Gunderson <[email protected]>
    Cc: Stephen Brennan <[email protected]>
    Cc: Steve Clevenger <[email protected]>
    Cc: Thomas Falcon <[email protected]>
    Cc: Veronika Molnarova <[email protected]>
    Cc: Weilin Wang <[email protected]>
    Cc: Will Deacon <[email protected]>
    Cc: Yicong Yang <[email protected]>
    Cc: Yujie Liu <[email protected]>
    Cc: Zhongqiu Han <[email protected]>
    Cc: Zixian Cai <[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 intel-pt: Fix PEBS-via-PT data_src [+ + +]
Author: Adrian Hunter <[email protected]>
Date:   Mon May 12 12:39:30 2025 +0300

    perf intel-pt: Fix PEBS-via-PT data_src
    
    [ Upstream commit e00eac6b5b6d956f38d8880c44bf7fd9954063c3 ]
    
    The Fixes commit did not add support for decoding PEBS-via-PT data_src.
    Fix by adding support.
    
    PEBS-via-PT is a feature of some E-core processors, starting with
    processors based on Tremont microarchitecture. Because the kernel only
    supports Intel PT features that are on all processors, there is no support
    for PEBS-via-PT on hybrids.
    
    Currently that leaves processors based on Tremont, Gracemont and Crestmont,
    however there are no events on Tremont that produce data_src information,
    and for Gracemont and Crestmont there are only:
    
            mem-loads       event=0xd0,umask=0x5,ldlat=3
            mem-stores      event=0xd0,umask=0x6
    
    Affected processors include Alder Lake N (Gracemont), Sierra Forest
    (Crestmont) and Grand Ridge (Crestmont).
    
    Example:
    
     # perf record -d -e intel_pt/branch=0/ -e mem-loads/aux-output/pp uname
    
     Before:
    
      # perf.before script --itrace=o -Fdata_src
                0 |OP No|LVL N/A|SNP N/A|TLB N/A|LCK No|BLK  N/A
                0 |OP No|LVL N/A|SNP N/A|TLB N/A|LCK No|BLK  N/A
    
     After:
    
      # perf script --itrace=o -Fdata_src
      10268100142 |OP LOAD|LVL L1 hit|SNP None|TLB L1 or L2 hit|LCK No|BLK  N/A
      10450100442 |OP LOAD|LVL L2 hit|SNP None|TLB L2 miss|LCK No|BLK  N/A
    
    Fixes: 975846eddf907297 ("perf intel-pt: Add memory information to synthesized PEBS sample")
    Reviewed-by: Kan Liang <[email protected]>
    Signed-off-by: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Namhyung Kim <[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 record: Fix incorrect --user-regs comments [+ + +]
Author: Dapeng Mi <[email protected]>
Date:   Thu Apr 3 06:08:10 2025 +0000

    perf record: Fix incorrect --user-regs comments
    
    [ Upstream commit a4a859eb6704a8aa46aa1cec5396c8d41383a26b ]
    
    The comment of "--user-regs" option is not correct, fix it.
    
    "on interrupt," -> "in user space,"
    
    Fixes: 84c417422798c897 ("perf record: Support direct --user-regs arguments")
    Reviewed-by: Ian Rogers <[email protected]>
    Signed-off-by: Dapeng Mi <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Andi Kleen <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Peter Zijlstra <[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 scripts python: exported-sql-viewer.py: Fix pattern matching with Python 3 [+ + +]
Author: Adrian Hunter <[email protected]>
Date:   Mon May 12 12:39:32 2025 +0300

    perf scripts python: exported-sql-viewer.py: Fix pattern matching with Python 3
    
    [ Upstream commit 17e548405a81665fd14cee960db7d093d1396400 ]
    
    The script allows the user to enter patterns to find symbols.
    
    The pattern matching characters are converted for use in SQL.
    
    For PostgreSQL the conversion involves using the Python maketrans()
    method which is slightly different in Python 3 compared with Python 2.
    
    Fix to work in Python 3.
    
    Fixes: beda0e725e5f06ac ("perf script python: Add Python3 support to exported-sql-viewer.py")
    Signed-off-by: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Tony Jones <[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 symbol-minimal: Fix double free in filename__read_build_id [+ + +]
Author: Ian Rogers <[email protected]>
Date:   Thu May 1 00:00:03 2025 -0700

    perf symbol-minimal: Fix double free in filename__read_build_id
    
    [ Upstream commit fa9c4977fbfbca182f9e410d57b3f98356a9d917 ]
    
    Running the "perf script task-analyzer tests" with address sanitizer
    showed a double free:
    ```
    FAIL: "test_csv_extended_times" Error message: "Failed to find required string:'Out-Out;'."
    =================================================================
    ==19190==ERROR: AddressSanitizer: attempting double-free on 0x50b000017b10 in thread T0:
        #0 0x55da9601c78a in free (perf+0x26078a) (BuildId: e7ef50e08970f017a96fde6101c5e2491acc674a)
        #1 0x55da96640c63 in filename__read_build_id tools/perf/util/symbol-minimal.c:221:2
    
    0x50b000017b10 is located 0 bytes inside of 112-byte region [0x50b000017b10,0x50b000017b80)
    freed by thread T0 here:
        #0 0x55da9601ce40 in realloc (perf+0x260e40) (BuildId: e7ef50e08970f017a96fde6101c5e2491acc674a)
        #1 0x55da96640ad6 in filename__read_build_id tools/perf/util/symbol-minimal.c:204:10
    
    previously allocated by thread T0 here:
        #0 0x55da9601ca23 in malloc (perf+0x260a23) (BuildId: e7ef50e08970f017a96fde6101c5e2491acc674a)
        #1 0x55da966407e7 in filename__read_build_id tools/perf/util/symbol-minimal.c:181:9
    
    SUMMARY: AddressSanitizer: double-free (perf+0x26078a) (BuildId: e7ef50e08970f017a96fde6101c5e2491acc674a) in free
    ==19190==ABORTING
    FAIL: "invocation of perf script report task-analyzer --csv-summary csvsummary --summary-extended command failed" Error message: ""
    FAIL: "test_csvsummary_extended" Error message: "Failed to find required string:'Out-Out;'."
    ---- end(-1) ----
    132: perf script task-analyzer tests                                 : FAILED!
    ```
    
    The buf_size if always set to phdr->p_filesz, but that may be 0
    causing a free and realloc to return NULL. This is treated in
    filename__read_build_id like a failure and the buffer is freed again.
    
    To avoid this problem only grow buf, meaning the buf_size will never
    be 0. This also reduces the number of memory (re)allocations.
    
    Fixes: b691f64360ecec49 ("perf symbols: Implement poor man's ELF parser")
    Signed-off-by: Ian Rogers <[email protected]>
    Acked-by: Namhyung Kim <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Peter Zijlstra <[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 symbol: Fix use-after-free in filename__read_build_id [+ + +]
Author: Ian Rogers <[email protected]>
Date:   Tue May 27 20:26:31 2025 -0700

    perf symbol: Fix use-after-free in filename__read_build_id
    
    [ Upstream commit fef8f648bb47726d96a5701fe31ed606268da73d ]
    
    The same buf is used for the program headers and reading notes. As the
    notes memory may be reallocated then this corrupts the memory pointed
    to by the phdr. Using the same buffer is in any case a logic
    error. Rather than deal with the duplicated code, introduce an elf32
    boolean and a union for either the elf32 or elf64 headers that are in
    use. Let the program headers have their own memory and grow the buffer
    for notes as necessary.
    
    Before `perf list -j` compiled with asan would crash with:
    ```
    ==4176189==ERROR: AddressSanitizer: heap-use-after-free on address 0x5160000070b8 at pc 0x555d3b15075b bp 0x7ffebb5a8090 sp 0x7ffebb5a8088
    READ of size 8 at 0x5160000070b8 thread T0
        #0 0x555d3b15075a in filename__read_build_id tools/perf/util/symbol-minimal.c:212:25
        #1 0x555d3ae43aff in filename__sprintf_build_id tools/perf/util/build-id.c:110:8
    ...
    
    0x5160000070b8 is located 312 bytes inside of 560-byte region [0x516000006f80,0x5160000071b0)
    freed by thread T0 here:
        #0 0x555d3ab21840 in realloc (perf+0x264840) (BuildId: 12dff2f6629f738e5012abdf0e90055518e70b5e)
        #1 0x555d3b1506e7 in filename__read_build_id tools/perf/util/symbol-minimal.c:206:11
    ...
    
    previously allocated by thread T0 here:
        #0 0x555d3ab21423 in malloc (perf+0x264423) (BuildId: 12dff2f6629f738e5012abdf0e90055518e70b5e)
        #1 0x555d3b1503a2 in filename__read_build_id tools/perf/util/symbol-minimal.c:182:9
    ...
    ```
    
    Note: this bug is long standing and not introduced by the other asan
    fix in commit fa9c4977fbfb ("perf symbol-minimal: Fix double free in
    filename__read_build_id").
    
    Fixes: b691f64360ecec49 ("perf symbols: Implement poor man's ELF parser")
    Signed-off-by: Ian Rogers <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Cc: Mark Rutland <[email protected]>
    Cc: Gary Guo <[email protected]>
    Cc: Alex Gaynor <[email protected]>
    Cc: Boqun Feng <[email protected]>
    Cc: Howard Chu <[email protected]>
    Cc: Alice Ryhl <[email protected]>
    Cc: Dmitry Vyukov <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Weilin Wang <[email protected]>
    Cc: Andreas Hindborg <[email protected]>
    Cc: Arnaldo Carvalho de Melo <[email protected]>
    Cc: Danilo Krummrich <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Miguel Ojeda <[email protected]>
    Cc: James Clark <[email protected]>
    Cc: Jiapeng Chong <[email protected]>
    Cc: Andi Kleen <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Stephen Brennan <[email protected]>
    Cc: Benno Lossin <[email protected]>
    Cc: Björn Roy Baron <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Trevor Gross <[email protected]>
    Cc: [email protected]
    Cc: [email protected]
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf tests switch-tracking: Fix timestamp comparison [+ + +]
Author: Leo Yan <[email protected]>
Date:   Mon Mar 31 18:27:59 2025 +0100

    perf tests switch-tracking: Fix timestamp comparison
    
    [ Upstream commit 628e124404b3db5e10e17228e680a2999018ab33 ]
    
    The test might fail on the Arm64 platform with the error:
    
      # perf test -vvv "Track with sched_switch"
      Missing sched_switch events
      #
    
    The issue is caused by incorrect handling of timestamp comparisons. The
    comparison result, a signed 64-bit value, was being directly cast to an
    int, leading to incorrect sorting for sched events.
    
    The case does not fail everytime, usually I can trigger the failure
    after run 20 ~ 30 times:
    
      # while true; do perf test "Track with sched_switch"; done
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : FAILED!
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : FAILED!
      106: Track with sched_switch                                         : Ok
      106: Track with sched_switch                                         : Ok
    
    I used cross compiler to build Perf tool on my host machine and tested on
    Debian / Juno board.  Generally, I think this issue is not very specific
    to GCC versions.  As both internal CI and my local env can reproduce the
    issue.
    
    My Host Build compiler:
    
      # aarch64-linux-gnu-gcc --version
      aarch64-linux-gnu-gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
    
    Juno Board:
    
      # lsb_release -a
      No LSB modules are available.
      Distributor ID: Debian
      Description:    Debian GNU/Linux 12 (bookworm)
      Release:        12
      Codename:       bookworm
    
    Fix this by explicitly returning 0, 1, or -1 based on whether the result
    is zero, positive, or negative.
    
    Fixes: d44bc558297222d9 ("perf tests: Add a test for tracking with sched_switch")
    Reviewed-by: Ian Rogers <[email protected]>
    Signed-off-by: Leo Yan <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: James Clark <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Namhyung Kim <[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 tests: Fix 'perf report' tests installation [+ + +]
Author: Michael Petlan <[email protected]>
Date:   Mon Jan 13 19:26:00 2025 +0100

    perf tests: Fix 'perf report' tests installation
    
    [ Upstream commit 4bfe27140edf8dd1322326c79f5ae8d29ff7e43d ]
    
    There was a copy-paste mistake in the installation commands.
    
    Also, we need to install stderr-whitelist.txt file, which contains
    allowed messages that are printed on stderr and should not cause test
    fail.
    
    Fixes: 097fe67df1aa9cc7 ("perf testsuite: Install perf-report tests in the 'make install-tests -C tools/perf' target")
    Signed-off-by: Michael Petlan <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Veronika Molnarova <[email protected]>
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf trace: Always print return value for syscalls returning a pid [+ + +]
Author: Anubhav Shelat <[email protected]>
Date:   Thu Apr 3 12:04:12 2025 -0400

    perf trace: Always print return value for syscalls returning a pid
    
    [ Upstream commit c7a48ea9b919e2fa0e4a1d9938fdb03e9afe276c ]
    
    The syscalls that were consistently observed were set_robust_list and
    rseq. This is because perf cannot find their child process.
    
    This change ensures that the return value is always printed.
    
    Before:
         0.256 ( 0.001 ms): set_robust_list(head: 0x7f09c77dba20, len: 24)                        =
         0.259 ( 0.001 ms): rseq(rseq: 0x7f09c77dc0e0, rseq_len: 32, sig: 1392848979)             =
    After:
         0.270 ( 0.002 ms): set_robust_list(head: 0x7f0bb14a6a20, len: 24)                        = 0
         0.273 ( 0.002 ms): rseq(rseq: 0x7f0bb14a70e0, rseq_len: 32, sig: 1392848979)             = 0
    
    Committer notes:
    
    As discussed in the thread in the Link: tag below, these two don't
    return a pid, but for syscalls returning one, we need to print the
    result and if we manage to find the children in 'perf trace' data
    structures, then print its name as well.
    
    Fixes: 11c8e39f5133aed9 ("perf trace: Infrastructure to show COMM strings for syscalls returning PIDs")
    Reviewed-by: Howard Chu <[email protected]>
    Signed-off-by: Anubhav Shelat <[email protected]>
    Acked-by: Namhyung Kim <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Dapeng Mi <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: James Clark <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Michael Petlan <[email protected]>
    Cc: Peter Zijlstra <[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 trace: Fix leaks of 'struct thread' in set_filter_loop_pids() [+ + +]
Author: Namhyung Kim <[email protected]>
Date:   Wed Apr 2 22:42:13 2025 -0700

    perf trace: Fix leaks of 'struct thread' in set_filter_loop_pids()
    
    [ Upstream commit 30d20fb1f84ad5c92706fe2c6cbb2d4cc293e671 ]
    
    I've found some leaks from 'perf trace -a'.
    
    It seems there are more leaks but this is what I can find for now.
    
    Fixes: 082ab9a18e532864 ("perf trace: Filter out 'sshd' in the tracer ancestry in syswide tracing")
    Reviewed-by: Howard Chu <[email protected]>
    Signed-off-by: Namhyung Kim <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [ split from a larget patch ]
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

perf trace: Set errpid to false for rseq and set_robust_list [+ + +]
Author: Anubhav Shelat <[email protected]>
Date:   Thu May 29 10:33:35 2025 -0400

    perf trace: Set errpid to false for rseq and set_robust_list
    
    [ Upstream commit 8c56bfe53bd881c7b598c54a3a06216743c57bbc ]
    
    The 'rseq' and 'set_robust_list' syscalls don't return a pid, so set
    errpid for both to false.
    
    Fixes: 0c1019e3463b263a ("perf trace: Mark the 'rseq' arg in the rseq syscall as coming from user space")
    Fixes: 1de5b5dcb8353f36 ("perf trace: Mark the 'head' arg in the set_robust_list syscall as coming from user space")
    Signed-off-by: Anubhav Shelat <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Alexander Shishkin <[email protected]>
    Cc: Dapeng Mi <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: James Clark <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Michael Petlan <[email protected]>
    Cc: Namhyung Kim <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [ Remove explicit .errpid = false, omitting its initialization zeroes it, as noted by Namhyung ]
    Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf ui browser hists: Set actions->thread before calling do_zoom_thread() [+ + +]
Author: Arnaldo Carvalho de Melo <[email protected]>
Date:   Wed Apr 9 21:58:19 2025 -0300

    perf ui browser hists: Set actions->thread before calling do_zoom_thread()
    
    [ Upstream commit 1741189d843a1d5ef38538bc52a3760e2e46cb2e ]
    
    In 7cecb7fe8388d5c3 ("perf hists: Move sort__has_comm into struct
    perf_hpp_list") it assumes that act->thread is set prior to calling
    do_zoom_thread().
    
    This doesn't happen when we use ESC or the Left arrow key to Zoom out of
    a specific thread, making this operation not to work and we get stuck
    into the thread zoom.
    
    In 6422184b087ff435 ("perf hists browser: Simplify zooming code using
    pstack_peek()") it says no need to set actions->thread, and at that
    point that was true, but in 7cecb7fe8388d5c3 a actions->thread == NULL
    check was added before the zoom out of thread could kick in.
    
    We can zoom out using the alternative 't' thread zoom toggle hotkey to
    finally set actions->thread before calling do_zoom_thread() and zoom
    out, but lets also fix the ESC/Zoom out of thread case.
    
    Fixes: 7cecb7fe8388d5c3 ("perf hists: Move sort__has_comm into struct perf_hpp_list")
    Reported-by: Ingo Molnar <[email protected]>
    Tested-by: Ingo Molnar <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Ian Rogers <[email protected]>
    Cc: James Clark <[email protected]>
    Cc: Jiri Olsa <[email protected]>
    Cc: Kan Liang <[email protected]>
    Cc: Namhyung Kim <[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/amlogic: Replace smp_processor_id() with raw_smp_processor_id() in meson_ddr_pmu_create() [+ + +]
Author: Anand Moon <[email protected]>
Date:   Mon Apr 7 12:02:03 2025 +0530

    perf/amlogic: Replace smp_processor_id() with raw_smp_processor_id() in meson_ddr_pmu_create()
    
    [ Upstream commit 097469a2b0f12b91b4f27b9e9e4f2c46484cde30 ]
    
    The Amlogic DDR PMU driver meson_ddr_pmu_create() function incorrectly uses
    smp_processor_id(), which assumes disabled preemption. This leads to kernel
    warnings during module loading because meson_ddr_pmu_create() can be called
    in a preemptible context.
    
    Following kernel warning and stack trace:
    [   31.745138] [   T2289] BUG: using smp_processor_id() in preemptible [00000000] code: (udev-worker)/2289
    [   31.745154] [   T2289] caller is debug_smp_processor_id+0x28/0x38
    [   31.745172] [   T2289] CPU: 4 UID: 0 PID: 2289 Comm: (udev-worker) Tainted: GW 6.14.0-0-MANJARO-ARM #1 59519addcbca6ba8de735e151fd7b9e97aac7ff0
    [   31.745181] [   T2289] Tainted: [W]=WARN
    [   31.745183] [   T2289] Hardware name: Hardkernel ODROID-N2Plus (DT)
    [   31.745188] [   T2289] Call trace:
    [   31.745191] [   T2289]  show_stack+0x28/0x40 (C)
    [   31.745199] [   T2289]  dump_stack_lvl+0x4c/0x198
    [   31.745205] [   T2289]  dump_stack+0x20/0x50
    [   31.745209] [   T2289]  check_preemption_disabled+0xec/0xf0
    [   31.745213] [   T2289]  debug_smp_processor_id+0x28/0x38
    [   31.745216] [   T2289]  meson_ddr_pmu_create+0x200/0x560 [meson_ddr_pmu_g12 8095101c49676ad138d9961e3eddaee10acca7bd]
    [   31.745237] [   T2289]  g12_ddr_pmu_probe+0x20/0x38 [meson_ddr_pmu_g12 8095101c49676ad138d9961e3eddaee10acca7bd]
    [   31.745246] [   T2289]  platform_probe+0x98/0xe0
    [   31.745254] [   T2289]  really_probe+0x144/0x3f8
    [   31.745258] [   T2289]  __driver_probe_device+0xb8/0x180
    [   31.745261] [   T2289]  driver_probe_device+0x54/0x268
    [   31.745264] [   T2289]  __driver_attach+0x11c/0x288
    [   31.745267] [   T2289]  bus_for_each_dev+0xfc/0x160
    [   31.745274] [   T2289]  driver_attach+0x34/0x50
    [   31.745277] [   T2289]  bus_add_driver+0x160/0x2b0
    [   31.745281] [   T2289]  driver_register+0x78/0x120
    [   31.745285] [   T2289]  __platform_driver_register+0x30/0x48
    [   31.745288] [   T2289]  init_module+0x30/0xfe0 [meson_ddr_pmu_g12 8095101c49676ad138d9961e3eddaee10acca7bd]
    [   31.745298] [   T2289]  do_one_initcall+0x11c/0x438
    [   31.745303] [   T2289]  do_init_module+0x68/0x228
    [   31.745311] [   T2289]  load_module+0x118c/0x13a8
    [   31.745315] [   T2289]  __arm64_sys_finit_module+0x274/0x390
    [   31.745320] [   T2289]  invoke_syscall+0x74/0x108
    [   31.745326] [   T2289]  el0_svc_common+0x90/0xf8
    [   31.745330] [   T2289]  do_el0_svc+0x2c/0x48
    [   31.745333] [   T2289]  el0_svc+0x60/0x150
    [   31.745337] [   T2289]  el0t_64_sync_handler+0x80/0x118
    [   31.745341] [   T2289]  el0t_64_sync+0x1b8/0x1c0
    
    Changes replaces smp_processor_id() with raw_smp_processor_id() to
    ensure safe CPU ID retrieval in preemptible contexts.
    
    Cc: Jiucheng Xu <[email protected]>
    Fixes: 2016e2113d35 ("perf/amlogic: Add support for Amlogic meson G12 SoC DDR PMU driver")
    Signed-off-by: Anand Moon <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
perf/core: Fix broken throttling when max_samples_per_tick=1 [+ + +]
Author: Qing Wang <[email protected]>
Date:   Sat Apr 5 22:16:35 2025 +0800

    perf/core: Fix broken throttling when max_samples_per_tick=1
    
    [ Upstream commit f51972e6f8b9a737b2b3eb588069acb538fa72de ]
    
    According to the throttling mechanism, the pmu interrupts number can not
    exceed the max_samples_per_tick in one tick. But this mechanism is
    ineffective when max_samples_per_tick=1, because the throttling check is
    skipped during the first interrupt and only performed when the second
    interrupt arrives.
    
    Perhaps this bug may cause little influence in one tick, but if in a
    larger time scale, the problem can not be underestimated.
    
    When max_samples_per_tick = 1:
    Allowed-interrupts-per-second max-samples-per-second  default-HZ  ARCH
    200                           100                     100         X86
    500                           250                     250         ARM64
    ...
    Obviously, the pmu interrupt number far exceed the user's expect.
    
    Fixes: e050e3f0a71b ("perf: Fix broken interrupt rate throttling")
    Signed-off-by: Qing Wang <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
perf/x86/amd/uncore: Prevent UMC counters from saturating [+ + +]
Author: Sandipan Das <[email protected]>
Date:   Fri Apr 18 09:13:03 2025 +0530

    perf/x86/amd/uncore: Prevent UMC counters from saturating
    
    [ Upstream commit 2492e5aba2be064d0604ae23ae0770ecc0168192 ]
    
    Unlike L3 and DF counters, UMC counters (PERF_CTRs) set the Overflow bit
    (bit 48) and saturate on overflow. A subsequent pmu->read() of the event
    reports an incorrect accumulated count as there is no difference between
    the previous and the current values of the counter.
    
    To avoid this, inspect the current counter value and proactively reset
    the corresponding PERF_CTR register on every pmu->read(). Combined with
    the periodic reads initiated by the hrtimer, the counters never get a
    chance saturate but the resolution reduces to 47 bits.
    
    Fixes: 25e56847821f ("perf/x86/amd/uncore: Add memory controller support")
    Signed-off-by: Sandipan Das <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Reviewed-by: Song Liu <[email protected]>
    Acked-by: Peter Zijlstra <[email protected]>
    Link: https://lore.kernel.org/r/dee9c8af2c6d66814cf4c6224529c144c620cf2c.1744906694.git.sandipan.das@amd.com
    Signed-off-by: Sasha Levin <[email protected]>

perf/x86/amd/uncore: Remove unused 'struct amd_uncore_ctx::node' member [+ + +]
Author: Sandipan Das <[email protected]>
Date:   Fri Apr 18 09:12:59 2025 +0530

    perf/x86/amd/uncore: Remove unused 'struct amd_uncore_ctx::node' member
    
    [ Upstream commit 4f81cc2d1bf91a49d33eb6578b58db2518deef01 ]
    
    Fixes: d6389d3ccc13 ("perf/x86/amd/uncore: Refactor uncore management")
    Signed-off-by: Sandipan Das <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Acked-by: Peter Zijlstra <[email protected]>
    Link: https://lore.kernel.org/r/30f9254c2de6c4318dd0809ef85a1677f68eef10.1744906694.git.sandipan.das@amd.com
    Signed-off-by: Sasha Levin <[email protected]>

 
perf: arm-ni: Fix missing platform_set_drvdata() [+ + +]
Author: Hongbo Yao <[email protected]>
Date:   Tue Apr 1 13:42:48 2025 +0800

    perf: arm-ni: Fix missing platform_set_drvdata()
    
    [ Upstream commit fc5106088d6db75df61308ef6de314d1f7959646 ]
    
    Add missing platform_set_drvdata in arm_ni_probe(), otherwise
    calling platform_get_drvdata() in remove returns NULL.
    
    Fixes: 4d5a7680f2b4 ("perf: Add driver for Arm NI-700 interconnect PMU")
    Signed-off-by: Hongbo Yao <[email protected]>
    Reviewed-by: Robin Murphy <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

perf: arm-ni: Unregister PMUs on probe failure [+ + +]
Author: Hongbo Yao <[email protected]>
Date:   Thu Apr 3 15:09:18 2025 +0800

    perf: arm-ni: Unregister PMUs on probe failure
    
    [ Upstream commit 7f57afde6a44d9e044885e1125034edd4fda02e8 ]
    
    When a resource allocation fails in one clock domain of an NI device,
    we need to properly roll back all previously registered perf PMUs in
    other clock domains of the same device.
    
    Otherwise, it can lead to kernel panics.
    
    Calling arm_ni_init+0x0/0xff8 [arm_ni] @ 2374
    arm-ni ARMHCB70:00: Failed to request PMU region 0x1f3c13000
    arm-ni ARMHCB70:00: probe with driver arm-ni failed with error -16
    list_add corruption: next->prev should be prev (fffffd01e9698a18),
    but was 0000000000000000. (next=ffff10001a0decc8).
    pstate: 6340009 (nZCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--)
    pc : list_add_valid_or_report+0x7c/0xb8
    lr : list_add_valid_or_report+0x7c/0xb8
    Call trace:
     __list_add_valid_or_report+0x7c/0xb8
     perf_pmu_register+0x22c/0x3a0
     arm_ni_probe+0x554/0x70c [arm_ni]
     platform_probe+0x70/0xe8
     really_probe+0xc6/0x4d8
     driver_probe_device+0x48/0x170
     __driver_attach+0x8e/0x1c0
     bus_for_each_dev+0x64/0xf0
     driver_add+0x138/0x260
     bus_add_driver+0x68/0x138
     __platform_driver_register+0x2c/0x40
     arm_ni_init+0x14/0x2a [arm_ni]
     do_init_module+0x36/0x298
    ---[ end trace 0000000000000000 ]---
    Kernel panic - not syncing: Oops - BUG: Fatal exception
    SMP: stopping secondary CPUs
    
    Fixes: 4d5a7680f2b4 ("perf: Add driver for Arm NI-700 interconnect PMU")
    Signed-off-by: Hongbo Yao <[email protected]>
    Reviewed-by: Robin Murphy <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

perf: Ensure bpf_perf_link path is properly serialized [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Fri Jan 17 10:54:50 2025 +0100

    perf: Ensure bpf_perf_link path is properly serialized
    
    [ Upstream commit 7ed9138a72829d2035ecbd8dbd35b1bc3c137c40 ]
    
    Ravi reported that the bpf_perf_link_attach() usage of
    perf_event_set_bpf_prog() is not serialized by ctx->mutex, unlike the
    PERF_EVENT_IOC_SET_BPF case.
    
    Reported-by: Ravi Bangoria <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Reviewed-by: Ravi Bangoria <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
phy: qcom-qmp-usb: Fix an NULL vs IS_ERR() bug [+ + +]
Author: Chenyuan Yang <[email protected]>
Date:   Mon Apr 14 07:50:50 2025 -0500

    phy: qcom-qmp-usb: Fix an NULL vs IS_ERR() bug
    
    [ Upstream commit d14402a38c2d868cacb1facaf9be908ca6558e59 ]
    
    The qmp_usb_iomap() helper function currently returns the raw result of
    devm_ioremap() for non-exclusive mappings. Since devm_ioremap() may return
    a NULL pointer and the caller only checks error pointers with IS_ERR(),
    NULL could bypass the check and lead to an invalid dereference.
    
    Fix the issue by checking if devm_ioremap() returns NULL. When it does,
    qmp_usb_iomap() now returns an error pointer via IOMEM_ERR_PTR(-ENOMEM),
    ensuring safe and consistent error handling.
    
    Signed-off-by: Chenyuan Yang <[email protected]>
    Fixes: a5d6b1ac56cb ("phy: qcom-qmp-usb: fix memleak on probe deferral")
    CC: Johan Hovold <[email protected]>
    CC: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Johan Hovold <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: rockchip: samsung-hdptx: Do no set rk_hdptx_phy->rate in case of errors [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Tue Mar 18 14:35:38 2025 +0200

    phy: rockchip: samsung-hdptx: Do no set rk_hdptx_phy->rate in case of errors
    
    [ Upstream commit 1f4d382769e3b38dfc498c806811dae856e40f31 ]
    
    Ensure rk_hdptx_ropll_tmds_cmn_config() updates hdptx->rate only after
    all the other operations have been successful.
    
    Fixes: c4b09c562086 ("phy: phy-rockchip-samsung-hdptx: Add clock provider support")
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: rockchip: samsung-hdptx: Fix clock ratio setup [+ + +]
Author: Cristian Ciocaltea <[email protected]>
Date:   Tue Mar 18 14:35:37 2025 +0200

    phy: rockchip: samsung-hdptx: Fix clock ratio setup
    
    [ Upstream commit 0422253ac1919fea8292381c85f11a9decff1bb1 ]
    
    The switch from 1/10 to 1/40 clock ratio must happen when exceeding the
    340 MHz rate limit of HDMI 1.4, i.e. when entering the HDMI 2.0 domain,
    and not before.
    
    Therefore, use the correct comparison operator '>' instead of '>=' when
    checking the max rate.  While at it, introduce a define for this rate
    limit constant.
    
    Fixes: 553be2830c5f ("phy: rockchip: Add Samsung HDMI/eDP Combo PHY driver")
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Cristian Ciocaltea <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pinctrl: at91: Fix possible out-of-boundary access [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Thu May 8 23:08:07 2025 +0300

    pinctrl: at91: Fix possible out-of-boundary access
    
    [ Upstream commit 762ef7d1e6eefad9896560bfcb9bcf7f1b6df9c1 ]
    
    at91_gpio_probe() doesn't check that given OF alias is not available or
    something went wrong when trying to get it. This might have consequences
    when accessing gpio_chips array with that value as an index. Note, that
    BUG() can be compiled out and hence won't actually perform the required
    checks.
    
    Fixes: 6732ae5cb47c ("ARM: at91: add pinctrl support")
    Signed-off-by: Andy Shevchenko <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]/
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: qcom: pinctrl-qcm2290: Add missing pins [+ + +]
Author: Wojciech Slenska <[email protected]>
Date:   Fri May 23 12:14:37 2025 +0200

    pinctrl: qcom: pinctrl-qcm2290: Add missing pins
    
    [ Upstream commit 315345610faee8a0568b522dba9e35067d1732ab ]
    
    Added the missing pins to the qcm2290_pins table.
    
    Signed-off-by: Wojciech Slenska <[email protected]>
    Fixes: 48e049ef1238 ("pinctrl: qcom: Add QCM2290 pinctrl driver")
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Linus Walleij <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: samsung: add dedicated SoC eint suspend/resume callbacks [+ + +]
Author: Peter Griffin <[email protected]>
Date:   Wed Apr 2 16:17:31 2025 +0100

    pinctrl: samsung: add dedicated SoC eint suspend/resume callbacks
    
    [ Upstream commit 77ac6b742eba063a5b6600cda67834a7a212281a ]
    
    Refactor the existing platform specific suspend/resume callback
    so that each SoC variant has it's own callback containing the
    SoC specific logic.
    
    This allows exynosautov920 to have a dedicated function for using
    eint_con_offset and eint_mask_offset. Also it is easily extendable
    for gs101 which will need dedicated logic for handling the varying
    register offset of fltcon0 via eint_fltcon_offset.
    
    Reviewed-by: André Draszik <[email protected]>
    Signed-off-by: Peter Griffin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Stable-dep-of: bdbe0a0f7100 ("pinctrl: samsung: add gs101 specific eint suspend/resume callbacks")
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: samsung: add gs101 specific eint suspend/resume callbacks [+ + +]
Author: Peter Griffin <[email protected]>
Date:   Wed Apr 2 16:17:32 2025 +0100

    pinctrl: samsung: add gs101 specific eint suspend/resume callbacks
    
    [ Upstream commit bdbe0a0f71003b997d6a2dbe4bc7b5b0438207c7 ]
    
    gs101 differs to other SoCs in that fltcon1 register doesn't
    always exist. Additionally the offset of fltcon0 is not fixed
    and needs to use the newly added eint_fltcon_offset variable.
    
    Fixes: 4a8be01a1a7a ("pinctrl: samsung: Add gs101 SoC pinctrl configuration")
    Cc: [email protected]  # depends on the previous three patches
    Reviewed-by: André Draszik <[email protected]>
    Signed-off-by: Peter Griffin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

pinctrl: samsung: refactor drvdata suspend & resume callbacks [+ + +]
Author: Peter Griffin <[email protected]>
Date:   Wed Apr 2 16:17:30 2025 +0100

    pinctrl: samsung: refactor drvdata suspend & resume callbacks
    
    [ Upstream commit 3ade961e97f3b05dcdd9a4fabfe179c9e75571e0 ]
    
    This enables the clk_enable() and clk_disable() logic to be removed
    from each callback, but otherwise should have no functional impact.
    
    It is a prepatory patch so that the callbacks can become SoC
    specific.
    
    Signed-off-by: Peter Griffin <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Stable-dep-of: bdbe0a0f7100 ("pinctrl: samsung: add gs101 specific eint suspend/resume callbacks")
    Signed-off-by: Sasha Levin <[email protected]>

 
PM: EM: Fix potential division-by-zero error in em_compute_costs() [+ + +]
Author: Yaxiong Tian <[email protected]>
Date:   Fri Apr 18 09:06:13 2025 +0800

    PM: EM: Fix potential division-by-zero error in em_compute_costs()
    
    [ Upstream commit 179c0c7044a378198adb36f2a12410ab68cc730a ]
    
    When the device is of a non-CPU type, table[i].performance won't be
    initialized in the previous em_init_performance(), resulting in division
    by zero when calculating costs in em_compute_costs().
    
    Since the 'cost' algorithm is only used for EAS energy efficiency
    calculations and is currently not utilized by other device drivers, we
    should add the _is_cpu_device(dev) check to prevent this division-by-zero
    issue.
    
    Fixes: 1b600da51073 ("PM: EM: Optimize em_cpu_energy() and remove division")
    Signed-off-by: Yaxiong Tian <[email protected]>
    Reviewed-by: Lukasz Luba <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

PM: sleep: Fix power.is_suspended cleanup for direct-complete devices [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Tue Jun 3 18:19:27 2025 +0200

    PM: sleep: Fix power.is_suspended cleanup for direct-complete devices
    
    [ Upstream commit d46c4c839c20a599a0eb8d73708ce401f9c7d06d ]
    
    Commit 03f1444016b7 ("PM: sleep: Fix handling devices with direct_complete
    set on errors") caused power.is_suspended to be set for devices with
    power.direct_complete set, but it forgot to ensure the clearing of that
    flag for them in device_resume(), so power.is_suspended is still set for
    them during the next system suspend-resume cycle.
    
    If that cycle is aborted in dpm_suspend(), the subsequent invocation of
    dpm_resume() will trigger a device_resume() call for every device and
    because power.is_suspended is set for the devices in question, they will
    not be skipped by device_resume() as expected which causes scary error
    messages to be logged (as appropriate).
    
    To address this issue, move the clearing of power.is_suspended in
    device_resume() immediately after the power.is_suspended check so it
    will be always cleared for all devices processed by that function.
    
    Fixes: 03f1444016b7 ("PM: sleep: Fix handling devices with direct_complete set on errors")
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4280
    Reported-and-tested-by: Chris Bainbridge <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Reviewed-by: Mario Limonciello <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PM: sleep: Print PM debug messages during hibernation [+ + +]
Author: Rafael J. Wysocki <[email protected]>
Date:   Fri May 9 14:51:47 2025 +0200

    PM: sleep: Print PM debug messages during hibernation
    
    [ Upstream commit 1b17d4525bca3916644c41e01522df8fa0f8b90b ]
    
    Commit cdb8c100d8a4 ("include/linux/suspend.h: Only show pm_pr_dbg
    messages at suspend/resume") caused PM debug messages to only be
    printed during system-wide suspend and resume in progress, but it
    forgot about hibernation.
    
    Address this by adding a check for hibernation in progress to
    pm_debug_messages_should_print().
    
    Fixes: cdb8c100d8a4 ("include/linux/suspend.h: Only show pm_pr_dbg messages at suspend/resume")
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Reviewed-by: Mario Limonciello <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

PM: wakeup: Delete space in the end of string shown by pm_show_wakelocks() [+ + +]
Author: Zijun Hu <[email protected]>
Date:   Mon May 5 17:26:51 2025 +0800

    PM: wakeup: Delete space in the end of string shown by pm_show_wakelocks()
    
    [ Upstream commit f0050a3e214aa941b78ad4caf122a735a24d81a6 ]
    
    pm_show_wakelocks() is called to generate a string when showing
    attributes /sys/power/wake_(lock|unlock), but the string ends
    with an unwanted space that was added back by mistake by commit
    c9d967b2ce40 ("PM: wakeup: simplify the output logic of
    pm_show_wakelocks()").
    
    Remove the unwanted space.
    
    Fixes: c9d967b2ce40 ("PM: wakeup: simplify the output logic of pm_show_wakelocks()")
    Signed-off-by: Zijun Hu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [ rjw: Changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pmdomain: core: Introduce dev_pm_genpd_rpm_always_on() [+ + +]
Author: Ulf Hansson <[email protected]>
Date:   Wed Feb 5 14:15:52 2025 +0800

    pmdomain: core: Introduce dev_pm_genpd_rpm_always_on()
    
    [ Upstream commit cd3fa304ba5c93ce57b9b55b3cd893af2be96527 ]
    
    For some usecases a consumer driver requires its device to remain power-on
    from the PM domain perspective during runtime. Using dev PM qos along with
    the genpd governors, doesn't work for this case as would potentially
    prevent the device from being runtime suspended too.
    
    To support these usecases, let's introduce dev_pm_genpd_rpm_always_on() to
    allow consumers drivers to dynamically control the behaviour in genpd for a
    device that is attached to it.
    
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Shawn Lin <[email protected]>
    Acked-by: Manivannan Sadhasivam <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Stable-dep-of: 08f959759e1e ("mmc: sdhci-of-dwcmshc: add PD workaround on RK3576")
    Signed-off-by: Sasha Levin <[email protected]>

 
posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del() [+ + +]
Author: Oleg Nesterov <[email protected]>
Date:   Fri Jun 13 19:26:50 2025 +0200

    posix-cpu-timers: fix race between handle_posix_cpu_timers() and posix_cpu_timer_del()
    
    commit f90fff1e152dedf52b932240ebbd670d83330eca upstream.
    
    If an exiting non-autoreaping task has already passed exit_notify() and
    calls handle_posix_cpu_timers() from IRQ, it can be reaped by its parent
    or debugger right after unlock_task_sighand().
    
    If a concurrent posix_cpu_timer_del() runs at that moment, it won't be
    able to detect timer->it.cpu.firing != 0: cpu_timer_task_rcu() and/or
    lock_task_sighand() will fail.
    
    Add the tsk->exit_state check into run_posix_cpu_timers() to fix this.
    
    This fix is not needed if CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y, because
    exit_task_work() is called before exit_notify(). But the check still
    makes sense, task_work_add(&tsk->posix_cputimers_work.work) will fail
    anyway in this case.
    
    Cc: [email protected]
    Reported-by: Benoît Sevens <[email protected]>
    Fixes: 0bdd2ed4138e ("sched: run_posix_cpu_timers: Don't check ->exit_state, use lock_task_sighand()")
    Signed-off-by: Oleg Nesterov <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
power: reset: at91-reset: Optimize at91_reset() [+ + +]
Author: Alexander Shiyan <[email protected]>
Date:   Fri Mar 7 08:38:09 2025 +0300

    power: reset: at91-reset: Optimize at91_reset()
    
    [ Upstream commit 62d48983f215bf1dd48665913318101fa3414dcf ]
    
    This patch adds a small optimization to the low-level at91_reset()
    function, which includes:
    - Removes the extra branch, since the following store operations
      already have proper condition checks.
    - Removes the definition of the clobber register r4, since it is
      no longer used in the code.
    
    Fixes: fcd0532fac2a ("power: reset: at91-reset: make at91sam9g45_restart() generic")
    Signed-off-by: Alexander Shiyan <[email protected]>
    Reviewed-by: Alexandre Belloni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sebastian Reichel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/crash: Fix non-smp kexec preparation [+ + +]
Author: Eddie James <[email protected]>
Date:   Tue Feb 11 10:20:54 2025 -0600

    powerpc/crash: Fix non-smp kexec preparation
    
    [ Upstream commit 882b25af265de8e05c66f72b9a29f6047102958f ]
    
    In non-smp configurations, crash_kexec_prepare is never called in
    the crash shutdown path. One result of this is that the crashing_cpu
    variable is never set, preventing crash_save_cpu from storing the
    NT_PRSTATUS elf note in the core dump.
    
    Fixes: c7255058b543 ("powerpc/crash: save cpu register data in crash_smp_send_stop()")
    Signed-off-by: Eddie James <[email protected]>
    Reviewed-by: Hari Bathini <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/powernv/memtrace: Fix out of bounds issue in memtrace mmap [+ + +]
Author: Ritesh Harjani (IBM) <[email protected]>
Date:   Tue Jun 10 07:42:26 2025 +0530

    powerpc/powernv/memtrace: Fix out of bounds issue in memtrace mmap
    
    [ Upstream commit cd097df4596f3a1e9d75eb8520162de1eb8485b2 ]
    
    memtrace mmap issue has an out of bounds issue. This patch fixes the by
    checking that the requested mapping region size should stay within the
    allocated region size.
    
    Reported-by: Jonathan Greental <[email protected]>
    Fixes: 08a022ad3dfa ("powerpc/powernv/memtrace: Allow mmaping trace buffers")
    Signed-off-by: Ritesh Harjani (IBM) <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/pseries/iommu: Fix kmemleak in TCE table userspace view [+ + +]
Author: Gaurav Batra <[email protected]>
Date:   Mon May 12 17:46:53 2025 -0500

    powerpc/pseries/iommu: Fix kmemleak in TCE table userspace view
    
    [ Upstream commit d36e3f11fe8b55b801bdbe84ad51f612b1bd84da ]
    
    When a device is opened by a userspace driver, via VFIO interface, DMA
    window is created. This DMA window has TCE Table and a corresponding
    data for userview of TCE table.
    
    When the userspace driver closes the device, all the above infrastructure
    is free'ed and the device control given back to kernel. Both DMA window
    and TCE table is getting free'ed. But due to a code bug, userview of the
    TCE table is not getting free'ed. This is resulting in a memory leak.
    
    Befow is the information from KMEMLEAK
    
    unreferenced object 0xc008000022af0000 (size 16777216):
      comm "senlib_unit_tes", pid 9346, jiffies 4294983174
      hex dump (first 32 bytes):
        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  ................
      backtrace (crc 0):
        kmemleak_vmalloc+0xc8/0x1a0
        __vmalloc_node_range+0x284/0x340
        vzalloc+0x58/0x70
        spapr_tce_create_table+0x4b0/0x8d0
        tce_iommu_create_table+0xcc/0x170 [vfio_iommu_spapr_tce]
        tce_iommu_create_window+0x144/0x2f0 [vfio_iommu_spapr_tce]
        tce_iommu_ioctl.part.0+0x59c/0xc90 [vfio_iommu_spapr_tce]
        vfio_fops_unl_ioctl+0x88/0x280 [vfio]
        sys_ioctl+0xf4/0x160
        system_call_exception+0x164/0x310
        system_call_vectored_common+0xe8/0x278
    unreferenced object 0xc008000023b00000 (size 4194304):
      comm "senlib_unit_tes", pid 9351, jiffies 4294984116
      hex dump (first 32 bytes):
        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  ................
      backtrace (crc 0):
        kmemleak_vmalloc+0xc8/0x1a0
        __vmalloc_node_range+0x284/0x340
        vzalloc+0x58/0x70
        spapr_tce_create_table+0x4b0/0x8d0
        tce_iommu_create_table+0xcc/0x170 [vfio_iommu_spapr_tce]
        tce_iommu_create_window+0x144/0x2f0 [vfio_iommu_spapr_tce]
        tce_iommu_create_default_window+0x88/0x120 [vfio_iommu_spapr_tce]
        tce_iommu_ioctl.part.0+0x57c/0xc90 [vfio_iommu_spapr_tce]
        vfio_fops_unl_ioctl+0x88/0x280 [vfio]
        sys_ioctl+0xf4/0x160
        system_call_exception+0x164/0x310
        system_call_vectored_common+0xe8/0x278
    
    Fixes: f431a8cde7f1 ("powerpc/iommu: Reimplement the iommu_table_group_ops for pSeries")
    Signed-off-by: Gaurav Batra <[email protected]>
    Reviewed-by: Nilay Shroff <[email protected]>
    Reviewed-by: Ritesh Harjani (IBM) <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/vas: Return -EINVAL if the offset is non-zero in mmap() [+ + +]
Author: Haren Myneni <[email protected]>
Date:   Tue Jun 10 07:42:27 2025 +0530

    powerpc/vas: Return -EINVAL if the offset is non-zero in mmap()
    
    [ Upstream commit 0d67f0dee6c9176bc09a5482dd7346e3a0f14d0b ]
    
    The user space calls mmap() to map VAS window paste address
    and the kernel returns the complete mapped page for each
    window. So return -EINVAL if non-zero is passed for offset
    parameter to mmap().
    
    See Documentation/arch/powerpc/vas-api.rst for mmap()
    restrictions.
    
    Co-developed-by: Jonathan Greental <[email protected]>
    Signed-off-by: Jonathan Greental <[email protected]>
    Reported-by: Jonathan Greental <[email protected]>
    Fixes: dda44eb29c23 ("powerpc/vas: Add VAS user space API")
    Signed-off-by: Haren Myneni <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc: do not build ppc_save_regs.o always [+ + +]
Author: Jiri Slaby (SUSE) <[email protected]>
Date:   Thu Apr 17 12:53:05 2025 +0200

    powerpc: do not build ppc_save_regs.o always
    
    [ Upstream commit 497b7794aef03d525a5be05ae78dd7137c6861a5 ]
    
    The Fixes commit below tried to add CONFIG_PPC_BOOK3S to one of the
    conditions to enable the build of ppc_save_regs.o. But it failed to do
    so, in fact. The commit omitted to add a dollar sign.
    
    Therefore, ppc_save_regs.o is built always these days (as
    "(CONFIG_PPC_BOOK3S)" is never an empty string).
    
    Fix this by adding the missing dollar sign.
    
    Signed-off-by: Jiri Slaby (SUSE) <[email protected]>
    Fixes: fc2a5a6161a2 ("powerpc/64s: ppc_save_regs is now needed for all 64s builds")
    Acked-by: Stephen Rothwell <[email protected]>
    Signed-off-by: Madhavan Srinivasan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
ptp: remove ptp->n_vclocks check logic in ptp_vclock_in_use() [+ + +]
Author: Jeongjun Park <[email protected]>
Date:   Wed May 21 01:07:17 2025 +0900

    ptp: remove ptp->n_vclocks check logic in ptp_vclock_in_use()
    
    [ Upstream commit 87f7ce260a3c838b49e1dc1ceedf1006795157a2 ]
    
    There is no disagreement that we should check both ptp->is_virtual_clock
    and ptp->n_vclocks to check if the ptp virtual clock is in use.
    
    However, when we acquire ptp->n_vclocks_mux to read ptp->n_vclocks in
    ptp_vclock_in_use(), we observe a recursive lock in the call trace
    starting from n_vclocks_store().
    
    ============================================
    WARNING: possible recursive locking detected
    6.15.0-rc6 #1 Not tainted
    --------------------------------------------
    syz.0.1540/13807 is trying to acquire lock:
    ffff888035a24868 (&ptp->n_vclocks_mux){+.+.}-{4:4}, at:
     ptp_vclock_in_use drivers/ptp/ptp_private.h:103 [inline]
    ffff888035a24868 (&ptp->n_vclocks_mux){+.+.}-{4:4}, at:
     ptp_clock_unregister+0x21/0x250 drivers/ptp/ptp_clock.c:415
    
    but task is already holding lock:
    ffff888030704868 (&ptp->n_vclocks_mux){+.+.}-{4:4}, at:
     n_vclocks_store+0xf1/0x6d0 drivers/ptp/ptp_sysfs.c:215
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(&ptp->n_vclocks_mux);
      lock(&ptp->n_vclocks_mux);
    
     *** DEADLOCK ***
    ....
    ============================================
    
    The best way to solve this is to remove the logic that checks
    ptp->n_vclocks in ptp_vclock_in_use().
    
    The reason why this is appropriate is that any path that uses
    ptp->n_vclocks must unconditionally check if ptp->n_vclocks is greater
    than 0 before unregistering vclocks, and all functions are already
    written this way. And in the function that uses ptp->n_vclocks, we
    already get ptp->n_vclocks_mux before unregistering vclocks.
    
    Therefore, we need to remove the redundant check for ptp->n_vclocks in
    ptp_vclock_in_use() to prevent recursive locking.
    
    Fixes: 73f37068d540 ("ptp: support ptp physical/virtual clocks conversion")
    Signed-off-by: Jeongjun Park <[email protected]>
    Acked-by: Richard Cochran <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
randstruct: gcc-plugin: Fix attribute addition [+ + +]
Author: Kees Cook <[email protected]>
Date:   Fri May 30 15:18:28 2025 -0700

    randstruct: gcc-plugin: Fix attribute addition
    
    [ Upstream commit f39f18f3c3531aa802b58a20d39d96e82eb96c14 ]
    
    Based on changes in the 2021 public version of the randstruct
    out-of-tree GCC plugin[1], more carefully update the attributes on
    resulting decls, to avoid tripping checks in GCC 15's
    comptypes_check_enum_int() when it has been configured with
    "--enable-checking=misc":
    
    arch/arm64/kernel/kexec_image.c:132:14: internal compiler error: in comptypes_check_enum_int, at c/c-typeck.cc:1519
      132 | const struct kexec_file_ops kexec_image_ops = {
          |              ^~~~~~~~~~~~~~
     internal_error(char const*, ...), at gcc/gcc/diagnostic-global-context.cc:517
     fancy_abort(char const*, int, char const*), at gcc/gcc/diagnostic.cc:1803
     comptypes_check_enum_int(tree_node*, tree_node*, bool*), at gcc/gcc/c/c-typeck.cc:1519
     ...
    
    Link: https://archive.org/download/grsecurity/grsecurity-3.1-5.10.41-202105280954.patch.gz [1]
    Reported-by: Thiago Jung Bauermann <[email protected]>
    Closes: https://github.com/KSPP/linux/issues/367
    Closes: https://lore.kernel.org/lkml/[email protected]/
    Reported-by: Ingo Saitz <[email protected]>
    Closes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1104745
    Fixes: 313dd1b62921 ("gcc-plugins: Add the randstruct plugin")
    Tested-by: Thiago Jung Bauermann <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

randstruct: gcc-plugin: Remove bogus void member [+ + +]
Author: Kees Cook <[email protected]>
Date:   Sat Apr 26 00:37:52 2025 -0700

    randstruct: gcc-plugin: Remove bogus void member
    
    [ Upstream commit e136a4062174a9a8d1c1447ca040ea81accfa6a8 ]
    
    When building the randomized replacement tree of struct members, the
    randstruct GCC plugin would insert, as the first member, a 0-sized void
    member. This appears as though it was done to catch non-designated
    ("unnamed") static initializers, which wouldn't be stable since they
    depend on the original struct layout order.
    
    This was accomplished by having the side-effect of the "void member"
    tripping an assert in GCC internals (count_type_elements) if the member
    list ever needed to be counted (e.g. for figuring out the order of members
    during a non-designated initialization), which would catch impossible type
    (void) in the struct:
    
    security/landlock/fs.c: In function ‘hook_file_ioctl_common’:
    security/landlock/fs.c:1745:61: internal compiler error: in count_type_elements, at expr.cc:7075
     1745 |                         .u.op = &(struct lsm_ioctlop_audit) {
          |                                                             ^
    
    static HOST_WIDE_INT
    count_type_elements (const_tree type, bool for_ctor_p)
    {
      switch (TREE_CODE (type))
    ...
        case VOID_TYPE:
        default:
          gcc_unreachable ();
        }
    }
    
    However this is a redundant safety measure since randstruct uses the
    __designated_initializer attribute both internally and within the
    __randomized_layout attribute macro so that this would be enforced
    by the compiler directly even when randstruct was not enabled (via
    -Wdesignated-init).
    
    A recent change in Landlock ended up tripping the same member counting
    routine when using a full-struct copy initializer as part of an anonymous
    initializer. This, however, is a false positive as the initializer is
    copying between identical structs (and hence identical layouts). The
    "path" member is "struct path", a randomized struct, and is being copied
    to from another "struct path", the "f_path" member:
    
            landlock_log_denial(landlock_cred(file->f_cred), &(struct landlock_request) {
                    .type = LANDLOCK_REQUEST_FS_ACCESS,
                    .audit = {
                            .type = LSM_AUDIT_DATA_IOCTL_OP,
                            .u.op = &(struct lsm_ioctlop_audit) {
                                    .path = file->f_path,
                                    .cmd = cmd,
                            },
                    },
            ...
    
    As can be seen with the coming randstruct KUnit test, there appears to
    be no behavioral problems with this kind of initialization when the void
    member is removed from the randstruct GCC plugin, so remove it.
    
    Reported-by: "Dr. David Alan Gilbert" <[email protected]>
    Closes: https://lore.kernel.org/lkml/Z_PRaKx7q70MKgCA@gallifrey/
    Reported-by: Mark Brown <[email protected]>
    Closes: https://lore.kernel.org/lkml/[email protected]/
    Reported-by: WangYuli <[email protected]>
    Closes: https://lore.kernel.org/lkml/337D5D4887277B27+3c677db3-a8b9-47f0-93a4-7809355f1381@uniontech.com/
    Fixes: 313dd1b62921 ("gcc-plugins: Add the randstruct plugin")
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rcu/cpu_stall_cputime: fix the hardirq count for x86 architecture [+ + +]
Author: Yongliang Gao <[email protected]>
Date:   Sun Feb 16 16:41:09 2025 +0800

    rcu/cpu_stall_cputime: fix the hardirq count for x86 architecture
    
    [ Upstream commit da6b85598af30e9fec34d82882d7e1e39f3da769 ]
    
    When counting the number of hardirqs in the x86 architecture,
    it is essential to add arch_irq_stat_cpu to ensure accuracy.
    
    For example, a CPU loop within the rcu_read_lock function.
    
    Before:
    [   70.910184] rcu: INFO: rcu_preempt self-detected stall on CPU
    [   70.910436] rcu:     3-....: (4999 ticks this GP) idle=***
    [   70.910711] rcu:              hardirqs   softirqs   csw/system
    [   70.910870] rcu:      number:        0        657            0
    [   70.911024] rcu:     cputime:        0          0         2498   ==> 2498(ms)
    [   70.911278] rcu:     (t=5001 jiffies g=3677 q=29 ncpus=8)
    
    After:
    [   68.046132] rcu: INFO: rcu_preempt self-detected stall on CPU
    [   68.046354] rcu:     2-....: (4999 ticks this GP) idle=***
    [   68.046628] rcu:              hardirqs   softirqs   csw/system
    [   68.046793] rcu:      number:     2498        663            0
    [   68.046951] rcu:     cputime:        0          0         2496   ==> 2496(ms)
    [   68.047244] rcu:     (t=5000 jiffies g=3825 q=4 ncpus=8)
    
    Fixes: be42f00b73a0 ("rcu: Add RCU stall diagnosis information")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Signed-off-by: Yongliang Gao <[email protected]>
    Reviewed-by: Neeraj Upadhyay <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Boqun Feng <[email protected]>
    Signed-off-by: Joel Fernandes <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/cma: Fix hang when cma_netevent_callback fails to queue_work [+ + +]
Author: Jack Morgenstein <[email protected]>
Date:   Wed May 21 14:36:02 2025 +0300

    RDMA/cma: Fix hang when cma_netevent_callback fails to queue_work
    
    [ Upstream commit 92a251c3df8ea1991cd9fe00f1ab0cfce18d7711 ]
    
    The cited commit fixed a crash when cma_netevent_callback was called for
    a cma_id while work on that id from a previous call had not yet started.
    The work item was re-initialized in the second call, which corrupted the
    work item currently in the work queue.
    
    However, it left a problem when queue_work fails (because the item is
    still pending in the work queue from a previous call). In this case,
    cma_id_put (which is called in the work handler) is therefore not
    called. This results in a userspace process hang (zombie process).
    
    Fix this by calling cma_id_put() if queue_work fails.
    
    Fixes: 45f5dcdd0497 ("RDMA/cma: Fix workqueue crash in cma_netevent_work_handler")
    Link: https://patch.msgid.link/r/4f3640b501e48d0166f312a64fdadf72b059bd04.1747827103.git.leon@kernel.org
    Signed-off-by: Jack Morgenstein <[email protected]>
    Signed-off-by: Feng Liu <[email protected]>
    Reviewed-by: Vlad Dumitrescu <[email protected]>
    Signed-off-by: Leon Romanovsky <[email protected]>
    Reviewed-by: Sharath Srinivasan <[email protected]>
    Reviewed-by: Kalesh AP <[email protected]>
    Signed-off-by: Jason Gunthorpe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/hns: Include hnae3.h in hns_roce_hw_v2.h [+ + +]
Author: Junxian Huang <[email protected]>
Date:   Mon Apr 21 21:27:49 2025 +0800

    RDMA/hns: Include hnae3.h in hns_roce_hw_v2.h
    
    [ Upstream commit 2b11d33de23262cb20d1dcb24b586dbb8f54d463 ]
    
    hns_roce_hw_v2.h has a direct dependency on hnae3.h due to the
    inline function hns_roce_write64(), but it doesn't include this
    header currently. This leads to that files including
    hns_roce_hw_v2.h must also include hnae3.h to avoid compilation
    errors, even if they themselves don't really rely on hnae3.h.
    This doesn't make sense, hns_roce_hw_v2.h should include hnae3.h
    directly.
    
    Fixes: d3743fa94ccd ("RDMA/hns: Fix the chip hanging caused by sending doorbell during reset")
    Signed-off-by: Junxian Huang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
RDMA/mlx5: Fix error flow upon firmware failure for RQ destruction [+ + +]
Author: Patrisious Haddad <[email protected]>
Date:   Mon Apr 28 14:34:07 2025 +0300

    RDMA/mlx5: Fix error flow upon firmware failure for RQ destruction
    
    [ Upstream commit 5d2ea5aebbb2f3ebde4403f9c55b2b057e5dd2d6 ]
    
    Upon RQ destruction if the firmware command fails which is the
    last resource to be destroyed some SW resources were already cleaned
    regardless of the failure.
    
    Now properly rollback the object to its original state upon such failure.
    
    In order to avoid a use-after free in case someone tries to destroy the
    object again, which results in the following kernel trace:
    refcount_t: underflow; use-after-free.
    WARNING: CPU: 0 PID: 37589 at lib/refcount.c:28 refcount_warn_saturate+0xf4/0x148
    Modules linked in: rdma_ucm(OE) rdma_cm(OE) iw_cm(OE) ib_ipoib(OE) ib_cm(OE) ib_umad(OE) mlx5_ib(OE) rfkill mlx5_core(OE) mlxdevm(OE) ib_uverbs(OE) ib_core(OE) psample mlxfw(OE) mlx_compat(OE) macsec tls pci_hyperv_intf sunrpc vfat fat virtio_net net_failover failover fuse loop nfnetlink vsock_loopback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vmw_vmci vsock xfs crct10dif_ce ghash_ce sha2_ce sha256_arm64 sha1_ce virtio_console virtio_gpu virtio_blk virtio_dma_buf virtio_mmio dm_mirror dm_region_hash dm_log dm_mod xpmem(OE)
    CPU: 0 UID: 0 PID: 37589 Comm: python3 Kdump: loaded Tainted: G           OE     -------  ---  6.12.0-54.el10.aarch64 #1
    Tainted: [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
    Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
    pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : refcount_warn_saturate+0xf4/0x148
    lr : refcount_warn_saturate+0xf4/0x148
    sp : ffff80008b81b7e0
    x29: ffff80008b81b7e0 x28: ffff000133d51600 x27: 0000000000000001
    x26: 0000000000000000 x25: 00000000ffffffea x24: ffff00010ae80f00
    x23: ffff00010ae80f80 x22: ffff0000c66e5d08 x21: 0000000000000000
    x20: ffff0000c66e0000 x19: ffff00010ae80340 x18: 0000000000000006
    x17: 0000000000000000 x16: 0000000000000020 x15: ffff80008b81b37f
    x14: 0000000000000000 x13: 2e656572662d7265 x12: ffff80008283ef78
    x11: ffff80008257efd0 x10: ffff80008283efd0 x9 : ffff80008021ed90
    x8 : 0000000000000001 x7 : 00000000000bffe8 x6 : c0000000ffff7fff
    x5 : ffff0001fb8e3408 x4 : 0000000000000000 x3 : ffff800179993000
    x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff000133d51600
    Call trace:
     refcount_warn_saturate+0xf4/0x148
     mlx5_core_put_rsc+0x88/0xa0 [mlx5_ib]
     mlx5_core_destroy_rq_tracked+0x64/0x98 [mlx5_ib]
     mlx5_ib_destroy_wq+0x34/0x80 [mlx5_ib]
     ib_destroy_wq_user+0x30/0xc0 [ib_core]
     uverbs_free_wq+0x28/0x58 [ib_uverbs]
     destroy_hw_idr_uobject+0x34/0x78 [ib_uverbs]
     uverbs_destroy_uobject+0x48/0x240 [ib_uverbs]
     __uverbs_cleanup_ufile+0xd4/0x1a8 [ib_uverbs]
     uverbs_destroy_ufile_hw+0x48/0x120 [ib_uverbs]
     ib_uverbs_close+0x2c/0x100 [ib_uverbs]
     __fput+0xd8/0x2f0
     __fput_sync+0x50/0x70
     __arm64_sys_close+0x40/0x90
     invoke_syscall.constprop.0+0x74/0xd0
     do_el0_svc+0x48/0xe8
     el0_svc+0x44/0x1d0
     el0t_64_sync_handler+0x120/0x130
     el0t_64_sync+0x1a4/0x1a8
    
    Fixes: e2013b212f9f ("net/mlx5_core: Add RQ and SQ event handling")
    Signed-off-by: Patrisious Haddad <[email protected]>
    Link: https://patch.msgid.link/3181433ccdd695c63560eeeb3f0c990961732101.1745839855.git.leon@kernel.org
    Signed-off-by: Leon Romanovsky <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
regulator: dt-bindings: mt6357: Drop fixed compatible requirement [+ + +]
Author: Nícolas F. R. A. Prado <[email protected]>
Date:   Wed May 14 08:36:06 2025 -0400

    regulator: dt-bindings: mt6357: Drop fixed compatible requirement
    
    commit 9cfdd7752ba5f8cc9b8191e8c9aeeec246241fa4 upstream.
    
    Some of the regulators on the MT6357 PMIC currently reference the
    fixed-regulator dt-binding, which enforces the presence of a
    regulator-fixed compatible. However since all regulators on the MT6357
    PMIC are handled by a single mt6357-regulator driver, probed through
    MFD, the compatibles don't serve any purpose. In fact they cause
    failures in the DT kselftest since they aren't probed by the fixed
    regulator driver as would be expected. Furthermore this is the only
    dt-binding in this family like this: mt6359-regulator and
    mt6358-regulator don't require those compatibles.
    
    Commit d77e89b7b03f ("arm64: dts: mediatek: mt6357: Drop regulator-fixed
    compatibles") removed the compatibles from Devicetree, but missed
    updating the binding, which still requires them, introducing dt-binding
    errors. Remove the compatible requirement by referencing the plain
    regulator dt-binding instead to fix the dt-binding errors.
    
    Fixes: d77e89b7b03f ("arm64: dts: mediatek: mt6357: Drop regulator-fixed compatibles")
    Signed-off-by: Nícolas F. R. A. Prado <[email protected]>
    Link: https://patch.msgid.link/20250514-mt6357-regulator-fixed-compatibles-removal-bindings-v1-1-2421e9cc6cc7@collabora.com
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Tue May 27 08:44:14 2025 +0300

    regulator: max20086: Fix refcount leak in max20086_parse_regulators_dt()
    
    [ Upstream commit 06118ae36855b7d3d22688298e74a766ccf0cb7a ]
    
    There is a missing call to of_node_put() if devm_kcalloc() fails.
    Fix this by changing the code to use cleanup.h magic to drop the
    refcount.
    
    Fixes: 6b0cd72757c6 ("regulator: max20086: fix invalid memory access")
    Signed-off-by: Dan Carpenter <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Laurent Pinchart <[email protected]>
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
remoteproc: k3-dsp: Drop check performed in k3_dsp_rproc_{mbox_callback/kick} [+ + +]
Author: Siddharth Vadapalli <[email protected]>
Date:   Tue May 13 11:14:36 2025 +0530

    remoteproc: k3-dsp: Drop check performed in k3_dsp_rproc_{mbox_callback/kick}
    
    [ Upstream commit 349d62ab207f55f039c3ddb40b36e95c2f0b3ed0 ]
    
    Commit ea1d6fb5b571 ("remoteproc: k3-dsp: Acquire mailbox handle during
    probe routine") introduced a check in the "k3_dsp_rproc_mbox_callback()"
    and "k3_dsp_rproc_kick()" callbacks, causing them to exit if the remote
    core's state is "RPROC_DETACHED". However, the "__rproc_attach()"
    function that is responsible for attaching to a remote core, updates the
    state of the remote core to "RPROC_ATTACHED" only after invoking
    "rproc_start_subdevices()".
    
    The "rproc_start_subdevices()" function triggers the probe of the Virtio
    RPMsg devices associated with the remote core, which require that the
    "k3_dsp_rproc_kick()" and "k3_dsp_rproc_mbox_callback()" callbacks are
    functional. Hence, drop the check in the callbacks.
    
    Fixes: ea1d6fb5b571 ("remoteproc: k3-dsp: Acquire mailbox handle during probe routine")
    Signed-off-by: Siddharth Vadapalli <[email protected]>
    Signed-off-by: Beleswar Padhi <[email protected]>
    Tested-by: Judith Mendez <[email protected]>
    Reviewed-by: Andrew Davis <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mathieu Poirier <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

remoteproc: k3-r5: Drop check performed in k3_r5_rproc_{mbox_callback/kick} [+ + +]
Author: Siddharth Vadapalli <[email protected]>
Date:   Tue May 13 11:14:35 2025 +0530

    remoteproc: k3-r5: Drop check performed in k3_r5_rproc_{mbox_callback/kick}
    
    [ Upstream commit 9995dbfc2235efabdb3759606d522e1a7ec3bdcb ]
    
    Commit f3f11cfe8907 ("remoteproc: k3-r5: Acquire mailbox handle during
    probe routine") introduced a check in the "k3_r5_rproc_mbox_callback()"
    and "k3_r5_rproc_kick()" callbacks, causing them to exit if the remote
    core's state is "RPROC_DETACHED". However, the "__rproc_attach()"
    function that is responsible for attaching to a remote core, updates
    the state of the remote core to "RPROC_ATTACHED" only after invoking
    "rproc_start_subdevices()".
    
    The "rproc_start_subdevices()" function triggers the probe of the Virtio
    RPMsg devices associated with the remote core, which require that the
    "k3_r5_rproc_kick()" and "k3_r5_rproc_mbox_callback()" callbacks are
    functional. Hence, drop the check in the callbacks.
    
    Fixes: f3f11cfe8907 ("remoteproc: k3-r5: Acquire mailbox handle during probe routine")
    Signed-off-by: Siddharth Vadapalli <[email protected]>
    Signed-off-by: Beleswar Padhi <[email protected]>
    Tested-by: Judith Mendez <[email protected]>
    Reviewed-by: Andrew Davis <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mathieu Poirier <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

remoteproc: qcom_wcnss_iris: Add missing put_device() on error in probe [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Wed Apr 2 13:59:51 2025 +0300

    remoteproc: qcom_wcnss_iris: Add missing put_device() on error in probe
    
    [ Upstream commit 0cb4b1b97041d8a1f773425208ded253c1cb5869 ]
    
    The device_del() call matches with the device_add() but we also need
    to call put_device() to trigger the qcom_iris_release().
    
    Fixes: 1fcef985c8bd ("remoteproc: qcom: wcnss: Fix race with iris probe")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[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 "wifi: mwifiex: Fix HT40 bandwidth issue." [+ + +]
Author: Francesco Dolcini <[email protected]>
Date:   Thu Jun 5 15:03:02 2025 +0200

    Revert "wifi: mwifiex: Fix HT40 bandwidth issue."
    
    commit 570896604f47d44d4ff6882d2a588428d2a6ef17 upstream.
    
    This reverts commit 4fcfcbe45734 ("wifi: mwifiex: Fix HT40 bandwidth
    issue.")
    
    That commit introduces a regression, when HT40 mode is enabled,
    received packets are lost, this was experience with W8997 with both
    SDIO-UART and SDIO-SDIO variants. From an initial investigation the
    issue solves on its own after some time, but it's not clear what is
    the reason. Given that this was just a performance optimization, let's
    revert it till we have a better understanding of the issue and a proper
    fix.
    
    Cc: Jeff Chen <[email protected]>
    Cc: [email protected]
    Fixes: 4fcfcbe45734 ("wifi: mwifiex: Fix HT40 bandwidth issue.")
    Closes: https://lore.kernel.org/all/20250603203337.GA109929@francesco-nb/
    Signed-off-by: Francesco Dolcini <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [fix commit reference format]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ring-buffer: Do not trigger WARN_ON() due to a commit_overrun [+ + +]
Author: Steven Rostedt <[email protected]>
Date:   Wed May 28 12:15:55 2025 -0400

    ring-buffer: Do not trigger WARN_ON() due to a commit_overrun
    
    commit 4fc78a7c9ca994e1da5d3940704d4e8f0ea8c5e4 upstream.
    
    When reading a memory mapped buffer the reader page is just swapped out
    with the last page written in the write buffer. If the reader page is the
    same as the commit buffer (the buffer that is currently being written to)
    it was assumed that it should never have missed events. If it does, it
    triggers a WARN_ON_ONCE().
    
    But there just happens to be one scenario where this can legitimately
    happen. That is on a commit_overrun. A commit overrun is when an interrupt
    preempts an event being written to the buffer and then the interrupt adds
    so many new events that it fills and wraps the buffer back to the commit.
    Any new events would then be dropped and be reported as "missed_events".
    
    In this case, the next page to read is the commit buffer and after the
    swap of the reader page, the reader page will be the commit buffer, but
    this time there will be missed events and this triggers the following
    warning:
    
     ------------[ cut here ]------------
     WARNING: CPU: 2 PID: 1127 at kernel/trace/ring_buffer.c:7357 ring_buffer_map_get_reader+0x49a/0x780
     Modules linked in: kvm_intel kvm irqbypass
     CPU: 2 UID: 0 PID: 1127 Comm: trace-cmd Not tainted 6.15.0-rc7-test-00004-g478bc2824b45-dirty #564 PREEMPT
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
     RIP: 0010:ring_buffer_map_get_reader+0x49a/0x780
     Code: 00 00 00 48 89 fe 48 c1 ee 03 80 3c 2e 00 0f 85 ec 01 00 00 4d 3b a6 a8 00 00 00 0f 85 8a fd ff ff 48 85 c0 0f 84 55 fe ff ff <0f> 0b e9 4e fe ff ff be 08 00 00 00 4c 89 54 24 58 48 89 54 24 50
     RSP: 0018:ffff888121787dc0 EFLAGS: 00010002
     RAX: 00000000000006a2 RBX: ffff888100062800 RCX: ffffffff8190cb49
     RDX: ffff888126934c00 RSI: 1ffff11020200a15 RDI: ffff8881010050a8
     RBP: dffffc0000000000 R08: 0000000000000000 R09: ffffed1024d26982
     R10: ffff888126934c17 R11: ffff8881010050a8 R12: ffff888126934c00
     R13: ffff8881010050b8 R14: ffff888101005000 R15: ffff888126930008
     FS:  00007f95c8cd7540(0000) GS:ffff8882b576e000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 00007f95c8de4dc0 CR3: 0000000128452002 CR4: 0000000000172ef0
     Call Trace:
      <TASK>
      ? __pfx_ring_buffer_map_get_reader+0x10/0x10
      tracing_buffers_ioctl+0x283/0x370
      __x64_sys_ioctl+0x134/0x190
      do_syscall_64+0x79/0x1c0
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
     RIP: 0033:0x7f95c8de48db
     Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89> c2 3d 00 f0 ff ff 77 1c 48 8b 44 24 18 64 48 2b 04 25 28 00 00
     RSP: 002b:00007ffe037ba110 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
     RAX: ffffffffffffffda RBX: 00007ffe037bb2b0 RCX: 00007f95c8de48db
     RDX: 0000000000000000 RSI: 0000000000005220 RDI: 0000000000000006
     RBP: 00007ffe037ba180 R08: 0000000000000000 R09: 0000000000000000
     R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
     R13: 00007ffe037bb6f8 R14: 00007f95c9065000 R15: 00005575c7492c90
      </TASK>
     irq event stamp: 5080
     hardirqs last  enabled at (5079): [<ffffffff83e0adb0>] _raw_spin_unlock_irqrestore+0x50/0x70
     hardirqs last disabled at (5080): [<ffffffff83e0aa83>] _raw_spin_lock_irqsave+0x63/0x70
     softirqs last  enabled at (4182): [<ffffffff81516122>] handle_softirqs+0x552/0x710
     softirqs last disabled at (4159): [<ffffffff815163f7>] __irq_exit_rcu+0x107/0x210
     ---[ end trace 0000000000000000 ]---
    
    The above was triggered by running on a kernel with both lockdep and KASAN
    as well as kmemleak enabled and executing the following command:
    
     # perf record -o perf-test.dat -a -- trace-cmd record --nosplice  -e all -p function hackbench 50
    
    With perf interjecting a lot of interrupts and trace-cmd enabling all
    events as well as function tracing, with lockdep, KASAN and kmemleak
    enabled, it could cause an interrupt preempting an event being written to
    add enough events to wrap the buffer. trace-cmd was modified to have
    --nosplice use mmap instead of reading the buffer.
    
    The way to differentiate this case from the normal case of there only
    being one page written to where the swap of the reader page received that
    one page (which is the commit page), check if the tail page is on the
    reader page. The difference between the commit page and the tail page is
    that the tail page is where new writes go to, and the commit page holds
    the first write that hasn't been committed yet. In the case of an
    interrupt preempting the write of an event and filling the buffer, it
    would move the tail page but not the commit page.
    
    Have the warning only trigger if the tail page is also on the reader page,
    and also print out the number of events dropped by a commit overrun as
    that can not yet be safely added to the page so that the reader can see
    there were events dropped.
    
    Cc: [email protected]
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Vincent Donnefort <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: fe832be05a8ee ("ring-buffer: Have mmapped ring buffer keep track of missed events")
    Reviewed-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ring-buffer: Fix buffer locking in ring_buffer_subbuf_order_set() [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Fri Jun 6 14:22:42 2025 +0300

    ring-buffer: Fix buffer locking in ring_buffer_subbuf_order_set()
    
    commit 40ee2afafc1d9fe3aa44a6fbe440d78a5c96a72e upstream.
    
    Enlarge the critical section in ring_buffer_subbuf_order_set() to
    ensure that error handling takes place with per-buffer mutex held,
    thus preventing list corruption and other concurrency-related issues.
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Tzvetomir Stoyanov <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=05d673e83ec640f0ced9
    Fixes: f9b94daa542a8 ("ring-buffer: Set new size of the ring buffer sub page")
    Signed-off-by: Dmitry Antipov <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ring-buffer: Move cpus_read_lock() outside of buffer->mutex [+ + +]
Author: Steven Rostedt <[email protected]>
Date:   Tue May 27 10:58:20 2025 -0400

    ring-buffer: Move cpus_read_lock() outside of buffer->mutex
    
    commit c98cc9797b7009308fff73d41bc1d08642dab77a upstream.
    
    Running a modified trace-cmd record --nosplice where it does a mmap of the
    ring buffer when '--nosplice' is set, caused the following lockdep splat:
    
     ======================================================
     WARNING: possible circular locking dependency detected
     6.15.0-rc7-test-00002-gfb7d03d8a82f #551 Not tainted
     ------------------------------------------------------
     trace-cmd/1113 is trying to acquire lock:
     ffff888100062888 (&buffer->mutex){+.+.}-{4:4}, at: ring_buffer_map+0x11c/0xe70
    
     but task is already holding lock:
     ffff888100a5f9f8 (&cpu_buffer->mapping_lock){+.+.}-{4:4}, at: ring_buffer_map+0xcf/0xe70
    
     which lock already depends on the new lock.
    
     the existing dependency chain (in reverse order) is:
    
     -> #5 (&cpu_buffer->mapping_lock){+.+.}-{4:4}:
            __mutex_lock+0x192/0x18c0
            ring_buffer_map+0xcf/0xe70
            tracing_buffers_mmap+0x1c4/0x3b0
            __mmap_region+0xd8d/0x1f70
            do_mmap+0x9d7/0x1010
            vm_mmap_pgoff+0x20b/0x390
            ksys_mmap_pgoff+0x2e9/0x440
            do_syscall_64+0x79/0x1c0
            entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
     -> #4 (&mm->mmap_lock){++++}-{4:4}:
            __might_fault+0xa5/0x110
            _copy_to_user+0x22/0x80
            _perf_ioctl+0x61b/0x1b70
            perf_ioctl+0x62/0x90
            __x64_sys_ioctl+0x134/0x190
            do_syscall_64+0x79/0x1c0
            entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
     -> #3 (&cpuctx_mutex){+.+.}-{4:4}:
            __mutex_lock+0x192/0x18c0
            perf_event_init_cpu+0x325/0x7c0
            perf_event_init+0x52a/0x5b0
            start_kernel+0x263/0x3e0
            x86_64_start_reservations+0x24/0x30
            x86_64_start_kernel+0x95/0xa0
            common_startup_64+0x13e/0x141
    
     -> #2 (pmus_lock){+.+.}-{4:4}:
            __mutex_lock+0x192/0x18c0
            perf_event_init_cpu+0xb7/0x7c0
            cpuhp_invoke_callback+0x2c0/0x1030
            __cpuhp_invoke_callback_range+0xbf/0x1f0
            _cpu_up+0x2e7/0x690
            cpu_up+0x117/0x170
            cpuhp_bringup_mask+0xd5/0x120
            bringup_nonboot_cpus+0x13d/0x170
            smp_init+0x2b/0xf0
            kernel_init_freeable+0x441/0x6d0
            kernel_init+0x1e/0x160
            ret_from_fork+0x34/0x70
            ret_from_fork_asm+0x1a/0x30
    
     -> #1 (cpu_hotplug_lock){++++}-{0:0}:
            cpus_read_lock+0x2a/0xd0
            ring_buffer_resize+0x610/0x14e0
            __tracing_resize_ring_buffer.part.0+0x42/0x120
            tracing_set_tracer+0x7bd/0xa80
            tracing_set_trace_write+0x132/0x1e0
            vfs_write+0x21c/0xe80
            ksys_write+0xf9/0x1c0
            do_syscall_64+0x79/0x1c0
            entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
     -> #0 (&buffer->mutex){+.+.}-{4:4}:
            __lock_acquire+0x1405/0x2210
            lock_acquire+0x174/0x310
            __mutex_lock+0x192/0x18c0
            ring_buffer_map+0x11c/0xe70
            tracing_buffers_mmap+0x1c4/0x3b0
            __mmap_region+0xd8d/0x1f70
            do_mmap+0x9d7/0x1010
            vm_mmap_pgoff+0x20b/0x390
            ksys_mmap_pgoff+0x2e9/0x440
            do_syscall_64+0x79/0x1c0
            entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
     other info that might help us debug this:
    
     Chain exists of:
       &buffer->mutex --> &mm->mmap_lock --> &cpu_buffer->mapping_lock
    
      Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock(&cpu_buffer->mapping_lock);
                                    lock(&mm->mmap_lock);
                                    lock(&cpu_buffer->mapping_lock);
       lock(&buffer->mutex);
    
      *** DEADLOCK ***
    
     2 locks held by trace-cmd/1113:
      #0: ffff888106b847e0 (&mm->mmap_lock){++++}-{4:4}, at: vm_mmap_pgoff+0x192/0x390
      #1: ffff888100a5f9f8 (&cpu_buffer->mapping_lock){+.+.}-{4:4}, at: ring_buffer_map+0xcf/0xe70
    
     stack backtrace:
     CPU: 5 UID: 0 PID: 1113 Comm: trace-cmd Not tainted 6.15.0-rc7-test-00002-gfb7d03d8a82f #551 PREEMPT
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
     Call Trace:
      <TASK>
      dump_stack_lvl+0x6e/0xa0
      print_circular_bug.cold+0x178/0x1be
      check_noncircular+0x146/0x160
      __lock_acquire+0x1405/0x2210
      lock_acquire+0x174/0x310
      ? ring_buffer_map+0x11c/0xe70
      ? ring_buffer_map+0x11c/0xe70
      ? __mutex_lock+0x169/0x18c0
      __mutex_lock+0x192/0x18c0
      ? ring_buffer_map+0x11c/0xe70
      ? ring_buffer_map+0x11c/0xe70
      ? function_trace_call+0x296/0x370
      ? __pfx___mutex_lock+0x10/0x10
      ? __pfx_function_trace_call+0x10/0x10
      ? __pfx___mutex_lock+0x10/0x10
      ? _raw_spin_unlock+0x2d/0x50
      ? ring_buffer_map+0x11c/0xe70
      ? ring_buffer_map+0x11c/0xe70
      ? __mutex_lock+0x5/0x18c0
      ring_buffer_map+0x11c/0xe70
      ? do_raw_spin_lock+0x12d/0x270
      ? find_held_lock+0x2b/0x80
      ? _raw_spin_unlock+0x2d/0x50
      ? rcu_is_watching+0x15/0xb0
      ? _raw_spin_unlock+0x2d/0x50
      ? trace_preempt_on+0xd0/0x110
      tracing_buffers_mmap+0x1c4/0x3b0
      __mmap_region+0xd8d/0x1f70
      ? ring_buffer_lock_reserve+0x99/0xff0
      ? __pfx___mmap_region+0x10/0x10
      ? ring_buffer_lock_reserve+0x99/0xff0
      ? __pfx_ring_buffer_lock_reserve+0x10/0x10
      ? __pfx_ring_buffer_lock_reserve+0x10/0x10
      ? bpf_lsm_mmap_addr+0x4/0x10
      ? security_mmap_addr+0x46/0xd0
      ? lock_is_held_type+0xd9/0x130
      do_mmap+0x9d7/0x1010
      ? 0xffffffffc0370095
      ? __pfx_do_mmap+0x10/0x10
      vm_mmap_pgoff+0x20b/0x390
      ? __pfx_vm_mmap_pgoff+0x10/0x10
      ? 0xffffffffc0370095
      ksys_mmap_pgoff+0x2e9/0x440
      do_syscall_64+0x79/0x1c0
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
     RIP: 0033:0x7fb0963a7de2
     Code: 00 00 00 0f 1f 44 00 00 41 f7 c1 ff 0f 00 00 75 27 55 89 cd 53 48 89 fb 48 85 ff 74 3b 41 89 ea 48 89 df b8 09 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 76 5b 5d c3 0f 1f 00 48 8b 05 e1 9f 0d 00 64
     RSP: 002b:00007ffdcc8fb878 EFLAGS: 00000246 ORIG_RAX: 0000000000000009
     RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb0963a7de2
     RDX: 0000000000000001 RSI: 0000000000001000 RDI: 0000000000000000
     RBP: 0000000000000001 R08: 0000000000000006 R09: 0000000000000000
     R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000000
     R13: 00007ffdcc8fbe68 R14: 00007fb096628000 R15: 00005633e01a5c90
      </TASK>
    
    The issue is that cpus_read_lock() is taken within buffer->mutex. The
    memory mapped pages are taken with the mmap_lock held. The buffer->mutex
    is taken within the cpu_buffer->mapping_lock. There's quite a chain with
    all these locks, where the deadlock can be fixed by moving the
    cpus_read_lock() outside the taking of the buffer->mutex.
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Vincent Donnefort <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: 117c39200d9d7 ("ring-buffer: Introducing ring-buffer mapping functions")
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
RISC-V: KVM: lock the correct mp_state during reset [+ + +]
Author: Radim Krčmář <[email protected]>
Date:   Fri May 23 12:47:28 2025 +0200

    RISC-V: KVM: lock the correct mp_state during reset
    
    [ Upstream commit 7917be170928189fefad490d1a1237fdfa6b856f ]
    
    Currently, the kvm_riscv_vcpu_sbi_system_reset() function locks
    vcpu->arch.mp_state_lock when updating tmp->arch.mp_state.mp_state
    which is incorrect hence fix it.
    
    Fixes: 2121cadec45a ("RISCV: KVM: Introduce mp_state_lock to avoid lock inversion")
    Signed-off-by: Radim Krčmář <[email protected]>
    Reviewed-by: Anup Patel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Anup Patel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
riscv: misaligned: fix sleeping function called during misaligned access handling [+ + +]
Author: Nylon Chen <[email protected]>
Date:   Fri Apr 11 15:38:50 2025 +0800

    riscv: misaligned: fix sleeping function called during misaligned access handling
    
    [ Upstream commit 61a74ad254628ccd9e88838c3c622885dfb6c588 ]
    
    Use copy_from_user_nofault() and copy_to_user_nofault() instead of
    copy_from/to_user functions in the misaligned access trap handlers.
    
    The following bug report was found when executing misaligned memory
    accesses:
    
    BUG: sleeping function called from invalid context at ./include/linux/uaccess.h:162
    in_atomic(): 0, irqs_disabled(): 1, non_block: 0, pid: 115, name: two
    preempt_count: 0, expected: 0
    CPU: 0 UID: 0 PID: 115 Comm: two Not tainted 6.14.0-rc5 #24
    Hardware name: riscv-virtio,qemu (DT)
    Call Trace:
     [<ffffffff800160ea>] dump_backtrace+0x1c/0x24
     [<ffffffff80002304>] show_stack+0x28/0x34
     [<ffffffff80010fae>] dump_stack_lvl+0x4a/0x68
     [<ffffffff80010fe0>] dump_stack+0x14/0x1c
     [<ffffffff8004e44e>] __might_resched+0xfa/0x104
     [<ffffffff8004e496>] __might_sleep+0x3e/0x62
     [<ffffffff801963c4>] __might_fault+0x1c/0x24
     [<ffffffff80425352>] _copy_from_user+0x28/0xaa
     [<ffffffff8000296c>] handle_misaligned_store+0x204/0x254
     [<ffffffff809eae82>] do_trap_store_misaligned+0x24/0xee
     [<ffffffff809f4f1a>] handle_exception+0x146/0x152
    
    Fixes: b686ecdeacf6 ("riscv: misaligned: Restrict user access to kernel memory")
    Fixes: 441381506ba7 ("riscv: misaligned: remove CONFIG_RISCV_M_MODE specific code")
    
    Signed-off-by: Zong Li <[email protected]>
    Signed-off-by: Nylon Chen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Palmer Dabbelt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rpmsg: qcom_smd: Fix uninitialized return variable in __qcom_smd_send() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Wed Apr 23 20:22:05 2025 +0300

    rpmsg: qcom_smd: Fix uninitialized return variable in __qcom_smd_send()
    
    [ Upstream commit 5de775df3362090a6e90046d1f2d83fe62489aa0 ]
    
    The "ret" variable isn't initialized if we don't enter the loop.  For
    example,  if "channel->state" is not SMD_CHANNEL_OPENED.
    
    Fixes: 33e3820dda88 ("rpmsg: smd: Use spinlock in tx path")
    Signed-off-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rtc: loongson: Add missing alarm notifications for ACPI RTC events [+ + +]
Author: Liu Dalin <[email protected]>
Date:   Fri May 9 16:44:16 2025 +0800

    rtc: loongson: Add missing alarm notifications for ACPI RTC events
    
    [ Upstream commit 5af9f1fa576874b24627d4c05e3a84672204c200 ]
    
    When an application sets and enables an alarm on Loongson RTC devices,
    the alarm notification fails to propagate to userspace because the
    ACPI event handler omits calling rtc_update_irq().
    
    As a result, processes waiting via select() or poll() on RTC device
    files fail to receive alarm notifications.
    
    The ACPI interrupt is also triggered multiple times. In loongson_rtc_handler,
    we need to clear TOY_MATCH0_REG to resolve this issue.
    
    Fixes: 09471d8f5b39 ("rtc: loongson: clear TOY_MATCH0_REG in loongson_rtc_isr()")
    Fixes: 1b733a9ebc3d ("rtc: Add rtc driver for the Loongson family chips")
    Signed-off-by: Liu Dalin <[email protected]>
    Reviewed-by: Binbin Zhou <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

rtc: sh: assign correct interrupts with DT [+ + +]
Author: Wolfram Sang <[email protected]>
Date:   Thu Feb 27 14:42:56 2025 +0100

    rtc: sh: assign correct interrupts with DT
    
    [ Upstream commit 8f2efdbc303fe7baa83843d3290dd6ea5ba3276c ]
    
    The DT bindings for this driver define the interrupts in the order as
    they are numbered in the interrupt controller. The old platform_data,
    however, listed them in a different order. So, for DT based platforms,
    they are mixed up. Assign them specifically for DT, so we can keep the
    bindings stable. After the fix, 'rtctest' passes again on the Renesas
    Genmai board (RZ-A1 / R7S72100).
    
    Fixes: dab5aec64bf5 ("rtc: sh: add support for rza series")
    Signed-off-by: Wolfram Sang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexandre Belloni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
rust: alloc: add missing invariant in Vec::set_len() [+ + +]
Author: Danilo Krummrich <[email protected]>
Date:   Sat Mar 15 16:43:02 2025 +0100

    rust: alloc: add missing invariant in Vec::set_len()
    
    [ Upstream commit fb1bf1067de979c89ae33589e0466d6ce0dde204 ]
    
    When setting a new length, we have to justify that the set length
    represents the exact number of elements stored in the vector.
    
    Reviewed-by: Benno Lossin <[email protected]>
    Reported-by: Alice Ryhl <[email protected]>
    Closes: https://lore.kernel.org/rust-for-linux/[email protected]
    Fixes: 2aac4cd7dae3 ("rust: alloc: implement kernel `Vec` type")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Danilo Krummrich <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/bpf: Store backchain even for leaf progs [+ + +]
Author: Ilya Leoshkevich <[email protected]>
Date:   Mon May 12 14:26:15 2025 +0200

    s390/bpf: Store backchain even for leaf progs
    
    [ Upstream commit 5f55f2168432298f5a55294831ab6a76a10cb3c3 ]
    
    Currently a crash in a leaf prog (caused by a bug) produces the
    following call trace:
    
         [<000003ff600ebf00>] bpf_prog_6df0139e1fbf2789_fentry+0x20/0x78
         [<0000000000000000>] 0x0
    
    This is because leaf progs do not store backchain. Fix by making all
    progs do it. This is what GCC and Clang-generated code does as well.
    Now the call trace looks like this:
    
         [<000003ff600eb0f2>] bpf_prog_6df0139e1fbf2789_fentry+0x2a/0x80
         [<000003ff600ed096>] bpf_trampoline_201863462940+0x96/0xf4
         [<000003ff600e3a40>] bpf_prog_05f379658fdd72f2_classifier_0+0x58/0xc0
         [<000003ffe0aef070>] bpf_test_run+0x210/0x390
         [<000003ffe0af0dc2>] bpf_prog_test_run_skb+0x25a/0x668
         [<000003ffe038a90e>] __sys_bpf+0xa46/0xdb0
         [<000003ffe038ad0c>] __s390x_sys_bpf+0x44/0x50
         [<000003ffe0defea8>] __do_syscall+0x150/0x280
         [<000003ffe0e01d5c>] system_call+0x74/0x98
    
    Fixes: 054623105728 ("s390/bpf: Add s390x eBPF JIT compiler backend")
    Signed-off-by: Ilya Leoshkevich <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
sched/core: Tweak wait_task_inactive() to force dequeue sched_delayed tasks [+ + +]
Author: John Stultz <[email protected]>
Date:   Tue Apr 29 08:07:26 2025 -0700

    sched/core: Tweak wait_task_inactive() to force dequeue sched_delayed tasks
    
    [ Upstream commit b7ca5743a2604156d6083b88cefacef983f3a3a6 ]
    
    It was reported that in 6.12, smpboot_create_threads() was
    taking much longer then in 6.6.
    
    I narrowed down the call path to:
     smpboot_create_threads()
     -> kthread_create_on_cpu()
        -> kthread_bind()
           -> __kthread_bind_mask()
              ->wait_task_inactive()
    
    Where in wait_task_inactive() we were regularly hitting the
    queued case, which sets a 1 tick timeout, which when called
    multiple times in a row, accumulates quickly into a long
    delay.
    
    I noticed disabling the DELAY_DEQUEUE sched feature recovered
    the performance, and it seems the newly create tasks are usually
    sched_delayed and left on the runqueue.
    
    So in wait_task_inactive() when we see the task
    p->se.sched_delayed, manually dequeue the sched_delayed task
    with DEQUEUE_DELAYED, so we don't have to constantly wait a
    tick.
    
    Fixes: 152e11f6df29 ("sched/fair: Implement delayed dequeue")
    Reported-by: [email protected]
    Signed-off-by: John Stultz <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Tested-by: K Prateek Nayak <[email protected]>
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
sched: Fix trace_sched_switch(.prev_state) [+ + +]
Author: Peter Zijlstra <[email protected]>
Date:   Wed Mar 19 22:23:23 2025 +0100

    sched: Fix trace_sched_switch(.prev_state)
    
    [ Upstream commit 8feb053d53194382fcfb68231296fdc220497ea6 ]
    
    Gabriele noted that in case of signal_pending_state(), the tracepoint
    sees a stale task-state.
    
    Fixes: fa2c3254d7cf ("sched/tracing: Don't re-read p->state when emitting sched_switch event")
    Reported-by: Gabriele Monaco <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Cc: Valentin Schneider <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: core: ufs: Fix a hang in the error handler [+ + +]
Author: Sanjeev Yadav <[email protected]>
Date:   Fri May 23 13:14:01 2025 -0700

    scsi: core: ufs: Fix a hang in the error handler
    
    [ Upstream commit 8a3514d348de87a9d5e2ac00fbac4faae0b97996 ]
    
    ufshcd_err_handling_prepare() calls ufshcd_rpm_get_sync(). The latter
    function can only succeed if UFSHCD_EH_IN_PROGRESS is not set because
    resuming involves submitting a SCSI command and ufshcd_queuecommand()
    returns SCSI_MLQUEUE_HOST_BUSY if UFSHCD_EH_IN_PROGRESS is set. Fix this
    hang by setting UFSHCD_EH_IN_PROGRESS after ufshcd_rpm_get_sync() has
    been called instead of before.
    
    Backtrace:
    __switch_to+0x174/0x338
    __schedule+0x600/0x9e4
    schedule+0x7c/0xe8
    schedule_timeout+0xa4/0x1c8
    io_schedule_timeout+0x48/0x70
    wait_for_common_io+0xa8/0x160 //waiting on START_STOP
    wait_for_completion_io_timeout+0x10/0x20
    blk_execute_rq+0xe4/0x1e4
    scsi_execute_cmd+0x108/0x244
    ufshcd_set_dev_pwr_mode+0xe8/0x250
    __ufshcd_wl_resume+0x94/0x354
    ufshcd_wl_runtime_resume+0x3c/0x174
    scsi_runtime_resume+0x64/0xa4
    rpm_resume+0x15c/0xa1c
    __pm_runtime_resume+0x4c/0x90 // Runtime resume ongoing
    ufshcd_err_handler+0x1a0/0xd08
    process_one_work+0x174/0x808
    worker_thread+0x15c/0x490
    kthread+0xf4/0x1ec
    ret_from_fork+0x10/0x20
    
    Signed-off-by: Sanjeev Yadav <[email protected]>
    [ bvanassche: rewrote patch description ]
    Fixes: 62694735ca95 ("[SCSI] ufs: Add runtime PM support for UFS host controller driver")
    Signed-off-by: Bart Van Assche <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Peter Wang <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: hisi_sas: Call I_T_nexus after soft reset for SATA disk [+ + +]
Author: Yihang Li <[email protected]>
Date:   Mon Apr 14 16:08:44 2025 +0800

    scsi: hisi_sas: Call I_T_nexus after soft reset for SATA disk
    
    [ Upstream commit e4d953ca557e02edd3aed7390043e1b8ad1c9723 ]
    
    In commit 21c7e972475e ("scsi: hisi_sas: Disable SATA disk phy for severe
    I_T nexus reset failure"), if the softreset fails upon certain
    conditions, the PHY connected to the disk is disabled directly. Manual
    recovery is required, which is inconvenient for users in actual use.
    
    In addition, SATA disks do not support simultaneous connection of multiple
    hosts. Therefore, when multiple controllers are connected to a SATA disk
    at the same time, the controller which is connected later failed to issue
    an ATA softreset to the SATA disk. As a result, the PHY associated with
    the disk is disabled and cannot be automatically recovered.
    
    Now that, we will not focus on the execution result of softreset. No
    matter whether the execution is successful or not, we will directly carry
    out I_T_nexus_reset.
    
    Fixes: 21c7e972475e ("scsi: hisi_sas: Disable SATA disk phy for severe I_T nexus reset failure")
    Signed-off-by: Yihang Li <[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: iscsi: Fix incorrect error path labels for flashnode operations [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Fri May 30 12:29:35 2025 -0700

    scsi: iscsi: Fix incorrect error path labels for flashnode operations
    
    [ Upstream commit 9b17621366d210ffee83262a8754086ebbde5e55 ]
    
    Correct the error handling goto labels used when host lookup fails in
    various flashnode-related event handlers:
    
     - iscsi_new_flashnode()
     - iscsi_del_flashnode()
     - iscsi_login_flashnode()
     - iscsi_logout_flashnode()
     - iscsi_logout_flashnode_sid()
    
    scsi_host_put() is not required when shost is NULL, so jumping to the
    correct label avoids unnecessary operations. These functions previously
    jumped to the wrong goto label (put_host), which did not match the
    intended cleanup logic.
    
    Use the correct exit labels (exit_new_fnode, exit_del_fnode, etc.) to
    ensure proper error handling.  Also remove the unused put_host label
    under iscsi_new_flashnode() as it is no longer needed.
    
    No functional changes beyond accurate error path correction.
    
    Fixes: c6a4bb2ef596 ("[SCSI] scsi_transport_iscsi: Add flash node mgmt support")
    Signed-off-by: Alok Tiwari <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Mike Christie <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: qedf: Use designated initializer for struct qed_fcoe_cb_ops [+ + +]
Author: Kees Cook <[email protected]>
Date:   Fri May 2 15:41:57 2025 -0700

    scsi: qedf: Use designated initializer for struct qed_fcoe_cb_ops
    
    [ Upstream commit d8720235d5b5cad86c1f07f65117ef2a96f8bec7 ]
    
    Recent fixes to the randstruct GCC plugin allowed it to notice
    that this structure is entirely function pointers and is therefore
    subject to randomization, but doing so requires that it always use
    designated initializers. Explicitly specify the "common" member as being
    initialized. Silences:
    
    drivers/scsi/qedf/qedf_main.c:702:9: error: positional initialization of field in 'struct' declared with 'designated_init' attribute [-Werror=designated-init]
      702 |         {
          |         ^
    
    Fixes: 035f7f87b729 ("randstruct: Enable Clang support")
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: smartpqi: Fix smp_processor_id() call trace for preemptible kernels [+ + +]
Author: Yi Zhang <[email protected]>
Date:   Wed Apr 23 13:32:28 2025 -0500

    scsi: smartpqi: Fix smp_processor_id() call trace for preemptible kernels
    
    [ Upstream commit 42d033cf4b517e91c187ad2fbd7b30fdc6d2d62c ]
    
    Correct kernel call trace when calling smp_processor_id() when called in
    preemptible kernels by using raw_smp_processor_id().
    
    smp_processor_id() checks to see if preemption is disabled and if not,
    issue an error message followed by a call to dump_stack().
    
    Brief example of call trace:
    kernel:  check_preemption_disabled: 436 callbacks suppressed
    kernel:  BUG: using smp_processor_id() in preemptible [00000000]
             code: kworker/u1025:0/2354
    kernel:  caller is pqi_scsi_queue_command+0x183/0x310 [smartpqi]
    kernel:  CPU: 129 PID: 2354 Comm: kworker/u1025:0
    kernel:  ...
    kernel:  Workqueue: writeback wb_workfn (flush-253:0)
    kernel:  Call Trace:
    kernel:   <TASK>
    kernel:   dump_stack_lvl+0x34/0x48
    kernel:   check_preemption_disabled+0xdd/0xe0
    kernel:   pqi_scsi_queue_command+0x183/0x310 [smartpqi]
    kernel:  ...
    
    Fixes: 283dcc1b142e ("scsi: smartpqi: add counter for parity write stream requests")
    Reviewed-by: Scott Benesh <[email protected]>
    Reviewed-by: Mike McGowen <[email protected]>
    Tested-by: Don Brace <[email protected]>
    Signed-off-by: Yi Zhang <[email protected]>
    Signed-off-by: Don Brace <[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: ufs: mcq: Delete ufshcd_release_scsi_cmd() in ufshcd_mcq_abort() [+ + +]
Author: ping.gao <[email protected]>
Date:   Fri May 16 16:38:12 2025 +0800

    scsi: ufs: mcq: Delete ufshcd_release_scsi_cmd() in ufshcd_mcq_abort()
    
    [ Upstream commit 53755903b9357e69b2dd6a02fafbb1e30c741895 ]
    
    After UFS_ABORT_TASK has been processed successfully, the host will
    generate MCQ IRQ for ABORT TAG with response OCS_ABORTED. This results in
    ufshcd_compl_one_cqe() calling ufshcd_release_scsi_cmd().
    
    But ufshcd_mcq_abort() already calls ufshcd_release_scsi_cmd(), resulting
    in __ufshcd_release() being called twice. This means
    hba->clk_gating.active_reqs will be decreased twice, making it go
    negative.
    
    Delete ufshcd_release_scsi_cmd() in ufshcd_mcq_abort().
    
    Fixes: f1304d442077 ("scsi: ufs: mcq: Added ufshcd_mcq_abort()")
    Signed-off-by: ping.gao <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Peter Wang <[email protected]>
    Reviewed-by: Bart Van Assche <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: ufs: qcom: Prevent calling phy_exit() before phy_init() [+ + +]
Author: Nitin Rawat <[email protected]>
Date:   Mon May 26 21:08:12 2025 +0530

    scsi: ufs: qcom: Prevent calling phy_exit() before phy_init()
    
    [ Upstream commit 7831003165d37ecb7b33843fcee05cada0359a82 ]
    
    Prevent calling phy_exit() before phy_init() to avoid abnormal power
    count and the following warning during boot up.
    
    [5.146763] phy phy-1d80000.phy.0: phy_power_on was called before phy_init
    
    Fixes: 7bac65687510 ("scsi: ufs: qcom: Power off the PHY if it was already powered on in ufs_qcom_power_up_sequence()")
    Signed-off-by: Nitin Rawat <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Konrad Dybcio <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
seg6: Fix validation of nexthop addresses [+ + +]
Author: Ido Schimmel <[email protected]>
Date:   Wed Jun 4 14:32:52 2025 +0300

    seg6: Fix validation of nexthop addresses
    
    [ Upstream commit 7632fedb266d93ed0ed9f487133e6c6314a9b2d1 ]
    
    The kernel currently validates that the length of the provided nexthop
    address does not exceed the specified length. This can lead to the
    kernel reading uninitialized memory if user space provided a shorter
    length than the specified one.
    
    Fix by validating that the provided length exactly matches the specified
    one.
    
    Fixes: d1df6fd8a1d2 ("ipv6: sr: define core operations for seg6local lightweight tunnel")
    Reviewed-by: Petr Machata <[email protected]>
    Signed-off-by: Ido Schimmel <[email protected]>
    Reviewed-by: David Ahern <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/bpf: Fix bpf_nf selftest failure [+ + +]
Author: Saket Kumar Bhaskar <[email protected]>
Date:   Wed Apr 9 15:26:33 2025 +0530

    selftests/bpf: Fix bpf_nf selftest failure
    
    [ Upstream commit 967e8def1100cb4b08c28a54d27ce69563fdf281 ]
    
    For systems with missing iptables-legacy tool this selftest fails.
    
    Add check to find if iptables-legacy tool is available and skip the
    test if the tool is missing.
    
    Fixes: de9c8d848d90 ("selftests/bpf: S/iptables/iptables-legacy/ in the bpf_nf and xdp_synproxy test")
    Signed-off-by: Saket Kumar Bhaskar <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

selftests/bpf: Fix caps for __xlated/jited_unpriv [+ + +]
Author: Luis Gerhorst <[email protected]>
Date:   Thu May 1 09:35:52 2025 +0200

    selftests/bpf: Fix caps for __xlated/jited_unpriv
    
    [ Upstream commit cf15cdc0f0f39a5c6315200808ec3e3995b0c2d2 ]
    
    Currently, __xlated_unpriv and __jited_unpriv do not work because the
    BPF syscall will overwrite info.jited_prog_len and info.xlated_prog_len
    with 0 if the process is not bpf_capable(). This bug was not noticed
    before, because there is no test that actually uses
    __xlated_unpriv/__jited_unpriv.
    
    To resolve this, simply restore the capabilities earlier (but still
    after loading the program). Adding this here unconditionally is fine
    because the function first checks that the capabilities were initialized
    before attempting to restore them.
    
    This will be important later when we add tests that check whether a
    speculation barrier was inserted in the correct location.
    
    Signed-off-by: Luis Gerhorst <[email protected]>
    Fixes: 9c9f73391310 ("selftests/bpf: allow checking xlated programs in verifier_* tests")
    Fixes: 7d743e4c759c ("selftests/bpf: __jited test tag to check disassembly after jit")
    Acked-by: Kumar Kartikeya Dwivedi <[email protected]>
    Tested-by: Eduard Zingerman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alexei Starovoitov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/seccomp: fix negative_ENOSYS tracer tests on arm32 [+ + +]
Author: Terry Tritton <[email protected]>
Date:   Fri May 9 12:56:22 2025 +0100

    selftests/seccomp: fix negative_ENOSYS tracer tests on arm32
    
    [ Upstream commit 73989c998814d82c71d523c104c398925470d59e ]
    
    TRACE_syscall.ptrace.negative_ENOSYS and TRACE_syscall.seccomp.negative_ENOSYS
    on arm32 are being reported as failures instead of skipping.
    
    The teardown_trace_fixture function sets the test to KSFT_FAIL in case of a
    non 0 return value from the tracer process.
    Due to _metadata now being shared between the forked processes the tracer is
    returning the KSFT_SKIP value set by the tracee which is non 0.
    
    Remove the setting of the _metadata.exit_code in teardown_trace_fixture.
    
    Fixes: 24cf65a62266 ("selftests/harness: Share _metadata between forked processes")
    Signed-off-by: Terry Tritton <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

selftests/seccomp: fix syscall_restart test for arm compat [+ + +]
Author: Neill Kapron <[email protected]>
Date:   Sun Apr 27 09:40:58 2025 +0000

    selftests/seccomp: fix syscall_restart test for arm compat
    
    [ Upstream commit 797002deed03491215a352ace891749b39741b69 ]
    
    The inconsistencies in the systcall ABI between arm and arm-compat can
    can cause a failure in the syscall_restart test due to the logic
    attempting to work around the differences. The 'machine' field for an
    ARM64 device running in compat mode can report 'armv8l' or 'armv8b'
    which matches with the string 'arm' when only examining the first three
    characters of the string.
    
    This change adds additional validation to the workaround logic to make
    sure we only take the arm path when running natively, not in arm-compat.
    
    Fixes: 256d0afb11d6 ("selftests/seccomp: build and pass on arm64")
    Signed-off-by: Neill Kapron <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests: net: build net/lib dependency in all target [+ + +]
Author: Bui Quang Minh <[email protected]>
Date:   Sun Jun 1 21:29:13 2025 +0700

    selftests: net: build net/lib dependency in all target
    
    [ Upstream commit d3f2a9587ebe68f5067f9ff624f9a83dfb911f60 ]
    
    We have the logic to include net/lib automatically for net related
    selftests. However, currently, this logic is only in install target
    which means only `make install` will have net/lib included. This commit
    adds the logic to all target so that all `make`, `make run_tests` and
    `make install` will have net/lib included in net related selftests.
    
    Signed-off-by: Bui Quang Minh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Fixes: b86761ff6374 ("selftests: net: add scaffolding for Netlink tests in Python")
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: Fix potential null-ptr-deref in mlb_usio_probe() [+ + +]
Author: Henry Martin <[email protected]>
Date:   Thu Apr 3 15:03:39 2025 +0800

    serial: Fix potential null-ptr-deref in mlb_usio_probe()
    
    [ Upstream commit 86bcae88c9209e334b2f8c252f4cc66beb261886 ]
    
    devm_ioremap() can return NULL on error. Currently, mlb_usio_probe()
    does not check for this case, which could result in a NULL pointer
    dereference.
    
    Add NULL check after devm_ioremap() to prevent this issue.
    
    Fixes: ba44dc043004 ("serial: Add Milbeaut serial control")
    Signed-off-by: Henry Martin <[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: sh-sci: Move runtime PM enable to sci_probe_single() [+ + +]
Author: Claudiu Beznea <[email protected]>
Date:   Thu Jan 16 20:22:46 2025 +0200

    serial: sh-sci: Move runtime PM enable to sci_probe_single()
    
    [ Upstream commit 239f11209e5f282e16f5241b99256e25dd0614b6 ]
    
    Relocate the runtime PM enable operation to sci_probe_single(). This change
    prepares the codebase for upcoming fixes.
    
    While at it, replace the existing logic with a direct call to
    devm_pm_runtime_enable() and remove sci_cleanup_single(). The
    devm_pm_runtime_enable() function automatically handles disabling runtime
    PM during driver removal.
    
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Claudiu Beznea <[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]>

 
soc: aspeed: Add NULL check in aspeed_lpc_enable_snoop() [+ + +]
Author: Henry Martin <[email protected]>
Date:   Thu May 15 16:00:44 2025 +0930

    soc: aspeed: Add NULL check in aspeed_lpc_enable_snoop()
    
    [ Upstream commit f1706e0e1a74b095cbc60375b9b1e6205f5f4c98 ]
    
    devm_kasprintf() returns NULL when memory allocation fails. Currently,
    aspeed_lpc_enable_snoop() does not check for this case, which results in a
    NULL pointer dereference.
    
    Add NULL check after devm_kasprintf() to prevent this issue.
    
    Fixes: 3772e5da4454 ("drivers/misc: Aspeed LPC snoop output using misc chardev")
    Signed-off-by: Henry Martin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [arj: Fix Fixes: tag to use subject from 3772e5da4454]
    Signed-off-by: Andrew Jeffery <[email protected]>
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soc: aspeed: lpc: Fix impossible judgment condition [+ + +]
Author: Su Hui <[email protected]>
Date:   Thu May 15 16:00:43 2025 +0930

    soc: aspeed: lpc: Fix impossible judgment condition
    
    [ Upstream commit d9f0a97e859bdcef51f9c187b1eb712eb13fd3ff ]
    
    smatch error:
    drivers/soc/aspeed/aspeed-lpc-snoop.c:169
    aspeed_lpc_snoop_config_irq() warn: platform_get_irq() does not return zero
    
    platform_get_irq() return non-zero IRQ number or negative error code,
    change '!lpc_snoop->irq' to 'lpc_snoop->irq < 0' to fix this.
    
    Fixes: 9f4f9ae81d0a ("drivers/misc: add Aspeed LPC snoop driver")
    Signed-off-by: Su Hui <[email protected]>
    Reviewed-by: Dan Carpenter <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Andrew Jeffery <[email protected]>
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

soc: qcom: smp2p: Fix fallback to qcom,ipc parse [+ + +]
Author: Barnabás Czémán <[email protected]>
Date:   Mon Apr 21 04:04:17 2025 +0200

    soc: qcom: smp2p: Fix fallback to qcom,ipc parse
    
    [ Upstream commit 421777a02bbd9cdabe0ae05a69ee06253150589d ]
    
    mbox_request_channel() returning value was changed in case of error.
    It uses returning value of of_parse_phandle_with_args().
    It is returning with -ENOENT instead of -ENODEV when no mboxes property
    exists.
    
    Fixes: 24fdd5074b20 ("mailbox: use error ret code of of_parse_phandle_with_args()")
    Signed-off-by: Barnabás Czémán <[email protected]>
    Reviewed-by: Stephan Gerhold <[email protected]>
    Tested-by: Stephan Gerhold <[email protected]> # msm8939
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: bcm63xx-hsspi: fix shared reset [+ + +]
Author: Álvaro Fernández Rojas <[email protected]>
Date:   Thu May 29 15:09:15 2025 +0200

    spi: bcm63xx-hsspi: fix shared reset
    
    [ Upstream commit 3d6d84c8f2f66d3fd6a43a1e2ce8e6b54c573960 ]
    
    Some bmips SoCs (bcm6362, bcm63268) share the same SPI reset for both SPI
    and HSSPI controllers, so reset shouldn't be exclusive.
    
    Fixes: 0eeadddbf09a ("spi: bcm63xx-hsspi: add reset support")
    Reported-by: Jonas Gorski <[email protected]>
    Signed-off-by: Álvaro Fernández Rojas <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: bcm63xx-spi: fix shared reset [+ + +]
Author: Álvaro Fernández Rojas <[email protected]>
Date:   Thu May 29 15:09:14 2025 +0200

    spi: bcm63xx-spi: fix shared reset
    
    [ Upstream commit 5ad20e3d8cfe3b2e42bbddc7e0ebaa74479bb589 ]
    
    Some bmips SoCs (bcm6362, bcm63268) share the same SPI reset for both SPI
    and HSSPI controllers, so reset shouldn't be exclusive.
    
    Fixes: 38807adeaf1e ("spi: bcm63xx-spi: add reset support")
    Reported-by: Jonas Gorski <[email protected]>
    Signed-off-by: Álvaro Fernández Rojas <[email protected]>
    Reviewed-by: Florian Fainelli <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: omap2-mcspi: Disable multi mode when CS should be kept asserted after message [+ + +]
Author: Félix Piédallu <[email protected]>
Date:   Fri Jun 6 15:37:24 2025 +0200

    spi: omap2-mcspi: Disable multi mode when CS should be kept asserted after message
    
    [ Upstream commit a5bf5272295d3f058adeee025d2a0b6625f8ba7b ]
    
    When the last transfer of a SPI message has the cs_change flag, the CS is kept
    asserted after the message.
    Multi-mode can't respect this as CS is deasserted by the hardware at the end of
    the message.
    
    Disable multi-mode when not applicable to the current message.
    
    Fixes: d153ff4056cb ("spi: omap2-mcspi: Add support for MULTI-mode")
    Signed-off-by: Félix Piédallu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: omap2-mcspi: Disable multi-mode when the previous message kept CS asserted [+ + +]
Author: Félix Piédallu <[email protected]>
Date:   Fri Jun 6 15:37:25 2025 +0200

    spi: omap2-mcspi: Disable multi-mode when the previous message kept CS asserted
    
    [ Upstream commit 10c24e0d2f7cd2bc8a847cf750f01301ce67dbc8 ]
    
    When the last transfer of a SPI message has the cs_change flag, the CS is kept
    asserted after the message.
    The next message can't use multi-mode because the CS will be briefly deasserted
    before the first transfer.
    
    Remove the early exit of the list_for_each_entry because the last transfer
    actually needs to be always checked.
    
    Fixes: d153ff4056cb ("spi: omap2-mcspi: Add support for MULTI-mode")
    Signed-off-by: Félix Piédallu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: sh-msiof: Fix maximum DMA transfer size [+ + +]
Author: Geert Uytterhoeven <[email protected]>
Date:   Fri May 16 15:32:06 2025 +0200

    spi: sh-msiof: Fix maximum DMA transfer size
    
    [ Upstream commit 0941d5166629cb766000530945e54b4e49680c68 ]
    
    The maximum amount of data to transfer in a single DMA request is
    calculated from the FIFO sizes (which is technically not 100% correct,
    but a simplification, as it is limited by the maximum word count values
    in the Transmit and Control Data Registers).  However, in case there is
    both data to transmit and to receive, the transmit limit is overwritten
    by the receive limit.
    
    Fix this by using the minimum applicable FIFO size instead.  Move the
    calculation outside the loop, so it is not repeated for each individual
    DMA transfer.
    
    As currently tx_fifo_size is always equal to rx_fifo_size, this bug had
    no real impact.
    
    Fixes: fe78d0b7691c0274 ("spi: sh-msiof: Fix FIFO size to 64 word from 256 word")
    Signed-off-by: Geert Uytterhoeven <[email protected]>
    Link: https://patch.msgid.link/d9961767a97758b2614f2ee8afe1bd56dc900a60.1747401908.git.geert+renesas@glider.be
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: tegra210-quad: Fix X1_X2_X4 encoding and support x4 transfers [+ + +]
Author: Vishwaroop A <[email protected]>
Date:   Wed Apr 16 11:06:01 2025 +0000

    spi: tegra210-quad: Fix X1_X2_X4 encoding and support x4 transfers
    
    [ Upstream commit dcb06c638a1174008a985849fa30fc0da7d08904 ]
    
    This patch corrects the QSPI_COMMAND_X1_X2_X4 and QSPI_ADDRESS_X1_X2_X4
    macros to properly encode the bus width for x1, x2, and x4 transfers.
    Although these macros were previously incorrect, they were not being
    used in the driver, so no functionality was affected.
    
    The patch updates tegra_qspi_cmd_config() and tegra_qspi_addr_config()
    function calls to use the actual bus width from the transfer, instead of
    hardcoding it to 0 (which implied x1 mode). This change enables proper
    support for x1, x2, and x4 data transfers by correctly configuring the
    interface width for commands and addresses.
    
    These modifications improve the QSPI driver's flexibility and prepare it
    for future use cases that may require different bus widths for commands
    and addresses.
    
    Fixes: 1b8342cc4a38 ("spi: tegra210-quad: combined sequence mode")
    Signed-off-by: Vishwaroop A <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: tegra210-quad: modify chip select (CS) deactivation [+ + +]
Author: Vishwaroop A <[email protected]>
Date:   Wed Apr 16 11:06:03 2025 +0000

    spi: tegra210-quad: modify chip select (CS) deactivation
    
    [ Upstream commit d8966b65413390d1b5b706886987caac05fbe024 ]
    
    Modify the chip select (CS) deactivation and inter-transfer delay
    execution only during the DATA_TRANSFER phase when the cs_change
    flag is not set. This ensures proper CS handling and timing between
    transfers while eliminating redundant operations.
    
    Fixes: 1b8342cc4a38 ("spi: tegra210-quad: combined sequence mode")
    Signed-off-by: Vishwaroop A <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: tegra210-quad: remove redundant error handling code [+ + +]
Author: Vishwaroop A <[email protected]>
Date:   Wed Apr 16 11:06:02 2025 +0000

    spi: tegra210-quad: remove redundant error handling code
    
    [ Upstream commit 400d9f1a27cc2fceabdb1ed93eaf0b89b6d32ba5 ]
    
    Remove unnecessary error handling code that terminated transfers and
    executed delay on errors. This code was redundant as error handling is
    already done at a higher level in the SPI core.
    
    Fixes: 1b8342cc4a38 ("spi: tegra210-quad: combined sequence mode")
    Signed-off-by: Vishwaroop A <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Squashfs: check return result of sb_min_blocksize [+ + +]
Author: Phillip Lougher <[email protected]>
Date:   Wed Apr 9 03:47:47 2025 +0100

    Squashfs: check return result of sb_min_blocksize
    
    [ Upstream commit 734aa85390ea693bb7eaf2240623d41b03705c84 ]
    
    Syzkaller reports an "UBSAN: shift-out-of-bounds in squashfs_bio_read" bug.
    
    Syzkaller forks multiple processes which after mounting the Squashfs
    filesystem, issues an ioctl("/dev/loop0", LOOP_SET_BLOCK_SIZE, 0x8000).
    Now if this ioctl occurs at the same time another process is in the
    process of mounting a Squashfs filesystem on /dev/loop0, the failure
    occurs.  When this happens the following code in squashfs_fill_super()
    fails.
    
    ----
    msblk->devblksize = sb_min_blocksize(sb, SQUASHFS_DEVBLK_SIZE);
    msblk->devblksize_log2 = ffz(~msblk->devblksize);
    ----
    
    sb_min_blocksize() returns 0, which means msblk->devblksize is set to 0.
    
    As a result, ffz(~msblk->devblksize) returns 64, and msblk->devblksize_log2
    is set to 64.
    
    This subsequently causes the
    
    UBSAN: shift-out-of-bounds in fs/squashfs/block.c:195:36
    shift exponent 64 is too large for 64-bit type 'u64' (aka
    'unsigned long long')
    
    This commit adds a check for a 0 return by sb_min_blocksize().
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 0aa666190509 ("Squashfs: super block operations")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Phillip Lougher <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
svcrdma: Reduce the number of rdma_rw contexts per-QP [+ + +]
Author: Chuck Lever <[email protected]>
Date:   Mon Apr 28 15:36:49 2025 -0400

    svcrdma: Reduce the number of rdma_rw contexts per-QP
    
    [ Upstream commit 59243315890578a040a2d50ae9e001a2ef2fcb62 ]
    
    There is an upper bound on the number of rdma_rw contexts that can
    be created per QP.
    
    This invisible upper bound is because rdma_create_qp() adds one or
    more additional SQEs for each ctxt that the ULP requests via
    qp_attr.cap.max_rdma_ctxs. The QP's actual Send Queue length is on
    the order of the sum of qp_attr.cap.max_send_wr and a factor times
    qp_attr.cap.max_rdma_ctxs. The factor can be up to three, depending
    on whether MR operations are required before RDMA Reads.
    
    This limit is not visible to RDMA consumers via dev->attrs. When the
    limit is surpassed, QP creation fails with -ENOMEM. For example:
    
    svcrdma's estimate of the number of rdma_rw contexts it needs is
    three times the number of pages in RPCSVC_MAXPAGES. When MAXPAGES
    is about 260, the internally-computed SQ length should be:
    
    64 credits + 10 backlog + 3 * (3 * 260) = 2414
    
    Which is well below the advertised qp_max_wr of 32768.
    
    If RPCSVC_MAXPAGES is increased to 4MB, that's 1040 pages:
    
    64 credits + 10 backlog + 3 * (3 * 1040) = 9434
    
    However, QP creation fails. Dynamic printk for mlx5 shows:
    
    calc_sq_size:618:(pid 1514): send queue size (9326 * 256 / 64 -> 65536) exceeds limits(32768)
    
    Although 9326 is still far below qp_max_wr, QP creation still
    fails.
    
    Because the total SQ length calculation is opaque to RDMA consumers,
    there doesn't seem to be much that can be done about this except for
    consumers to try to keep the requested rdma_rw ctxt count low.
    
    Fixes: 2da0f610e733 ("svcrdma: Increase the per-transport rw_ctx count")
    Reviewed-by: NeilBrown <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Chuck Lever <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
thermal/drivers/mediatek/lvts: Fix debugfs unregister on failure [+ + +]
Author: AngeloGioacchino Del Regno <[email protected]>
Date:   Wed Apr 2 10:38:52 2025 +0200

    thermal/drivers/mediatek/lvts: Fix debugfs unregister on failure
    
    [ Upstream commit b49825661af93d9b8d7236f914803f136896f8fd ]
    
    When running the probe function for this driver, the function
    lvts_debugfs_init() gets called in lvts_domain_init() which, in
    turn, gets called in lvts_probe() before registering threaded
    interrupt handlers.
    
    Even though it's unlikely, the last call may fail and, if it does,
    there's nothing removing the already created debugfs folder and
    files.
    
    In order to fix that, instead of calling the lvts debugfs cleanup
    function upon failure, register a devm action that will take care
    of calling that upon failure or driver removal.
    
    Since devm was used, also delete the call to lvts_debugfs_exit()
    in the lvts_remove() callback, as now that's done automatically.
    
    Fixes: f5f633b18234 ("thermal/drivers/mediatek: Add the Low Voltage Thermal Sensor driver")
    Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
    Reviewed-by: Chen-Yu Tsai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Daniel Lezcano <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

thermal/drivers/mediatek/lvts: Remove unused lvts_debugfs_exit [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Mon May 5 07:24:52 2025 +0200

    thermal/drivers/mediatek/lvts: Remove unused lvts_debugfs_exit
    
    commit 3159c96ac2cb3a104ce8ee5b8a4afe98e4b8fcad upstream.
    
    When debugfs is disabled, the function has no reference any more:
    
    drivers/thermal/mediatek/lvts_thermal.c:266:13: error: 'lvts_debugfs_exit' defined but not used [-Werror=unused-function]
      266 | static void lvts_debugfs_exit(struct lvts_domain *lvts_td) { }
          |             ^~~~~~~~~~~~~~~~~
    
    Fixes: ef280c17a840 ("thermal/drivers/mediatek/lvts: Fix debugfs unregister on failure")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Daniel Lezcano <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
thunderbolt: Fix a logic error in wake on connect [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Fri Apr 11 10:14:44 2025 -0500

    thunderbolt: Fix a logic error in wake on connect
    
    [ Upstream commit 1a760d10ded372d113a0410c42be246315bbc2ff ]
    
    commit a5cfc9d65879c ("thunderbolt: Add wake on connect/disconnect
    on USB4 ports") introduced a sysfs file to control wake up policy
    for a given USB4 port that defaulted to disabled.
    
    However when testing commit 4bfeea6ec1c02 ("thunderbolt: Use wake
    on connect and disconnect over suspend") I found that it was working
    even without making changes to the power/wakeup file (which defaults
    to disabled). This is because of a logic error doing a bitwise or
    of the wake-on-connect flag with device_may_wakeup() which should
    have been a logical AND.
    
    Adjust the logic so that policy is only applied when wakeup is
    actually enabled.
    
    Fixes: a5cfc9d65879c ("thunderbolt: Add wake on connect/disconnect on USB4 ports")
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Mika Westerberg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tools/power turbostat: Fix AMD package-energy reporting [+ + +]
Author: Gautham R. Shenoy <[email protected]>
Date:   Thu May 29 17:18:25 2025 +0530

    tools/power turbostat: Fix AMD package-energy reporting
    
    [ Upstream commit adb49732c8c63665dd3476e8e6b7c67a0f851245 ]
    
    commit 05a2f07db888 ("tools/power turbostat: read RAPL counters via
    perf") that adds support to read RAPL counters via perf defines the
    notion of a RAPL domain_id which is set to physical_core_id on
    platforms which support per_core_rapl counters (Eg: AMD processors
    Family 17h onwards) and is set to the physical_package_id on all the
    other platforms.
    
    However, the physical_core_id is only unique within a package and on
    platforms with multiple packages more than one core can have the same
    physical_core_id and thus the same domain_id. (For eg, the first cores
    of each package have the physical_core_id = 0). This results in all
    these cores with the same physical_core_id using the same entry in the
    rapl_counter_info_perdomain[]. Since rapl_perf_init() skips the
    perf-initialization for cores whose domain_ids have already been
    visited, cores that have the same physical_core_id always read the
    perf file corresponding to the physical_core_id of the first package
    and thus the package-energy is incorrectly reported to be the same
    value for different packages.
    
    Note: This issue only arises when RAPL counters are read via perf and
    not when they are read via MSRs since in the latter case the MSRs are
    read separately on each core.
    
    Fix this issue by associating each CPU with rapl_core_id which is
    unique across all the packages in the system.
    
    Fixes: 05a2f07db888 ("tools/power turbostat: read RAPL counters via perf")
    Signed-off-by: Gautham R. Shenoy <[email protected]>
    Signed-off-by: Len Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tools/resolve_btfids: Fix build when cross compiling kernel with clang. [+ + +]
Author: Suleiman Souhlal <[email protected]>
Date:   Fri Jun 6 16:45:38 2025 +0900

    tools/resolve_btfids: Fix build when cross compiling kernel with clang.
    
    commit a298bbab903e3fb4cbe16d36d6195e68fad1b776 upstream.
    
    When cross compiling the kernel with clang, we need to override
    CLANG_CROSS_FLAGS when preparing the step libraries.
    
    Prior to commit d1d096312176 ("tools: fix annoying "mkdir -p ..." logs
    when building tools in parallel"), MAKEFLAGS would have been set to a
    value that wouldn't set a value for CLANG_CROSS_FLAGS, hiding the
    fact that we weren't properly overriding it.
    
    Fixes: 56a2df7615fa ("tools/resolve_btfids: Compile resolve_btfids as host program")
    Signed-off-by: Suleiman Souhlal <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Acked-by: Jiri Olsa <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
tools/x86/kcpuid: Fix error handling [+ + +]
Author: Ahmed S. Darwish <[email protected]>
Date:   Mon Mar 24 15:20:22 2025 +0100

    tools/x86/kcpuid: Fix error handling
    
    [ Upstream commit 116edfe173d0c59ec2aa87fb91f2f31d477b61b3 ]
    
    Error handling in kcpuid is unreliable.  On malloc() failures, the code
    prints an error then just goes on.  The error messages are also printed
    to standard output instead of standard error.
    
    Use err() and errx() from <err.h> to direct all error messages to
    standard error and automatically exit the program.  Use err() to include
    the errno information, and errx() otherwise.  Use warnx() for warnings.
    
    While at it, alphabetically reorder the header includes.
    
    [ mingo: Fix capitalization in the help text while at it. ]
    
    Fixes: c6b2f240bf8d ("tools/x86: Add a kcpuid tool to show raw CPU features")
    Reported-by: Remington Brasga <[email protected]>
    Signed-off-by: Ahmed S. Darwish <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: H. Peter Anvin <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Josh Poimboeuf <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Closes: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>
 
tracing: Fix error handling in event_trigger_parse() [+ + +]
Author: Miaoqian Lin <[email protected]>
Date:   Wed May 7 10:53:07 2025 -0400

    tracing: Fix error handling in event_trigger_parse()
    
    [ Upstream commit c5dd28e7fb4f63475b50df4f58311df92939d011 ]
    
    According to trigger_data_alloc() doc, trigger_data_free() should be
    used to free an event_trigger_data object. This fixes a mismatch introduced
    when kzalloc was replaced with trigger_data_alloc without updating
    the corresponding deallocation calls.
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Tom Zanussi <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Link: https://lore.kernel.org/[email protected]
    Fixes: e1f187d09e11 ("tracing: Have existing event_command.parse() implementations use helpers")
    Signed-off-by: Miaoqian Lin <[email protected]>
    [ SDR: Changed event_trigger_alloc/free() to trigger_data_alloc/free() ]
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tracing: Move histogram trigger variables from stack to per CPU structure [+ + +]
Author: Steven Rostedt <[email protected]>
Date:   Mon Apr 7 12:38:51 2025 -0400

    tracing: Move histogram trigger variables from stack to per CPU structure
    
    [ Upstream commit 7ab0fc61ce73040f89b12d76a8279995ec283541 ]
    
    The histogram trigger has three somewhat large arrays on the kernel stack:
    
            unsigned long entries[HIST_STACKTRACE_DEPTH];
            u64 var_ref_vals[TRACING_MAP_VARS_MAX];
            char compound_key[HIST_KEY_SIZE_MAX];
    
    Checking the function event_hist_trigger() stack frame size, it currently
    uses 816 bytes for its stack frame due to these variables!
    
    Instead, allocate a per CPU structure that holds these arrays for each
    context level (normal, softirq, irq and NMI). That is, each CPU will have
    4 of these structures. This will be allocated when the first histogram
    trigger is enabled and freed when the last is disabled. When the
    histogram callback triggers, it will request this structure. The request
    will disable preemption, get the per CPU structure at the index of the
    per CPU variable, and increment that variable.
    
    The callback will use the arrays in this structure to perform its work and
    then release the structure. That in turn will simply decrement the per CPU
    index and enable preemption.
    
    Moving the variables from the kernel stack to the per CPU structure brings
    the stack frame of event_hist_trigger() down to just 112 bytes.
    
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Tom Zanussi <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: 067fe038e70f6 ("tracing: Add variable reference handling to hist triggers")
    Reviewed-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

tracing: Rename event_trigger_alloc() to trigger_data_alloc() [+ + +]
Author: Steven Rostedt <[email protected]>
Date:   Wed May 7 10:53:06 2025 -0400

    tracing: Rename event_trigger_alloc() to trigger_data_alloc()
    
    [ Upstream commit f2947c4b7d0f235621c5daf78aecfbd6e22c05e5 ]
    
    The function event_trigger_alloc() creates an event_trigger_data
    descriptor and states that it needs to be freed via event_trigger_free().
    This is incorrect, it needs to be freed by trigger_data_free() as
    event_trigger_free() adds ref counting.
    
    Rename event_trigger_alloc() to trigger_data_alloc() and state that it
    needs to be freed via trigger_data_free(). This naming convention
    was introducing bugs.
    
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: Tom Zanussi <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Fixes: 86599dbe2c527 ("tracing: Add helper functions to simplify event_command.parse() callback handling")
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tty: serial: 8250_omap: fix TX with DMA for am33xx [+ + +]
Author: Jiri Slaby (SUSE) <[email protected]>
Date:   Thu May 22 07:38:35 2025 +0200

    tty: serial: 8250_omap: fix TX with DMA for am33xx
    
    commit b495021a973e2468497689bd3e29b736747b896f upstream.
    
    Commit 1788cf6a91d9 ("tty: serial: switch from circ_buf to kfifo")
    introduced an error in the TX DMA handling for 8250_omap.
    
    When the OMAP_DMA_TX_KICK flag is set, the "skip_byte" is pulled from
    the kfifo and emitted directly in order to start the DMA. While the
    kfifo is updated, dma->tx_size is not decreased. This leads to
    uart_xmit_advance() called in omap_8250_dma_tx_complete() advancing the
    kfifo by one too much.
    
    In practice, transmitting N bytes has been seen to result in the last
    N-1 bytes being sent repeatedly.
    
    This change fixes the problem by moving all of the dma setup after the
    OMAP_DMA_TX_KICK handling and using kfifo_len() instead of the DMA size
    for the 4-byte cutoff check. This slightly changes the behaviour at
    buffer wraparound, but it still transmits the correct bytes somehow.
    
    Now, the "skip_byte" would no longer be accounted to the stats. As
    previously, dma->tx_size included also this skip byte, up->icount.tx was
    updated by aforementioned uart_xmit_advance() in
    omap_8250_dma_tx_complete(). Fix this by using the uart_fifo_out()
    helper instead of bare kfifo_get().
    
    Based on patch by Mans Rullgard <[email protected]>
    
    Signed-off-by: "Jiri Slaby (SUSE)" <[email protected]>
    Fixes: 1788cf6a91d9 ("tty: serial: switch from circ_buf to kfifo")
    Link: https://lore.kernel.org/all/[email protected]/
    Reported-by: Mans Rullgard <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
usb: acpi: Prevent null pointer dereference in usb_acpi_add_usb4_devlink() [+ + +]
Author: Chenyuan Yang <[email protected]>
Date:   Thu Apr 17 14:50:32 2025 -0500

    usb: acpi: Prevent null pointer dereference in usb_acpi_add_usb4_devlink()
    
    [ Upstream commit 73fb0ec9436ae87bcae067ce35d6cdd72bade86c ]
    
    As demonstrated by the fix for update_port_device_state,
    commit 12783c0b9e2c ("usb: core: Prevent null pointer dereference in update_port_device_state"),
    usb_hub_to_struct_hub() can return NULL in certain scenarios,
    such as during hub driver unbind or teardown race conditions,
    even if the underlying usb_device structure exists.
    
    Plus, all other places that call usb_hub_to_struct_hub() in the same file
    do check for NULL return values.
    
    If usb_hub_to_struct_hub() returns NULL, the subsequent access to
    hub->ports[udev->portnum - 1] will cause a null pointer dereference.
    
    Signed-off-by: Chenyuan Yang <[email protected]>
    Fixes: f1bfb4a6fed6 ("usb: acpi: add device link between tunneled USB3 device and USB4 Host Interface")
    Acked-by: Alan Stern <[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: cdnsp: Fix issue with detecting command completion event [+ + +]
Author: Pawel Laszczak <[email protected]>
Date:   Tue May 13 05:30:09 2025 +0000

    usb: cdnsp: Fix issue with detecting command completion event
    
    commit f4ecdc352646f7d23f348e5c544dbe3212c94fc8 upstream.
    
    In some cases, there is a small-time gap in which CMD_RING_BUSY can be
    cleared by controller but adding command completion event to event ring
    will be delayed. As the result driver will return error code.
    
    This behavior has been detected on usbtest driver (test 9) with
    configuration including ep1in/ep1out bulk and ep2in/ep2out isoc
    endpoint.
    
    Probably this gap occurred because controller was busy with adding some
    other events to event ring.
    
    The CMD_RING_BUSY is cleared to '0' when the Command Descriptor has been
    executed and not when command completion event has been added to event
    ring.
    
    To fix this issue for this test the small delay is sufficient less than
    10us) but to make sure the problem doesn't happen again in the future
    the patch introduces 10 retries to check with delay about 20us before
    returning error code.
    
    Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
    Cc: stable <[email protected]>
    Signed-off-by: Pawel Laszczak <[email protected]>
    Acked-by: Peter Chen <[email protected]>
    Link: https://lore.kernel.org/r/PH7PR07MB9538AA45362ACCF1B94EE9B7DD96A@PH7PR07MB9538.namprd07.prod.outlook.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: cdnsp: Fix issue with detecting USB 3.2 speed [+ + +]
Author: Pawel Laszczak <[email protected]>
Date:   Tue May 13 06:54:03 2025 +0000

    usb: cdnsp: Fix issue with detecting USB 3.2 speed
    
    commit 2852788cfbe9ca1ab68509d65804413871f741f9 upstream.
    
    Patch adds support for detecting SuperSpeedPlus Gen1 x2 and
    SuperSpeedPlus Gen2 x2 speed.
    
    Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
    Cc: stable <[email protected]>
    Signed-off-by: Pawel Laszczak <[email protected]>
    Acked-by: Peter Chen <[email protected]>
    Link: https://lore.kernel.org/r/PH7PR07MB95387AD98EDCA695FECE52BADD96A@PH7PR07MB9538.namprd07.prod.outlook.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: Flush altsetting 0 endpoints before reinitializating them after reset. [+ + +]
Author: Mathias Nyman <[email protected]>
Date:   Wed May 14 16:25:20 2025 +0300

    usb: Flush altsetting 0 endpoints before reinitializating them after reset.
    
    commit 89bb3dc13ac29a563f4e4c555e422882f64742bd upstream.
    
    usb core avoids sending a Set-Interface altsetting 0 request after device
    reset, and instead relies on calling usb_disable_interface() and
    usb_enable_interface() to flush and reset host-side of those endpoints.
    
    xHCI hosts allocate and set up endpoint ring buffers and host_ep->hcpriv
    during usb_hcd_alloc_bandwidth() callback, which in this case is called
    before flushing the endpoint in usb_disable_interface().
    
    Call usb_disable_interface() before usb_hcd_alloc_bandwidth() to ensure
    URBs are flushed before new ring buffers for the endpoints are allocated.
    
    Otherwise host driver will attempt to find and remove old stale URBs
    from a freshly allocated new ringbuffer.
    
    Cc: stable <[email protected]>
    Fixes: 4fe0387afa89 ("USB: don't send Set-Interface after reset")
    Signed-off-by: Mathias Nyman <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
USB: gadget: udc: fix const issue in gadget_match_driver() [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed May 21 15:41:40 2025 +0200

    USB: gadget: udc: fix const issue in gadget_match_driver()
    
    [ Upstream commit 5f5cc794fac605afd3bef8065e33096aeacf6257 ]
    
    gadget_match_driver() takes a const pointer, and then decides to cast it
    away into a non-const one, which is not a good thing to do overall.  Fix
    this up by properly setting the pointers to be const to preserve that
    attribute.
    
    Fixes: d69d80484598 ("driver core: have match() callback in struct bus_type take a const *")
    Link: https://lore.kernel.org/r/2025052139-rash-unsaddle-7c5e@gregkh
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
usb: misc: onboard_usb_dev: fix build warning for CONFIG_USB_ONBOARD_DEV_USB5744=n [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Fri May 23 14:09:43 2025 +0200

    usb: misc: onboard_usb_dev: fix build warning for CONFIG_USB_ONBOARD_DEV_USB5744=n
    
    commit 662a9ece32add94469138ae66999ee16cb37a531 upstream.
    
    When the USB5744 option is disabled, the onboard_usb driver warns about
    unused functions:
    
    drivers/usb/misc/onboard_usb_dev.c:358:12: error: 'onboard_dev_5744_i2c_write_byte' defined but not used [-Werror=unused-function]
      358 | static int onboard_dev_5744_i2c_write_byte(struct i2c_client *client, u16 addr, u8 data)
          |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/usb/misc/onboard_usb_dev.c:313:12: error: 'onboard_dev_5744_i2c_read_byte' defined but not used [-Werror=unused-function]
      313 | static int onboard_dev_5744_i2c_read_byte(struct i2c_client *client, u16 addr, u8 *data)
          |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Extend the #ifdef block a little further to cover all of these functions.
    Ideally we'd use use if(IS_ENABLED()) instead, but that doesn't currently
    work because the i2c_transfer() and i2c_smbus_write_word_data() function
    declarations are hidden  when CONFIG_I2C is disabled.
    
    Fixes: 1143d41922c0 ("usb: misc: onboard_usb_dev: Fix usb5744 initialization sequence")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: misc: onboard_usb_dev: Fix usb5744 initialization sequence [+ + +]
Author: Jonathan Stroud <[email protected]>
Date:   Fri May 16 18:02:40 2025 +0530

    usb: misc: onboard_usb_dev: Fix usb5744 initialization sequence
    
    commit 1143d41922c0f87504f095417ba1870167970143 upstream.
    
    Introduce i2c APIs to read/write for proper configuration register
    programming. It ensures that read-modify-write sequence is performed
    and reserved bit in Runtime Flags 2 register are not touched.
    
    Also legacy smbus block write inserted an extra count value into the
    i2c data stream which breaks the register write on the usb5744.
    
    Switching to new read/write i2c APIs fixes both issues.
    
    Fixes: 6782311d04df ("usb: misc: onboard_usb_dev: add Microchip usb5744 SMBus programming support")
    Cc: stable <[email protected]>
    Signed-off-by: Jonathan Stroud <[email protected]>
    Co-developed-by: Radhey Shyam Pandey <[email protected]>
    Signed-off-by: Radhey Shyam Pandey <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: renesas_usbhs: Reorder clock handling and power management in probe [+ + +]
Author: Lad Prabhakar <[email protected]>
Date:   Mon Apr 7 11:50:02 2025 +0100

    usb: renesas_usbhs: Reorder clock handling and power management in probe
    
    [ Upstream commit ffb34a60ce86656ba12d46e91f1ccc71dd221251 ]
    
    Reorder the initialization sequence in `usbhs_probe()` to enable runtime
    PM before accessing registers, preventing potential crashes due to
    uninitialized clocks.
    
    Currently, in the probe path, registers are accessed before enabling the
    clocks, leading to a synchronous external abort on the RZ/V2H SoC.
    The problematic call flow is as follows:
    
        usbhs_probe()
            usbhs_sys_clock_ctrl()
                usbhs_bset()
                    usbhs_write()
                        iowrite16()  <-- Register access before enabling clocks
    
    Since `iowrite16()` is performed without ensuring the required clocks are
    enabled, this can lead to access errors. To fix this, enable PM runtime
    early in the probe function and ensure clocks are acquired before register
    access, preventing crashes like the following on RZ/V2H:
    
    [13.272640] Internal error: synchronous external abort: 0000000096000010 [#1] PREEMPT SMP
    [13.280814] Modules linked in: cec renesas_usbhs(+) drm_kms_helper fuse drm backlight ipv6
    [13.289088] CPU: 1 UID: 0 PID: 195 Comm: (udev-worker) Not tainted 6.14.0-rc7+ #98
    [13.296640] Hardware name: Renesas RZ/V2H EVK Board based on r9a09g057h44 (DT)
    [13.303834] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [13.310770] pc : usbhs_bset+0x14/0x4c [renesas_usbhs]
    [13.315831] lr : usbhs_probe+0x2e4/0x5ac [renesas_usbhs]
    [13.321138] sp : ffff8000827e3850
    [13.324438] x29: ffff8000827e3860 x28: 0000000000000000 x27: ffff8000827e3ca0
    [13.331554] x26: ffff8000827e3ba0 x25: ffff800081729668 x24: 0000000000000025
    [13.338670] x23: ffff0000c0f08000 x22: 0000000000000000 x21: ffff0000c0f08010
    [13.345783] x20: 0000000000000000 x19: ffff0000c3b52080 x18: 00000000ffffffff
    [13.352895] x17: 0000000000000000 x16: 0000000000000000 x15: ffff8000827e36ce
    [13.360009] x14: 00000000000003d7 x13: 00000000000003d7 x12: 0000000000000000
    [13.367122] x11: 0000000000000000 x10: 0000000000000aa0 x9 : ffff8000827e3750
    [13.374235] x8 : ffff0000c1850b00 x7 : 0000000003826060 x6 : 000000000000001c
    [13.381347] x5 : 000000030d5fcc00 x4 : ffff8000825c0000 x3 : 0000000000000000
    [13.388459] x2 : 0000000000000400 x1 : 0000000000000000 x0 : ffff0000c3b52080
    [13.395574] Call trace:
    [13.398013]  usbhs_bset+0x14/0x4c [renesas_usbhs] (P)
    [13.403076]  platform_probe+0x68/0xdc
    [13.406738]  really_probe+0xbc/0x2c0
    [13.410306]  __driver_probe_device+0x78/0x120
    [13.414653]  driver_probe_device+0x3c/0x154
    [13.418825]  __driver_attach+0x90/0x1a0
    [13.422647]  bus_for_each_dev+0x7c/0xe0
    [13.426470]  driver_attach+0x24/0x30
    [13.430032]  bus_add_driver+0xe4/0x208
    [13.433766]  driver_register+0x68/0x130
    [13.437587]  __platform_driver_register+0x24/0x30
    [13.442273]  renesas_usbhs_driver_init+0x20/0x1000 [renesas_usbhs]
    [13.448450]  do_one_initcall+0x60/0x1d4
    [13.452276]  do_init_module+0x54/0x1f8
    [13.456014]  load_module+0x1754/0x1c98
    [13.459750]  init_module_from_file+0x88/0xcc
    [13.464004]  __arm64_sys_finit_module+0x1c4/0x328
    [13.468689]  invoke_syscall+0x48/0x104
    [13.472426]  el0_svc_common.constprop.0+0xc0/0xe0
    [13.477113]  do_el0_svc+0x1c/0x28
    [13.480415]  el0_svc+0x30/0xcc
    [13.483460]  el0t_64_sync_handler+0x10c/0x138
    [13.487800]  el0t_64_sync+0x198/0x19c
    [13.491453] Code: 2a0103e1 12003c42 12003c63 8b010084 (79400084)
    [13.497522] ---[ end trace 0000000000000000 ]---
    
    Fixes: f1407d5c66240 ("usb: renesas_usbhs: Add Renesas USBHS common code")
    Signed-off-by: Lad Prabhakar <[email protected]>
    Reviewed-by: Yoshihiro Shimoda <[email protected]>
    Tested-by: Yoshihiro Shimoda <[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: typec: fix const issue in typec_match() [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Wed May 21 15:35:24 2025 +0200

    USB: typec: fix const issue in typec_match()
    
    [ Upstream commit ae4432e01dd967a64f6670a152d91d5328032726 ]
    
    typec_match() takes a const pointer, and then decides to cast it away
    into a non-const one, which is not a good thing to do overall.  Fix this
    up by properly setting the pointers to be const to preserve that
    attribute.
    
    Reviewed-by: Heikki Krogerus <[email protected]>
    Link: https://lore.kernel.org/r/2025052126-scholar-stainless-ad55@gregkh
    Fixes: d69d80484598 ("driver core: have match() callback in struct bus_type take a const *")
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
usb: typec: tcpm/tcpci_maxim: Fix bounds check in process_rx() [+ + +]
Author: Amit Sunil Dhamne <[email protected]>
Date:   Fri May 2 16:57:03 2025 -0700

    usb: typec: tcpm/tcpci_maxim: Fix bounds check in process_rx()
    
    commit 0736299d090f5c6a1032678705c4bc0a9511a3db upstream.
    
    Register read of TCPC_RX_BYTE_CNT returns the total size consisting of:
    
      PD message (pending read) size + 1 Byte for Frame Type (SOP*)
    
    This is validated against the max PD message (`struct pd_message`) size
    without accounting for the extra byte for the frame type. Note that the
    struct pd_message does not contain a field for the frame_type. This
    results in false negatives when the "PD message (pending read)" is equal
    to the max PD message size.
    
    Fixes: 6f413b559f86 ("usb: typec: tcpci_maxim: Chip level TCPC driver")
    Signed-off-by: Amit Sunil Dhamne <[email protected]>
    Signed-off-by: Badhri Jagan Sridharan <[email protected]>
    Reviewed-by: Kyle Tso <[email protected]>
    Cc: stable <[email protected]>
    Link: https://lore.kernel.org/stable/20250502-b4-new-fix-pd-rx-count-v1-1-e5711ed09b3d%40google.com
    Reviewed-by: Heikki Krogerus <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: typec: tcpm: move tcpm_queue_vdm_unlocked to asynchronous work [+ + +]
Author: RD Babiera <[email protected]>
Date:   Tue May 6 23:28:53 2025 +0000

    usb: typec: tcpm: move tcpm_queue_vdm_unlocked to asynchronous work
    
    commit 324d45e53f1a36c88bc649dc39e0c8300a41be0a upstream.
    
    A state check was previously added to tcpm_queue_vdm_unlocked to
    prevent a deadlock where the DisplayPort Alt Mode driver would be
    executing work and attempting to grab the tcpm_lock while the TCPM
    was holding the lock and attempting to unregister the altmode, blocking
    on the altmode driver's cancel_work_sync call.
    
    Because the state check isn't protected, there is a small window
    where the Alt Mode driver could determine that the TCPM is
    in a ready state and attempt to grab the lock while the
    TCPM grabs the lock and changes the TCPM state to one that
    causes the deadlock. The callstack is provided below:
    
    [110121.667392][    C7] Call trace:
    [110121.667396][    C7]  __switch_to+0x174/0x338
    [110121.667406][    C7]  __schedule+0x608/0x9f0
    [110121.667414][    C7]  schedule+0x7c/0xe8
    [110121.667423][    C7]  kernfs_drain+0xb0/0x114
    [110121.667431][    C7]  __kernfs_remove+0x16c/0x20c
    [110121.667436][    C7]  kernfs_remove_by_name_ns+0x74/0xe8
    [110121.667442][    C7]  sysfs_remove_group+0x84/0xe8
    [110121.667450][    C7]  sysfs_remove_groups+0x34/0x58
    [110121.667458][    C7]  device_remove_groups+0x10/0x20
    [110121.667464][    C7]  device_release_driver_internal+0x164/0x2e4
    [110121.667475][    C7]  device_release_driver+0x18/0x28
    [110121.667484][    C7]  bus_remove_device+0xec/0x118
    [110121.667491][    C7]  device_del+0x1e8/0x4ac
    [110121.667498][    C7]  device_unregister+0x18/0x38
    [110121.667504][    C7]  typec_unregister_altmode+0x30/0x44
    [110121.667515][    C7]  tcpm_reset_port+0xac/0x370
    [110121.667523][    C7]  tcpm_snk_detach+0x84/0xb8
    [110121.667529][    C7]  run_state_machine+0x4c0/0x1b68
    [110121.667536][    C7]  tcpm_state_machine_work+0x94/0xe4
    [110121.667544][    C7]  kthread_worker_fn+0x10c/0x244
    [110121.667552][    C7]  kthread+0x104/0x1d4
    [110121.667557][    C7]  ret_from_fork+0x10/0x20
    
    [110121.667689][    C7] Workqueue: events dp_altmode_work
    [110121.667697][    C7] Call trace:
    [110121.667701][    C7]  __switch_to+0x174/0x338
    [110121.667710][    C7]  __schedule+0x608/0x9f0
    [110121.667717][    C7]  schedule+0x7c/0xe8
    [110121.667725][    C7]  schedule_preempt_disabled+0x24/0x40
    [110121.667733][    C7]  __mutex_lock+0x408/0xdac
    [110121.667741][    C7]  __mutex_lock_slowpath+0x14/0x24
    [110121.667748][    C7]  mutex_lock+0x40/0xec
    [110121.667757][    C7]  tcpm_altmode_enter+0x78/0xb4
    [110121.667764][    C7]  typec_altmode_enter+0xdc/0x10c
    [110121.667769][    C7]  dp_altmode_work+0x68/0x164
    [110121.667775][    C7]  process_one_work+0x1e4/0x43c
    [110121.667783][    C7]  worker_thread+0x25c/0x430
    [110121.667789][    C7]  kthread+0x104/0x1d4
    [110121.667794][    C7]  ret_from_fork+0x10/0x20
    
    Change tcpm_queue_vdm_unlocked to queue for tcpm_queue_vdm_work,
    which can perform the state check while holding the TCPM lock
    while the Alt Mode lock is no longer held. This requires a new
    struct to hold the vdm data, altmode_vdm_event.
    
    Fixes: cdc9946ea637 ("usb: typec: tcpm: enforce ready state when queueing alt mode vdm")
    Cc: stable <[email protected]>
    Signed-off-by: RD Babiera <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Reviewed-by: Badhri Jagan Sridharan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: usbtmc: Fix read_stb function and get_stb ioctl [+ + +]
Author: Dave Penkler <[email protected]>
Date:   Wed May 21 14:16:55 2025 +0200

    usb: usbtmc: Fix read_stb function and get_stb ioctl
    
    commit acb3dac2805d3342ded7dbbd164add32bbfdf21c upstream.
    
    The usbtmc488_ioctl_read_stb function relied on a positive return from
    usbtmc_get_stb to reset the srq condition in the driver. The
    USBTMC_IOCTL_GET_STB case tested for a positive return to return the stb
    to the user.
    
    Commit: <cac01bd178d6> ("usb: usbtmc: Fix erroneous get_stb ioctl
    error returns") changed the return value of usbtmc_get_stb to 0 on
    success instead of returning the value of usb_control_msg which is
    positive in the normal case. This change caused the function
    usbtmc488_ioctl_read_stb and the USBTMC_IOCTL_GET_STB ioctl to no
    longer function correctly.
    
    Change the test in usbtmc488_ioctl_read_stb to test for failure
    first and return the failure code immediately.
    Change the test for the USBTMC_IOCTL_GET_STB ioctl to test for 0
    instead of a positive value.
    
    Fixes: cac01bd178d6 ("usb: usbtmc: Fix erroneous get_stb ioctl error returns")
    Cc: [email protected]
    Signed-off-by: Dave Penkler <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Linux: Use thread-safe function pointer in libbpf_print [+ + +]
Author: Jonathan Wiepert <[email protected]>
Date:   Thu Apr 24 18:14:57 2025 -0400

    Use thread-safe function pointer in libbpf_print
    
    [ Upstream commit 91dbac4076537b464639953c055c460d2bdfc7ea ]
    
    This patch fixes a thread safety bug where libbpf_print uses the
    global variable storing the print function pointer rather than the local
    variable that had the print function set via __atomic_load_n.
    
    Fixes: f1cb927cdb62 ("libbpf: Ensure print callback usage is thread-safe")
    Signed-off-by: Jonathan Wiepert <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Acked-by: Mykyta Yatsenko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
vfio/type1: Fix error unwind in migration dirty bitmap allocation [+ + +]
Author: Li RongQing <[email protected]>
Date:   Wed May 21 11:46:47 2025 +0800

    vfio/type1: Fix error unwind in migration dirty bitmap allocation
    
    [ Upstream commit 4518e5a60c7fbf0cdff393c2681db39d77b4f87e ]
    
    When setting up dirty page tracking at the vfio IOMMU backend for
    device migration, if an error is encountered allocating a tracking
    bitmap, the unwind loop fails to free previously allocated tracking
    bitmaps.  This occurs because the wrong loop index is used to
    generate the tracking object.  This results in unintended memory
    usage for the life of the current DMA mappings where bitmaps were
    successfully allocated.
    
    Use the correct loop index to derive the tracking object for
    freeing during unwind.
    
    Fixes: d6a4c185660c ("vfio iommu: Implementation of ioctl for dirty pages tracking")
    Signed-off-by: Li RongQing <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Alex Williamson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
VMCI: fix race between vmci_host_setup_notify and vmci_ctx_unset_notify [+ + +]
Author: Wupeng Ma <[email protected]>
Date:   Sat May 10 11:30:40 2025 +0800

    VMCI: fix race between vmci_host_setup_notify and vmci_ctx_unset_notify
    
    commit 1bd6406fb5f36c2bb1e96e27d4c3e9f4d09edde4 upstream.
    
    During our test, it is found that a warning can be trigger in try_grab_folio
    as follow:
    
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 1678 at mm/gup.c:147 try_grab_folio+0x106/0x130
      Modules linked in:
      CPU: 0 UID: 0 PID: 1678 Comm: syz.3.31 Not tainted 6.15.0-rc5 #163 PREEMPT(undef)
      RIP: 0010:try_grab_folio+0x106/0x130
      Call Trace:
       <TASK>
       follow_huge_pmd+0x240/0x8e0
       follow_pmd_mask.constprop.0.isra.0+0x40b/0x5c0
       follow_pud_mask.constprop.0.isra.0+0x14a/0x170
       follow_page_mask+0x1c2/0x1f0
       __get_user_pages+0x176/0x950
       __gup_longterm_locked+0x15b/0x1060
       ? gup_fast+0x120/0x1f0
       gup_fast_fallback+0x17e/0x230
       get_user_pages_fast+0x5f/0x80
       vmci_host_unlocked_ioctl+0x21c/0xf80
      RIP: 0033:0x54d2cd
      ---[ end trace 0000000000000000 ]---
    
    Digging into the source, context->notify_page may init by get_user_pages_fast
    and can be seen in vmci_ctx_unset_notify which will try to put_page. However
    get_user_pages_fast is not finished here and lead to following
    try_grab_folio warning. The race condition is shown as follow:
    
    cpu0                    cpu1
    vmci_host_do_set_notify
    vmci_host_setup_notify
    get_user_pages_fast(uva, 1, FOLL_WRITE, &context->notify_page);
    lockless_pages_from_mm
    gup_pgd_range
    gup_huge_pmd  // update &context->notify_page
                            vmci_host_do_set_notify
                            vmci_ctx_unset_notify
                            notify_page = context->notify_page;
                            if (notify_page)
                            put_page(notify_page);  // page is freed
    __gup_longterm_locked
    __get_user_pages
    follow_trans_huge_pmd
    try_grab_folio // warn here
    
    To slove this, use local variable page to make notify_page can be seen
    after finish get_user_pages_fast.
    
    Fixes: a1d88436d53a ("VMCI: Fix two UVA mapping bugs")
    Cc: stable <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Wupeng Ma <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
vmxnet3: correctly report gso type for UDP tunnels [+ + +]
Author: Ronak Doshi <[email protected]>
Date:   Fri May 30 15:27:00 2025 +0000

    vmxnet3: correctly report gso type for UDP tunnels
    
    [ Upstream commit 982d30c30eaa2ec723df42e3bf526c014c1dbb88 ]
    
    Commit 3d010c8031e3 ("udp: do not accept non-tunnel GSO skbs landing
    in a tunnel") added checks in linux stack to not accept non-tunnel
    GRO packets landing in a tunnel. This exposed an issue in vmxnet3
    which was not correctly reporting GRO packets for tunnel packets.
    
    This patch fixes this issue by setting correct GSO type for the
    tunnel packets.
    
    Currently, vmxnet3 does not support reporting inner fields for LRO
    tunnel packets. The issue is not seen for egress drivers that do not
    use skb inner fields. The workaround is to enable tnl-segmentation
    offload on the egress interfaces if the driver supports it. This
    problem pre-exists this patch fix and can be addressed as a separate
    future patch.
    
    Fixes: dacce2be3312 ("vmxnet3: add geneve and vxlan tunnel offload support")
    Signed-off-by: Ronak Doshi <[email protected]>
    Acked-by: Guolin Yang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [[email protected]: dropped the changelog]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vsock/virtio: fix `rx_bytes` accounting for stream sockets [+ + +]
Author: Stefano Garzarella <[email protected]>
Date:   Wed May 21 14:17:05 2025 +0200

    vsock/virtio: fix `rx_bytes` accounting for stream sockets
    
    [ Upstream commit 45ca7e9f0730ae36fc610e675b990e9cc9ca0714 ]
    
    In `struct virtio_vsock_sock`, we maintain two counters:
    - `rx_bytes`: used internally to track how many bytes have been read.
      This supports mechanisms like .stream_has_data() and sock_rcvlowat().
    - `fwd_cnt`: used for the credit mechanism to inform available receive
      buffer space to the remote peer.
    
    These counters are updated via virtio_transport_inc_rx_pkt() and
    virtio_transport_dec_rx_pkt().
    
    Since the beginning with commit 06a8fc78367d ("VSOCK: Introduce
    virtio_vsock_common.ko"), we call virtio_transport_dec_rx_pkt() in
    virtio_transport_stream_do_dequeue() only when we consume the entire
    packet, so partial reads, do not update `rx_bytes` and `fwd_cnt`.
    
    This is fine for `fwd_cnt`, because we still have space used for the
    entire packet, and we don't want to update the credit for the other
    peer until we free the space of the entire packet. However, this
    causes `rx_bytes` to be stale on partial reads.
    
    Previously, this didn’t cause issues because `rx_bytes` was used only by
    .stream_has_data(), and any unread portion of a packet implied data was
    still available. However, since commit 93b808876682
    ("virtio/vsock: fix logic which reduces credit update messages"), we now
    rely on `rx_bytes` to determine if a credit update should be sent when
    the data in the RX queue drops below SO_RCVLOWAT value.
    
    This patch fixes the accounting by updating `rx_bytes` with the number
    of bytes actually read, even on partial reads, while leaving `fwd_cnt`
    untouched until the packet is fully consumed. Also introduce a new
    `buf_used` counter to check that the remote peer is honoring the given
    credit; this was previously done via `rx_bytes`.
    
    Fixes: 93b808876682 ("virtio/vsock: fix logic which reduces credit update messages")
    Signed-off-by: Stefano Garzarella <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vt: remove VT_RESIZE and VT_RESIZEX from vt_compat_ioctl() [+ + +]
Author: Nicolas Pitre <[email protected]>
Date:   Thu May 15 11:30:52 2025 -0400

    vt: remove VT_RESIZE and VT_RESIZEX from vt_compat_ioctl()
    
    [ Upstream commit c4c7ead7b86c1e7f11c64915b7e5bb6d2e242691 ]
    
    They are listed amon those cmd values that "treat 'arg' as an integer"
    which is wrong. They should instead fall into the default case. Probably
    nobody ever relied on that code since 2009 but still.
    
    Fixes: e92166517e3c ("tty: handle VT specific compat ioctls in vt driver")
    Signed-off-by: Nicolas Pitre <[email protected]>
    Reviewed-by: Jiri Slaby <[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]>

 
watchdog: exar: Shorten identity name to fit correctly [+ + +]
Author: Kees Cook <[email protected]>
Date:   Tue Apr 15 15:52:49 2025 -0700

    watchdog: exar: Shorten identity name to fit correctly
    
    [ Upstream commit 8e28276a569addb8a2324439ae473848ee52b056 ]
    
    The static initializer for struct watchdog_info::identity is too long
    and gets initialized without a trailing NUL byte. Since the length
    of "identity" is part of UAPI and tied to ioctls, just shorten
    the name of the device. Avoids the warning seen with GCC 15's
    -Wunterminated-string-initialization option:
    
    drivers/watchdog/exar_wdt.c:224:27: warning: initializer-string for array of 'unsigned char' truncates NUL terminator but destination lacks 'nonstring' attribute (33 chars into 32 available) [-Wunterminated-string-initialization]
      224 |         .identity       = "Exar/MaxLinear XR28V38x Watchdog",
          |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Fixes: 81126222bd3a ("watchdog: Exar/MaxLinear XR28V38x driver")
    Reviewed-by: Guenter Roeck <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Kees Cook <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: ath11k: avoid burning CPU in ath11k_debugfs_fw_stats_request() [+ + +]
Author: Baochen Qiang <[email protected]>
Date:   Thu Feb 20 16:24:42 2025 +0800

    wifi: ath11k: avoid burning CPU in ath11k_debugfs_fw_stats_request()
    
    [ Upstream commit 9f6e82d11bb9692a90d20b10f87345598945c803 ]
    
    We get report [1] that CPU is running a hot loop in
    ath11k_debugfs_fw_stats_request():
    
    94.60%     0.00%  i3status         [kernel.kallsyms]                 [k] do_syscall_64
            |
             --94.60%--do_syscall_64
                       |
                        --94.55%--__sys_sendmsg
                                  ___sys_sendmsg
                                  ____sys_sendmsg
                                  netlink_sendmsg
                                  netlink_unicast
                                  genl_rcv
                                  netlink_rcv_skb
                                  genl_rcv_msg
                                  |
                                   --94.55%--genl_family_rcv_msg_dumpit
                                             __netlink_dump_start
                                             netlink_dump
                                             genl_dumpit
                                             nl80211_dump_station
                                             |
                                              --94.55%--ieee80211_dump_station
                                                        sta_set_sinfo
                                                        |
                                                         --94.55%--ath11k_mac_op_sta_statistics
                                                                   ath11k_debugfs_get_fw_stats
                                                                   |
                                                                    --94.55%--ath11k_debugfs_fw_stats_request
                                                                              |
                                                                              |--41.73%--_raw_spin_lock_bh
                                                                              |
                                                                              |--22.74%--__local_bh_enable_ip
                                                                              |
                                                                              |--9.22%--_raw_spin_unlock_bh
                                                                              |
                                                                               --6.66%--srso_alias_safe_ret
    
    This is because, if for whatever reason ar->fw_stats_done is not set by
    ath11k_update_stats_event(), ath11k_debugfs_fw_stats_request() won't yield
    CPU before an up to 3s timeout.
    
    Change to completion mechanism to avoid CPU burning.
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37
    
    Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
    Reported-by: Yury Vostrikov <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/ # [1]
    Signed-off-by: Baochen Qiang <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath11k: convert timeouts to secs_to_jiffies() [+ + +]
Author: Easwar Hariharan <[email protected]>
Date:   Tue Dec 10 22:02:45 2024 +0000

    wifi: ath11k: convert timeouts to secs_to_jiffies()
    
    [ Upstream commit b29425972c5234a59b6fb634125420ed74266377 ]
    
    Commit b35108a51cf7 ("jiffies: Define secs_to_jiffies()") introduced
    secs_to_jiffies().  As the value here is a multiple of 1000, use
    secs_to_jiffies() instead of msecs_to_jiffies to avoid the multiplication.
    
    This is converted using scripts/coccinelle/misc/secs_to_jiffies.cocci with
    the following Coccinelle rules:
    
    @@ constant C; @@
    
    - msecs_to_jiffies(C * 1000)
    + secs_to_jiffies(C)
    
    @@ constant C; @@
    
    - msecs_to_jiffies(C * MSEC_PER_SEC)
    + secs_to_jiffies(C)
    
    Link: https://lkml.kernel.org/r/20241210-converge-secs-to-jiffies-v3-14-ddfefd7e9f2a@linux.microsoft.com
    Acked-by: Jeff Johnson <[email protected]>
    Signed-off-by: Easwar Hariharan <[email protected]>
    Cc: Alexander Gordeev <[email protected]>
    Cc: Andrew Lunn <[email protected]>
    Cc: Anna-Maria Behnsen <[email protected]>
    Cc: Catalin Marinas <[email protected]>
    Cc: Christian Borntraeger <[email protected]>
    Cc: Christophe Leroy <[email protected]>
    Cc: Daniel Mack <[email protected]>
    Cc: David Airlie <[email protected]>
    Cc: David S. Miller <[email protected]>
    Cc: Dick Kennedy <[email protected]>
    Cc: Eric Dumazet <[email protected]>
    Cc: Florian Fainelli <[email protected]>
    Cc: Greg Kroah-Hartman <[email protected]>
    Cc: Haojian Zhuang <[email protected]>
    Cc: Heiko Carstens <[email protected]>
    Cc: Ilya Dryomov <[email protected]>
    Cc: Jack Wang <[email protected]>
    Cc: Jakub Kicinski <[email protected]>
    Cc: James Bottomley <[email protected]>
    Cc: James Smart <[email protected]>
    Cc: Jaroslav Kysela <[email protected]>
    Cc: Jeff Johnson <[email protected]>
    Cc: Jens Axboe <[email protected]>
    Cc: Jeroen de Borst <[email protected]>
    Cc: Jiri Kosina <[email protected]>
    Cc: Joe Lawrence <[email protected]>
    Cc: Johan Hedberg <[email protected]>
    Cc: Josh Poimboeuf <[email protected]>
    Cc: Jozsef Kadlecsik <[email protected]>
    Cc: Julia Lawall <[email protected]>
    Cc: Kalle Valo <[email protected]>
    Cc: Louis Peens <[email protected]>
    Cc: Lucas De Marchi <[email protected]>
    Cc: Luiz Augusto von Dentz <[email protected]>
    Cc: Maarten Lankhorst <[email protected]>
    Cc: Madhavan Srinivasan <[email protected]>
    Cc: Marcel Holtmann <[email protected]>
    Cc: Martin K. Petersen <[email protected]>
    Cc: Maxime Ripard <[email protected]>
    Cc: Michael Ellerman <[email protected]>
    Cc: Miroslav Benes <[email protected]>
    Cc: Naveen N Rao <[email protected]>
    Cc: Nicholas Piggin <[email protected]>
    Cc: Nicolas Palix <[email protected]>
    Cc: Oded Gabbay <[email protected]>
    Cc: Ofir Bitton <[email protected]>
    Cc: Pablo Neira Ayuso <[email protected]>
    Cc: Paolo Abeni <[email protected]>
    Cc: Petr Mladek <[email protected]>
    Cc: Praveen Kaligineedi <[email protected]>
    Cc: Ray Jui <[email protected]>
    Cc: Robert Jarzmik <[email protected]>
    Cc: Rodrigo Vivi <[email protected]>
    Cc: Roger Pau Monné <[email protected]>
    Cc: Russell King <[email protected]>
    Cc: Scott Branden <[email protected]>
    Cc: Shailend Chand <[email protected]>
    Cc: Simona Vetter <[email protected]>
    Cc: Simon Horman <[email protected]>
    Cc: Sven Schnelle <[email protected]>
    Cc: Takashi Iwai <[email protected]>
    Cc: Thomas Hellström <[email protected]>
    Cc: Thomas Zimmermann <[email protected]>
    Cc: Vasily Gorbik <[email protected]>
    Cc: Xiubo Li <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Stable-dep-of: 9f6e82d11bb9 ("wifi: ath11k: avoid burning CPU in ath11k_debugfs_fw_stats_request()")
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath11k: don't use static variables in ath11k_debugfs_fw_stats_process() [+ + +]
Author: Baochen Qiang <[email protected]>
Date:   Thu Feb 20 16:24:43 2025 +0800

    wifi: ath11k: don't use static variables in ath11k_debugfs_fw_stats_process()
    
    [ Upstream commit 2bcf73b2612dda7432f2c2eaad6679bd291791f2 ]
    
    Currently ath11k_debugfs_fw_stats_process() is using static variables to count
    firmware stat events. Taking num_vdev as an example, if for whatever reason (
    say ar->num_started_vdevs is 0 or firmware bug etc.) the following condition
    
            (++num_vdev) == total_vdevs_started
    
    is not met, is_end is not set thus num_vdev won't be cleared. Next time when
    firmware stats is requested again, even if everything is working fine, we will
    fail due to the condition above will never be satisfied.
    
    The same applies to num_bcn as well.
    
    Change to use non-static counters so that we have a chance to clear them each
    time firmware stats is requested. Currently only ath11k_fw_stats_request() and
    ath11k_debugfs_fw_stats_request() are requesting firmware stats, so clear
    counters there.
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37
    
    Fixes: da3a9d3c1576 ("ath11k: refactor debugfs code into debugfs.c")
    Signed-off-by: Baochen Qiang <[email protected]>
    Acked-by: Kalle Valo <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath11k: don't wait when there is no vdev started [+ + +]
Author: Baochen Qiang <[email protected]>
Date:   Thu Feb 20 16:24:44 2025 +0800

    wifi: ath11k: don't wait when there is no vdev started
    
    [ Upstream commit 3b6d00fa883075dcaf49221538230e038a9c0b43 ]
    
    For WMI_REQUEST_VDEV_STAT request, firmware might split response into
    multiple events dut to buffer limit, hence currently in
    ath11k_debugfs_fw_stats_process() we wait until all events received.
    In case there is no vdev started, this results in that below condition
    would never get satisfied
    
            ((++ar->fw_stats.num_vdev_recvd) == total_vdevs_started)
    
    finally the requestor would be blocked until wait time out.
    
    The same applies to WMI_REQUEST_BCN_STAT request as well due to:
    
            ((++ar->fw_stats.num_bcn_recvd) == ar->num_started_vdevs)
    
    Change to check the number of started vdev first: if it is zero, finish
    wait directly; if not, follow the old way.
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37
    
    Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
    Signed-off-by: Baochen Qiang <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath11k: fix node corruption in ar->arvifs list [+ + +]
Author: Stone Zhang <[email protected]>
Date:   Thu Mar 20 13:31:45 2025 +0800

    wifi: ath11k: fix node corruption in ar->arvifs list
    
    [ Upstream commit 31e98e277ae47f56632e4d663b1d4fd12ba33ea8 ]
    
    In current WLAN recovery code flow, ath11k_core_halt() only
    reinitializes the "arvifs" list head. This will cause the
    list node immediately following the list head to become an
    invalid list node. Because the prev of that node still points
    to the list head "arvifs", but the next of the list head "arvifs"
    no longer points to that list node.
    
    When a WLAN recovery occurs during the execution of a vif
    removal, and it happens before the spin_lock_bh(&ar->data_lock)
    in ath11k_mac_op_remove_interface(), list_del() will detect the
    previously mentioned situation, thereby triggering a kernel panic.
    
    The fix is to remove and reinitialize all vif list nodes from the
    list head "arvifs" during WLAN halt. The reinitialization is to make
    the list nodes valid, ensuring that the list_del() in
    ath11k_mac_op_remove_interface() can execute normally.
    
    Call trace:
    __list_del_entry_valid_or_report+0xb8/0xd0
    ath11k_mac_op_remove_interface+0xb0/0x27c [ath11k]
    drv_remove_interface+0x48/0x194 [mac80211]
    ieee80211_do_stop+0x6e0/0x844 [mac80211]
    ieee80211_stop+0x44/0x17c [mac80211]
    __dev_close_many+0xac/0x150
    __dev_change_flags+0x194/0x234
    dev_change_flags+0x24/0x6c
    devinet_ioctl+0x3a0/0x670
    inet_ioctl+0x200/0x248
    sock_do_ioctl+0x60/0x118
    sock_ioctl+0x274/0x35c
    __arm64_sys_ioctl+0xac/0xf0
    invoke_syscall+0x48/0x114
    ...
    
    Tested-on: QCA6698AQ hw2.1 PCI WLAN.HSP.1.1-04591-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1
    
    Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
    Signed-off-by: Stone Zhang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath11k: move some firmware stats related functions outside of debugfs [+ + +]
Author: Baochen Qiang <[email protected]>
Date:   Thu Feb 20 16:24:45 2025 +0800

    wifi: ath11k: move some firmware stats related functions outside of debugfs
    
    [ Upstream commit 72610ed7d79da17ee09102534d6c696a4ea8a08e ]
    
    Commit b488c766442f ("ath11k: report rssi of each chain to mac80211 for QCA6390/WCN6855")
    and commit c3b39553fc77 ("ath11k: add signal report to mac80211 for QCA6390 and WCN6855")
    call debugfs functions in mac ops. Those functions are no-ops if CONFIG_ATH11K_DEBUGFS is
    not enabled, thus cause wrong status reported.
    
    Move them to mac.c.
    
    Besides, since WMI_REQUEST_RSSI_PER_CHAIN_STAT and WMI_REQUEST_VDEV_STAT stats could also
    be requested via mac ops, process them directly in ath11k_update_stats_event().
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.37
    
    Fixes: b488c766442f ("ath11k: report rssi of each chain to mac80211 for QCA6390/WCN6855")
    Fixes: c3b39553fc77 ("ath11k: add signal report to mac80211 for QCA6390 and WCN6855")
    Signed-off-by: Baochen Qiang <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath11k: validate ath11k_crypto_mode on top of ath11k_core_qmi_firmware_ready [+ + +]
Author: Rodrigo Gobbi <[email protected]>
Date:   Thu May 22 17:01:12 2025 -0300

    wifi: ath11k: validate ath11k_crypto_mode on top of ath11k_core_qmi_firmware_ready
    
    [ Upstream commit b0d226a60856a1b765bb9a3848c7b2322fd08c47 ]
    
    if ath11k_crypto_mode is invalid (not ATH11K_CRYPT_MODE_SW/ATH11K_CRYPT_MODE_HW),
    ath11k_core_qmi_firmware_ready() will not undo some actions that was previously
    started/configured. Do the validation as soon as possible in order to avoid
    undoing actions in that case and also to fix the following smatch warning:
    
    drivers/net/wireless/ath/ath11k/core.c:2166 ath11k_core_qmi_firmware_ready()
    warn: missing unwind goto?
    
    Signed-off-by: Rodrigo Gobbi <[email protected]>
    Reported-by: kernel test robot <[email protected]>
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/r/[email protected]/
    Fixes: aa2092a9bab3 ("ath11k: add raw mode and software crypto support")
    Reviewed-by: Baochen Qiang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Add MSDU length validation for TKIP MIC error [+ + +]
Author: P Praneesh <[email protected]>
Date:   Wed Apr 16 07:49:03 2025 +0530

    wifi: ath12k: Add MSDU length validation for TKIP MIC error
    
    [ Upstream commit 763216fe6c5df95d122c71ef34c342427c987820 ]
    
    In the WBM error path, while processing TKIP MIC errors, MSDU length
    is fetched from the hal_rx_desc's msdu_end. This MSDU length is
    directly passed to skb_put() without validation. In stress test
    scenarios, the WBM error ring may receive invalid descriptors, which
    could lead to an invalid MSDU length.
    
    To fix this, add a check to drop the skb when the calculated MSDU
    length is greater than the skb size.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Signed-off-by: P Praneesh <[email protected]>
    Signed-off-by: Nithyanantham Paramasivam <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/20250416021903.3178962-1-nithyanantham.paramasivam@oss.qualcomm.com
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Fix buffer overflow in debugfs [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Wed Apr 9 14:01:25 2025 +0300

    wifi: ath12k: Fix buffer overflow in debugfs
    
    [ Upstream commit 8c7a5031a6b0d42e640fbd2d5d05f61f74e32dce ]
    
    If the user tries to write more than 32 bytes then it results in memory
    corruption.  Fortunately, this is debugfs so it's limited to root users.
    
    Fixes: 3f73c24f28b3 ("wifi: ath12k: Add support to enable debugfs_htt_stats")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: fix cleanup path after mhi init [+ + +]
Author: Raj Kumar Bhagat <[email protected]>
Date:   Thu Apr 3 15:34:29 2025 +0530

    wifi: ath12k: fix cleanup path after mhi init
    
    [ Upstream commit 6177c97fb6f05bf0473a2806e3bece7e77693209 ]
    
    Currently, the 'err_pci_msi_free' label is misplaced, causing the cleanup
    sequence to be incorrect. Fix this by moving the 'err_pci_msi_free' label
    to the correct position after 'err_irq_affinity_cleanup'.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00209-QCAHKSWPL_SILICONZ-1
    
    Fixes: a3012f206d07 ("wifi: ath12k: set IRQ affinity to CPU0 in case of one MSI vector")
    Signed-off-by: Raj Kumar Bhagat <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: fix GCC_GCC_PCIE_HOT_RST definition for WCN7850 [+ + +]
Author: Baochen Qiang <[email protected]>
Date:   Fri May 23 10:23:05 2025 +0800

    wifi: ath12k: fix GCC_GCC_PCIE_HOT_RST definition for WCN7850
    
    [ Upstream commit 7588a893cde5385ad308400ff167d29a29913b3a ]
    
    GCC_GCC_PCIE_HOT_RST is wrongly defined for WCN7850, causing kernel crash
    on some specific platforms.
    
    Since this register is divergent for WCN7850 and QCN9274, move it to
    register table to allow different definitions. Then correct the register
    address for WCN7850 to fix this issue.
    
    Note IPQ5332 is not affected as it is not PCIe based device.
    
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Signed-off-by: Baochen Qiang <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Reported-by: Parth Pancholi <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Tested-by: Parth Pancholi <[email protected]>
    Link: https://patch.msgid.link/20250523-ath12k-wrong-global-reset-addr-v1-1-3b06eb556196@quicinc.com
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: fix invalid access to memory [+ + +]
Author: Sarika Sharma <[email protected]>
Date:   Tue Apr 8 10:23:27 2025 +0530

    wifi: ath12k: fix invalid access to memory
    
    [ Upstream commit 9f17747fbda6fca934854463873c4abf8061491d ]
    
    In ath12k_dp_rx_msdu_coalesce(), rxcb is fetched from skb and boolean
    is_continuation is part of rxcb.
    Currently, after freeing the skb, the rxcb->is_continuation accessed
    again which is wrong since the memory is already freed.
    This might lead use-after-free error.
    
    Hence, fix by locally defining bool is_continuation from rxcb,
    so that after freeing skb, is_continuation can be used.
    
    Compile tested only.
    
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Signed-off-by: Sarika Sharma <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Fix invalid memory access while forming 802.11 header [+ + +]
Author: P Praneesh <[email protected]>
Date:   Wed Apr 2 23:35:43 2025 +0530

    wifi: ath12k: Fix invalid memory access while forming 802.11 header
    
    [ Upstream commit be908d2360341f8bbc982fff5a5e4f8030c17f74 ]
    
    While forming the 802.11 header from the rx descriptor, skb_push() is
    performed for the 802.11 header length and then calls
    ath12k_dp_rx_desc_get_dot11_hdr(). Since skb_push() moves the skb->data
    pointer backwards by the 802.11 header length, the rx descriptor points to
    a different memory area than intended, causing invalid information to be
    fetched from the rx descriptor.
    
    Also, when IV and ICV are not stripped from the given MSDU, mac80211
    performs PN validation for these MSDUs, which requires the crypto header.
    Before forming the crypto header from the given rx descriptor, skb_push()
    is performed for the crypto header length, which overwrites the memory
    pointed to by the rx descriptor, causing invalid information to form the
    802.11 header.
    
    Fix these issues by moving all rx descriptor accesses before the skb_push()
    operation which ensures the proper 802.11 headers are generated from the
    given rx descriptor and removing ath12k_dp_rxdesc_get_mpdu_frame_ctrl()
    for filling frame control, as this information is already fetched by
    ath12k_dp_rx_desc_get_dot11_hdr().
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Co-developed-by: Karthikeyan Periyasamy <[email protected]>
    Signed-off-by: Karthikeyan Periyasamy <[email protected]>
    Signed-off-by: P Praneesh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Fix memory leak during vdev_id mismatch [+ + +]
Author: P Praneesh <[email protected]>
Date:   Wed Apr 2 23:10:32 2025 +0530

    wifi: ath12k: Fix memory leak during vdev_id mismatch
    
    [ Upstream commit 75ec94db880b1e4b4f9182885d60db0db6e2ee56 ]
    
    Currently driver enables vdev_id check as part of the bank configuration
    in ath12k_dp_tx_get_vdev_bank_config(). This check ensures that the vdev_id
    configured in the bank register aligns with the vdev_id in the packet's
    address search table within the firmware. If there is a mismatch, the
    firmware forwards the packet with the HTT status
    HAL_WBM_REL_HTT_TX_COMP_STATUS_VDEVID_MISMATCH. Since driver does not
    handle this vdev_id mismatch HTT status, the corresponding buffers are not
    freed properly, causing a memory leak. Fix this issue by adding handling to
    free the buffers when a vdev_id mismatch HTT status is encountered.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-
    
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Signed-off-by: P Praneesh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: fix memory leak in ath12k_service_ready_ext_event [+ + +]
Author: Rajat Soni <[email protected]>
Date:   Wed Apr 30 10:25:38 2025 +0530

    wifi: ath12k: fix memory leak in ath12k_service_ready_ext_event
    
    [ Upstream commit 89142d34d5602c7447827beb181fa06eb08b9d5c ]
    
    Currently, in ath12k_service_ready_ext_event(), svc_rdy_ext.mac_phy_caps
    is not freed in the failure case, causing a memory leak. The following
    trace is observed in kmemleak:
    
    unreferenced object 0xffff8b3eb5789c00 (size 1024):
     comm "softirq", pid 0, jiffies 4294942577
     hex dump (first 32 bytes):
       00 00 00 00 01 00 00 00 00 00 00 00 7b 00 00 10  ............{...
       01 00 00 00 00 00 00 00 01 00 00 00 1f 38 00 00  .............8..
     backtrace (crc 44e1c357):
       __kmalloc_noprof+0x30b/0x410
       ath12k_wmi_mac_phy_caps_parse+0x84/0x100 [ath12k]
       ath12k_wmi_tlv_iter+0x5e/0x140 [ath12k]
       ath12k_wmi_svc_rdy_ext_parse+0x308/0x4c0 [ath12k]
       ath12k_wmi_tlv_iter+0x5e/0x140 [ath12k]
       ath12k_service_ready_ext_event.isra.0+0x44/0xd0 [ath12k]
       ath12k_wmi_op_rx+0x2eb/0xd70 [ath12k]
       ath12k_htc_rx_completion_handler+0x1f4/0x330 [ath12k]
       ath12k_ce_recv_process_cb+0x218/0x300 [ath12k]
       ath12k_pci_ce_workqueue+0x1b/0x30 [ath12k]
       process_one_work+0x219/0x680
       bh_worker+0x198/0x1f0
       tasklet_action+0x13/0x30
       handle_softirqs+0xca/0x460
       __irq_exit_rcu+0xbe/0x110
       irq_exit_rcu+0x9/0x30
    
    Free svc_rdy_ext.mac_phy_caps in the error case to fix this memory leak.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Signed-off-by: Rajat Soni <[email protected]>
    Signed-off-by: Raj Kumar Bhagat <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: fix node corruption in ar->arvifs list [+ + +]
Author: Maharaja Kennadyrajan <[email protected]>
Date:   Wed Apr 16 07:47:24 2025 +0530

    wifi: ath12k: fix node corruption in ar->arvifs list
    
    [ Upstream commit 823435bd23108d6f8be89ea2d025c0e2e3769c51 ]
    
    In current WLAN recovery code flow, ath12k_core_halt() only reinitializes
    the "arvifs" list head. This will cause the list node immediately following
    the list head to become an invalid list node. Because the prev of that node
    still points to the list head "arvifs", but the next of the list head
    "arvifs" no longer points to that list node.
    
    When a WLAN recovery occurs during the execution of a vif removal, and it
    happens before the spin_lock_bh(&ar->data_lock) in
    ath12k_mac_vdev_delete(), list_del() will detect the previously mentioned
    situation, thereby triggering a kernel panic.
    
    The fix is to remove and reinitialize all vif list nodes from the list head
    "arvifs" during WLAN halt. The reinitialization is to make the list nodes
    valid, ensuring that the list_del() in ath12k_mac_vdev_delete() can execute
    normally.
    
    Call trace:
    __list_del_entry_valid_or_report+0xd4/0x100 (P)
    ath12k_mac_remove_link_interface.isra.0+0xf8/0x2e4 [ath12k]
    ath12k_scan_vdev_clean_work+0x40/0x164 [ath12k]
    cfg80211_wiphy_work+0xfc/0x100
    process_one_work+0x164/0x2d0
    worker_thread+0x254/0x380
    kthread+0xfc/0x100
    ret_from_fork+0x10/0x20
    
    The change is mostly copied from the ath11k patch:
    https://lore.kernel.org/all/[email protected]/
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Signed-off-by: Maharaja Kennadyrajan <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Fix the QoS control field offset to build QoS header [+ + +]
Author: Ramasamy Kaliappan <[email protected]>
Date:   Wed Apr 16 00:11:02 2025 +0530

    wifi: ath12k: Fix the QoS control field offset to build QoS header
    
    [ Upstream commit 8599d4cc4191c8c1af34207a8b9414acca4afb59 ]
    
    Currently, in the mac80211 layer, received EAPOL packets are dropped
    when the HT control field is present in the QoS header. This issue
    arises due to an incorrect QoS control field offset used to build
    the QoS header in the MSDU data, leading to a corrupted header in the
    mac80211 layer. This issue also applies to other frames that contain
    the QoS control field, such as QoS data or Null frames. To resolve
    this, use ieee80211_get_qos_ctl() to obtain the correct QoS control
    offset from the MSDU data. Additionally, ensure the QoS control header
    is copied in little-endian format within the MSDU data.
    
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
    Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
    
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Signed-off-by: Ramasamy Kaliappan <[email protected]>
    Signed-off-by: Nithyanantham Paramasivam <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Link: https://patch.msgid.link/20250415184102.2707300-1-nithyanantham.paramasivam@oss.qualcomm.com
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: Fix WMI tag for EHT rate in peer assoc [+ + +]
Author: Ramya Gnanasekar <[email protected]>
Date:   Wed Apr 9 20:53:41 2025 +0530

    wifi: ath12k: Fix WMI tag for EHT rate in peer assoc
    
    [ Upstream commit 1a0e65750b55d2cf5de4a9bf7d6d55718784bdb7 ]
    
    Incorrect WMI tag is used for EHT rate update from host to firmware
    while encoding peer assoc WMI.
    
    Correct the WMI tag used for EHT rate update from WMI_TAG_HE_RATE_SET
    to the proper tag. This ensures firmware does not mistakenly update HE rate during parsing.
    
    Found during code review. Compile tested only.
    
    Fixes: 5b70ec6036c1 ("wifi: ath12k: add WMI support for EHT peer")
    Signed-off-by: Ramya Gnanasekar <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath12k: refactor ath12k_hw_regs structure [+ + +]
Author: P Praneesh <[email protected]>
Date:   Fri Mar 21 16:22:40 2025 +0530

    wifi: ath12k: refactor ath12k_hw_regs structure
    
    [ Upstream commit 5257324583e32fd5bd6bbb6c82b4f5880b842f99 ]
    
    IPQ5332 device have different register address values for the below
    registers:
    
    HAL_TCL1_RING_BASE_LSB
    HAL_TCL1_RING_BASE_MSB
    HAL_TCL2_RING_BASE_LSB
    
    HAL_SEQ_WCSS_UMAC_CE0_SRC_REG
    HAL_SEQ_WCSS_UMAC_CE0_DST_REG
    HAL_SEQ_WCSS_UMAC_CE1_SRC_REG
    HAL_SEQ_WCSS_UMAC_CE1_DST_REG
    
    Hence, refactor ath12k_hw_regs structure to accommodate these changes
    in IPQ5332.
    
    Tested-on: IPQ5332 hw1.0 AHB WLAN.WBE.1.3.1-00130-QCAHKSWPL_SILICONZ-1
    Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00210-QCAHKSWPL_SILICONZ-1
    
    Signed-off-by: P Praneesh <[email protected]>
    Co-developed-by: Balamurugan S <[email protected]>
    Signed-off-by: Balamurugan S <[email protected]>
    Reviewed-by: Vasanthakumar Thiagarajan <[email protected]>
    Signed-off-by: Raj Kumar Bhagat <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Stable-dep-of: 7588a893cde5 ("wifi: ath12k: fix GCC_GCC_PCIE_HOT_RST definition for WCN7850")
    Signed-off-by: Sasha Levin <[email protected]>

wifi: ath9k_htc: Abort software beacon handling if disabled [+ + +]
Author: Toke Høiland-Jørgensen <[email protected]>
Date:   Wed Apr 2 13:22:16 2025 +0200

    wifi: ath9k_htc: Abort software beacon handling if disabled
    
    [ Upstream commit ac4e317a95a1092b5da5b9918b7118759342641c ]
    
    A malicious USB device can send a WMI_SWBA_EVENTID event from an
    ath9k_htc-managed device before beaconing has been enabled. This causes
    a device-by-zero error in the driver, leading to either a crash or an
    out of bounds read.
    
    Prevent this by aborting the handling in ath9k_htc_swba() if beacons are
    not enabled.
    
    Reported-by: Robert Morris <[email protected]>
    Closes: https://lore.kernel.org/r/88967.1743099372@localhost
    Fixes: 832f6a18fc2a ("ath9k_htc: Add beacon slots")
    Signed-off-by: Toke Høiland-Jørgensen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: cfg80211/mac80211: correctly parse S1G beacon optional elements [+ + +]
Author: Lachlan Hodges <[email protected]>
Date:   Tue Jun 3 15:35:38 2025 +1000

    wifi: cfg80211/mac80211: correctly parse S1G beacon optional elements
    
    [ Upstream commit 1e1f706fc2ce90eaaf3480b3d5f27885960d751c ]
    
    S1G beacons are not traditional beacons but a type of extension frame.
    Extension frames contain the frame control and duration fields, followed
    by zero or more optional fields before the frame body. These optional
    fields are distinct from the variable length elements.
    
    The presence of optional fields is indicated in the frame control field.
    To correctly locate the elements offset, the frame control must be parsed
    to identify which optional fields are present. Currently, mac80211 parses
    S1G beacons based on fixed assumptions about the frame layout, without
    inspecting the frame control field. This can result in incorrect offsets
    to the "variable" portion of the frame.
    
    Properly parse S1G beacon frames by using the field lengths defined in
    IEEE 802.11-2024, section 9.3.4.3, ensuring that the elements offset is
    calculated accurately.
    
    Fixes: 9eaffe5078ca ("cfg80211: convert S1G beacon to scan results")
    Fixes: cd418ba63f0c ("mac80211: convert S1G beacon to scan results")
    Signed-off-by: Lachlan Hodges <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlfiwi: mvm: Fix the rate reporting [+ + +]
Author: Ilan Peer <[email protected]>
Date:   Sat May 3 22:44:32 2025 +0300

    wifi: iwlfiwi: mvm: Fix the rate reporting
    
    [ Upstream commit 8f7561209eda7d6998708f06376e8dd2dc52f3b8 ]
    
    The rate validation in mac80211 considers a rate to be valid iff both
    the rate index and the count are positive. When the rate scaling is
    managed in the driver and not enough traffic passed to set the actual
    rate, the driver set the rate to be the optimal rate. However, the rate
    count is not set and thus the rate is considered not valid. Fix it by
    setting the count to 1.
    
    Fixes: 3e99b4d28219 ("wifi: mac80211: Sanity check tx bitrate if not provided by driver")
    Signed-off-by: Ilan Peer <[email protected]>
    Reviewed-by: Johannes Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20250503224232.0d1d1e022d63.I76833c14ba1d66f9bea5c32b25a54d8b36f229ba@changeid
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7915: Fix null-ptr-deref in mt7915_mmio_wed_init() [+ + +]
Author: Henry Martin <[email protected]>
Date:   Mon Apr 7 14:19:00 2025 +0800

    wifi: mt76: mt7915: Fix null-ptr-deref in mt7915_mmio_wed_init()
    
    [ Upstream commit efb95439c1477bbc955cacd0179c35e7861b437c ]
    
    devm_ioremap() returns NULL on error. Currently, mt7915_mmio_wed_init()
    does not check for this case, which results in a NULL pointer
    dereference.
    
    Prevent null pointer dereference in mt7915_mmio_wed_init().
    
    Fixes: 4f831d18d12d ("wifi: mt76: mt7915: enable WED RX support")
    Signed-off-by: Henry Martin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7925: ensure all MCU commands wait for response [+ + +]
Author: Michael Lo <[email protected]>
Date:   Mon Apr 14 09:39:54 2025 +0800

    wifi: mt76: mt7925: ensure all MCU commands wait for response
    
    [ Upstream commit aa97ff5782cf01cf2163593e1f57bbde63a06047 ]
    
    Modify MCU command sending functions to wait for a response,
    ensuring consistent behavior across all commands and improves
    reliability by confirming that each command is processed
    successfully.
    
    Fixes: c948b5da6bbe ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips")
    Signed-off-by: Michael Lo <[email protected]>
    Signed-off-by: Ming Yen Hsieh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7925: prevent multiple scan commands [+ + +]
Author: Ming Yen Hsieh <[email protected]>
Date:   Mon Apr 14 09:39:52 2025 +0800

    wifi: mt76: mt7925: prevent multiple scan commands
    
    [ Upstream commit 122f270aca2c86d7de264ab67161c845e0691d73 ]
    
    Add a check to ensure only one scan command is active at a time
    by testing the MT76_HW_SCANNING state.
    
    Fixes: c948b5da6bbe ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips")
    Signed-off-by: Ming Yen Hsieh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7925: refine the sniffer commnad [+ + +]
Author: Ming Yen Hsieh <[email protected]>
Date:   Mon Apr 14 09:39:53 2025 +0800

    wifi: mt76: mt7925: refine the sniffer commnad
    
    [ Upstream commit bd02eebfc0b3502fe8322cf229b4c801416d1007 ]
    
    Remove a duplicate call to `mt76_mcu_send_msg` to fix redundant operations
    in the sniffer command handling.
    
    Fixes: c948b5da6bbe ("wifi: mt76: mt7925: add Mediatek Wi-Fi7 driver for mt7925 chips")
    Signed-off-by: Ming Yen Hsieh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7996: Fix null-ptr-deref in mt7996_mmio_wed_init() [+ + +]
Author: Henry Martin <[email protected]>
Date:   Mon Apr 7 11:23:49 2025 +0800

    wifi: mt76: mt7996: Fix null-ptr-deref in mt7996_mmio_wed_init()
    
    [ Upstream commit 8f30e2b059757d8711a823e4c9c023db62a1d171 ]
    
    devm_ioremap() returns NULL on error. Currently, mt7996_mmio_wed_init()
    does not check for this case, which results in a NULL pointer
    dereference.
    
    Prevent null pointer dereference in mt7996_mmio_wed_init()
    
    Fixes: 83eafc9251d6 ("wifi: mt76: mt7996: add wed tx support")
    Signed-off-by: Henry Martin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7996: fix RX buffer size of MCU event [+ + +]
Author: Shayne Chen <[email protected]>
Date:   Thu May 15 11:29:50 2025 +0800

    wifi: mt76: mt7996: fix RX buffer size of MCU event
    
    [ Upstream commit 42cb27af34de4acf680606fad2c1f2932110591f ]
    
    Some management frames are first processed by the firmware and then
    passed to the driver through the MCU event rings. In CONNAC3, event rings
    do not support scatter-gather and have a size limitation of 2048 bytes.
    If a packet sized between 1728 and 2048 bytes arrives from an event ring,
    the ring will hang because the driver attempts to use scatter-gather to
    process it.
    
    To fix this, include the size of struct skb_shared_info in the MCU RX
    buffer size to prevent scatter-gather from being used for event skb in
    mt76_dma_rx_fill_buf().
    
    Fixes: 98686cd21624 ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
    Co-developed-by: Peter Chiu <[email protected]>
    Signed-off-by: Peter Chiu <[email protected]>
    Signed-off-by: Shayne Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mt76: mt7996: set EHT max ampdu length capability [+ + +]
Author: Peter Chiu <[email protected]>
Date:   Thu May 15 11:29:46 2025 +0800

    wifi: mt76: mt7996: set EHT max ampdu length capability
    
    [ Upstream commit 8b2f574845e33d02e7fbad2d3192a8b717567afa ]
    
    Set the max AMPDU length in the EHT MAC CAP. Without this patch, the
    peer station cannot obtain the correct capability, which prevents
    achieving peak throughput on the 2 GHz band.
    
    Fixes: 1816ad9381e0 ("wifi: mt76: mt7996: add max mpdu len capability")
    Signed-off-by: Peter Chiu <[email protected]>
    Signed-off-by: Shayne Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Felix Fietkau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: do not ignore hardware read error during DPK [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Tue Apr 15 12:07:20 2025 +0300

    wifi: rtw88: do not ignore hardware read error during DPK
    
    [ Upstream commit 20d3c19bd8f9b498173c198eadf54580c8caa336 ]
    
    In 'rtw8822c_dpk_cal_coef1()', do not ignore error returned
    by 'check_hw_ready()' but issue a warning to denote possible
    DPK issue. Compile tested only.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 5227c2ee453d ("rtw88: 8822c: add SW DPK support")
    Suggested-by: Ping-Ke Shih <[email protected]>
    Signed-off-by: Dmitry Antipov <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: fix the 'para' buffer size to avoid reading out of bounds [+ + +]
Author: Alexey Kodanev <[email protected]>
Date:   Tue May 13 12:13:04 2025 +0000

    wifi: rtw88: fix the 'para' buffer size to avoid reading out of bounds
    
    [ Upstream commit 4c2c372de2e108319236203cce6de44d70ae15cd ]
    
    Set the size to 6 instead of 2, since 'para' array is passed to
    'rtw_fw_bt_wifi_control(rtwdev, para[0], ¶[1])', which reads
    5 bytes:
    
    void rtw_fw_bt_wifi_control(struct rtw_dev *rtwdev, u8 op_code, u8 *data)
    {
        ...
        SET_BT_WIFI_CONTROL_DATA1(h2c_pkt, *data);
        SET_BT_WIFI_CONTROL_DATA2(h2c_pkt, *(data + 1));
        ...
        SET_BT_WIFI_CONTROL_DATA5(h2c_pkt, *(data + 4));
    
    Detected using the static analysis tool - Svace.
    Fixes: 4136214f7c46 ("rtw88: add BT co-existence support")
    Signed-off-by: Alexey Kodanev <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: sdio: call rtw_sdio_indicate_tx_status unconditionally [+ + +]
Author: Zhen XIN <[email protected]>
Date:   Thu Apr 10 15:42:16 2025 +0000

    wifi: rtw88: sdio: call rtw_sdio_indicate_tx_status unconditionally
    
    [ Upstream commit fc5f5a0ec463ae6a07850428bd3082947e01d276 ]
    
    The rtw88-sdio do not work in AP mode due to the lack of TX status report
    for management frames.
    
    Make the invocation of rtw_sdio_indicate_tx_status unconditional and cover
    all packet queues
    
    Tested-on: rtl8723ds
    
    Fixes: 65371a3f14e7 ("wifi: rtw88: sdio: Add HCI implementation for SDIO based chipsets")
    Signed-off-by: Zhen XIN <[email protected]>
    Reviewed-by: Martin Blumenstingl <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw88: sdio: map mgmt frames to queue TX_DESC_QSEL_MGMT [+ + +]
Author: Zhen XIN <[email protected]>
Date:   Thu Apr 10 15:42:17 2025 +0000

    wifi: rtw88: sdio: map mgmt frames to queue TX_DESC_QSEL_MGMT
    
    [ Upstream commit b2effcdc237979dcc533d446a792fc54fd0e1213 ]
    
    The rtw88-sdio do not work in AP mode due to the lack of TX status report
    for management frames.
    
    Map the management frames to queue TX_DESC_QSEL_MGMT, which enables the
    chip to generate TX reports for these frames
    
    Tested-on: rtl8723ds
    
    Fixes: 65371a3f14e7 ("wifi: rtw88: sdio: Add HCI implementation for SDIO based chipsets")
    Signed-off-by: Zhen XIN <[email protected]>
    Reviewed-by: Martin Blumenstingl <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: fix firmware scan delay unit for WiFi 6 chips [+ + +]
Author: Chin-Yen Lee <[email protected]>
Date:   Tue May 13 20:52:03 2025 +0800

    wifi: rtw89: fix firmware scan delay unit for WiFi 6 chips
    
    [ Upstream commit 3cc35394fac15d533639c9c9e42f28d28936a4a0 ]
    
    The scan delay unit of firmware command for WiFi 6 chips is
    microsecond, but is wrong set now and lead to abnormal work
    for net-detect. Correct the unit to avoid the error.
    
    Fixes: e99dd80c8a18 ("wifi: rtw89: wow: add delay option for net-detect")
    Signed-off-by: Chin-Yen Lee <[email protected]>
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

wifi: rtw89: pci: enlarge retry times of RX tag to 1000 [+ + +]
Author: Ping-Ke Shih <[email protected]>
Date:   Fri May 9 09:34:33 2025 +0800

    wifi: rtw89: pci: enlarge retry times of RX tag to 1000
    
    [ Upstream commit dda27a47c036d981ec664ac57e044a21035ffe12 ]
    
    RX tag is sequence number to ensure RX DMA is complete. On platform
    Gigabyte X870 AORUS ELITE WIFI7, sometimes it needs longer retry times
    to complete RX DMA, or driver throws warnings and connection drops:
    
      rtw89_8922ae 0000:07:00.0: failed to update 162 RXBD info: -11
      rtw89_8922ae 0000:07:00.0: failed to update 163 RXBD info: -11
      rtw89_8922ae 0000:07:00.0: failed to update 32 RXBD info: -11
      rtw89_8922ae 0000:07:00.0: failed to release TX skbs
    
    Fixes: 0bc7d1d4e63c ("wifi: rtw89: pci: validate RX tag for RXQ and RPQ")
    Reported-by: Samuel Reyes <[email protected]>
    Closes: https://lore.kernel.org/linux-wireless/[email protected]/T/#t
    Signed-off-by: Ping-Ke Shih <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
wireguard: device: enable threaded NAPI [+ + +]
Author: Mirco Barone <[email protected]>
Date:   Thu Jun 5 14:06:16 2025 +0200

    wireguard: device: enable threaded NAPI
    
    [ Upstream commit db9ae3b6b43c79b1ba87eea849fd65efa05b4b2e ]
    
    Enable threaded NAPI by default for WireGuard devices in response to low
    performance behavior that we observed when multiple tunnels (and thus
    multiple wg devices) are deployed on a single host.  This affects any
    kind of multi-tunnel deployment, regardless of whether the tunnels share
    the same endpoints or not (i.e., a VPN concentrator type of gateway
    would also be affected).
    
    The problem is caused by the fact that, in case of a traffic surge that
    involves multiple tunnels at the same time, the polling of the NAPI
    instance of all these wg devices tends to converge onto the same core,
    causing underutilization of the CPU and bottlenecking performance.
    
    This happens because NAPI polling is hosted by default in softirq
    context, but the WireGuard driver only raises this softirq after the rx
    peer queue has been drained, which doesn't happen during high traffic.
    In this case, the softirq already active on a core is reused instead of
    raising a new one.
    
    As a result, once two or more tunnel softirqs have been scheduled on
    the same core, they remain pinned there until the surge ends.
    
    In our experiments, this almost always leads to all tunnel NAPIs being
    handled on a single core shortly after a surge begins, limiting
    scalability to less than 3× the performance of a single tunnel, despite
    plenty of unused CPU cores being available.
    
    The proposed mitigation is to enable threaded NAPI for all WireGuard
    devices. This moves the NAPI polling context to a dedicated per-device
    kernel thread, allowing the scheduler to balance the load across all
    available cores.
    
    On our 32-core gateways, enabling threaded NAPI yields a ~4× performance
    improvement with 16 tunnels, increasing throughput from ~13 Gbps to
    ~48 Gbps. Meanwhile, CPU usage on the receiver (which is the bottleneck)
    jumps from 20% to 100%.
    
    We have found no performance regressions in any scenario we tested.
    Single-tunnel throughput remains unchanged.
    
    More details are available in our Netdev paper.
    
    Link: https://netdevconf.info/0x18/docs/netdev-0x18-paper23-talk-paper.pdf
    Signed-off-by: Mirco Barone <[email protected]>
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Signed-off-by: Jason A. Donenfeld <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/cpu: Sanitize CPUID(0x80000000) output [+ + +]
Author: Ahmed S. Darwish <[email protected]>
Date:   Tue May 6 07:04:13 2025 +0200

    x86/cpu: Sanitize CPUID(0x80000000) output
    
    [ Upstream commit cc663ba3fe383a628a812f893cc98aafff39ab04 ]
    
    CPUID(0x80000000).EAX returns the max extended CPUID leaf available.  On
    x86-32 machines without an extended CPUID range, a CPUID(0x80000000)
    query will just repeat the output of the last valid standard CPUID leaf
    on the CPU; i.e., a garbage values.  Current tip:x86/cpu code protects against
    this by doing:
    
            eax = cpuid_eax(0x80000000);
            c->extended_cpuid_level = eax;
    
            if ((eax & 0xffff0000) == 0x80000000) {
                    // CPU has an extended CPUID range. Check for 0x80000001
                    if (eax >= 0x80000001) {
                            cpuid(0x80000001, ...);
                    }
            }
    
    This is correct so far.  Afterwards though, the same possibly broken EAX
    value is used to check the availability of other extended CPUID leaves:
    
            if (c->extended_cpuid_level >= 0x80000007)
                    ...
            if (c->extended_cpuid_level >= 0x80000008)
                    ...
            if (c->extended_cpuid_level >= 0x8000000a)
                    ...
            if (c->extended_cpuid_level >= 0x8000001f)
                    ...
    
    which is invalid.  Fix this by immediately setting the CPU's max extended
    CPUID leaf to zero if CPUID(0x80000000).EAX doesn't indicate a valid
    CPUID extended range.
    
    While at it, add a comment, similar to kernel/head_32.S, clarifying the
    CPUID(0x80000000) sanity check.
    
    References: 8a50e5135af0 ("x86-32: Use symbolic constants, safer CPUID when enabling EFER.NX")
    Fixes: 3da99c977637 ("x86: make (early)_identify_cpu more the same between 32bit and 64 bit")
    Signed-off-by: Ahmed S. Darwish <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: Andrew Cooper <[email protected]>
    Cc: H. Peter Anvin <[email protected]>
    Cc: John Ogness <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/fred/signal: Prevent immediate repeat of single step trap on return from SIGTRAP handler [+ + +]
Author: Xin Li (Intel) <[email protected]>
Date:   Mon Jun 9 01:40:53 2025 -0700

    x86/fred/signal: Prevent immediate repeat of single step trap on return from SIGTRAP handler
    
    commit e34dbbc85d64af59176fe59fad7b4122f4330fe2 upstream.
    
    Clear the software event flag in the augmented SS to prevent immediate
    repeat of single step trap on return from SIGTRAP handler if the trap
    flag (TF) is set without an external debugger attached.
    
    Following is a typical single-stepping flow for a user process:
    
    1) The user process is prepared for single-stepping by setting
       RFLAGS.TF = 1.
    2) When any instruction in user space completes, a #DB is triggered.
    3) The kernel handles the #DB and returns to user space, invoking the
       SIGTRAP handler with RFLAGS.TF = 0.
    4) After the SIGTRAP handler finishes, the user process performs a
       sigreturn syscall, restoring the original state, including
       RFLAGS.TF = 1.
    5) Goto step 2.
    
    According to the FRED specification:
    
    A) Bit 17 in the augmented SS is designated as the software event
       flag, which is set to 1 for FRED event delivery of SYSCALL,
       SYSENTER, or INT n.
    B) If bit 17 of the augmented SS is 1 and ERETU would result in
       RFLAGS.TF = 1, a single-step trap will be pending upon completion
       of ERETU.
    
    In step 4) above, the software event flag is set upon the sigreturn
    syscall, and its corresponding ERETU would restore RFLAGS.TF = 1.
    This combination causes a pending single-step trap upon completion of
    ERETU.  Therefore, another #DB is triggered before any user space
    instruction is executed, which leads to an infinite loop in which the
    SIGTRAP handler keeps being invoked on the same user space IP.
    
    Fixes: 14619d912b65 ("x86/fred: FRED entry/exit and dispatch code")
    Suggested-by: H. Peter Anvin (Intel) <[email protected]>
    Signed-off-by: Xin Li (Intel) <[email protected]>
    Signed-off-by: Dave Hansen <[email protected]>
    Tested-by: Sohil Mehta <[email protected]>
    Cc:[email protected]
    Link: https://lore.kernel.org/all/20250609084054.2083189-2-xin%40zytor.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/idle: Remove MFENCEs for X86_BUG_CLFLUSH_MONITOR in mwait_idle_with_hints() and prefer_mwait_c1_over_halt() [+ + +]
Author: Andrew Cooper <[email protected]>
Date:   Wed Apr 2 18:24:58 2025 +0100

    x86/idle: Remove MFENCEs for X86_BUG_CLFLUSH_MONITOR in mwait_idle_with_hints() and prefer_mwait_c1_over_halt()
    
    [ Upstream commit 1f13c60d84e880df6698441026e64f84c7110c49 ]
    
    The following commit, 12 years ago:
    
      7e98b7192046 ("x86, idle: Use static_cpu_has() for CLFLUSH workaround, add barriers")
    
    added barriers around the CLFLUSH in mwait_idle_with_hints(), justified with:
    
      ... and add memory barriers around it since the documentation is explicit
      that CLFLUSH is only ordered with respect to MFENCE.
    
    This also triggered, 11 years ago, the same adjustment in:
    
      f8e617f45829 ("sched/idle/x86: Optimize unnecessary mwait_idle() resched IPIs")
    
    during development, although it failed to get the static_cpu_has_bug() treatment.
    
    X86_BUG_CLFLUSH_MONITOR (a.k.a the AAI65 errata) is specific to Intel CPUs,
    and the SDM currently states:
    
      Executions of the CLFLUSH instruction are ordered with respect to each
      other and with respect to writes, locked read-modify-write instructions,
      and fence instructions[1].
    
    With footnote 1 reading:
    
      Earlier versions of this manual specified that executions of the CLFLUSH
      instruction were ordered only by the MFENCE instruction.  All processors
      implementing the CLFLUSH instruction also order it relative to the other
      operations enumerated above.
    
    i.e. The SDM was incorrect at the time, and barriers should not have been
    inserted.  Double checking the original AAI65 errata (not available from
    intel.com any more) shows no mention of barriers either.
    
    Note: If this were a general codepath, the MFENCEs would be needed, because
          AMD CPUs of the same vintage do sport otherwise-unordered CLFLUSHs.
    
    Remove the unnecessary barriers. Furthermore, use a plain alternative(),
    rather than static_cpu_has_bug() and/or no optimisation.  The workaround
    is a single instruction.
    
    Use an explicit %rax pointer rather than a general memory operand, because
    MONITOR takes the pointer implicitly in the same way.
    
    [ mingo: Cleaned up the commit a bit. ]
    
    Fixes: 7e98b7192046 ("x86, idle: Use static_cpu_has() for CLFLUSH workaround, add barriers")
    Signed-off-by: Andrew Cooper <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Acked-by: Dave Hansen <[email protected]>
    Acked-by: Borislav Petkov (AMD) <[email protected]>
    Cc: "H. Peter Anvin" <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Rik van Riel <[email protected]>
    Cc: Linus Torvalds <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Cc: Brian Gerst <[email protected]>
    Cc: Juergen Gross <[email protected]>
    Cc: Rafael J. Wysocki <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/insn: Fix opcode map (!REX2) superscript tags [+ + +]
Author: Masami Hiramatsu (Google) <[email protected]>
Date:   Mon Apr 28 10:48:10 2025 +0900

    x86/insn: Fix opcode map (!REX2) superscript tags
    
    [ Upstream commit ca698ec2f07873a448d53c580795c4e023c75393 ]
    
    Commit:
    
      159039af8c07 ("x86/insn: x86/insn: Add support for REX2 prefix to the instruction decoder opcode map")
    
    added (!REX2) superscript with a space, but the correct format requires ','
    for concatination with other superscript tags.
    
    Add ',' to generate correct insn attribute tables.
    
    I confirmed with following command:
    
          arch/x86/lib/x86-opcode-map.txt | grep e8 | head -n 1
      [0xe8] = INAT_MAKE_IMM(INAT_IMM_VWORD32) | INAT_FORCE64 | INAT_NO_REX2,
    
    Fixes: 159039af8c07 ("x86/insn: x86/insn: Add support for REX2 prefix to the instruction decoder opcode map")
    Signed-off-by: Masami Hiramatsu (Google) <[email protected]>
    Signed-off-by: Ingo Molnar <[email protected]>
    Cc: H. Peter Anvin <[email protected]>
    Cc: Adrian Hunter <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Link: https://lore.kernel.org/r/174580489027.388420.15539375184727726142.stgit@devnote2
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/iopl: Cure TIF_IO_BITMAP inconsistencies [+ + +]
Author: Thomas Gleixner <[email protected]>
Date:   Wed Feb 26 16:01:57 2025 +0100

    x86/iopl: Cure TIF_IO_BITMAP inconsistencies
    
    commit 8b68e978718f14fdcb080c2a7791c52a0d09bc6d upstream.
    
    io_bitmap_exit() is invoked from exit_thread() when a task exists or
    when a fork fails. In the latter case the exit_thread() cleans up
    resources which were allocated during fork().
    
    io_bitmap_exit() invokes task_update_io_bitmap(), which in turn ends up
    in tss_update_io_bitmap(). tss_update_io_bitmap() operates on the
    current task. If current has TIF_IO_BITMAP set, but no bitmap installed,
    tss_update_io_bitmap() crashes with a NULL pointer dereference.
    
    There are two issues, which lead to that problem:
    
      1) io_bitmap_exit() should not invoke task_update_io_bitmap() when
         the task, which is cleaned up, is not the current task. That's a
         clear indicator for a cleanup after a failed fork().
    
      2) A task should not have TIF_IO_BITMAP set and neither a bitmap
         installed nor IOPL emulation level 3 activated.
    
         This happens when a kernel thread is created in the context of
         a user space thread, which has TIF_IO_BITMAP set as the thread
         flags are copied and the IO bitmap pointer is cleared.
    
         Other than in the failed fork() case this has no impact because
         kernel threads including IO workers never return to user space and
         therefore never invoke tss_update_io_bitmap().
    
    Cure this by adding the missing cleanups and checks:
    
      1) Prevent io_bitmap_exit() to invoke task_update_io_bitmap() if
         the to be cleaned up task is not the current task.
    
      2) Clear TIF_IO_BITMAP in copy_thread() unconditionally. For user
         space forks it is set later, when the IO bitmap is inherited in
         io_bitmap_share().
    
    For paranoia sake, add a warning into tss_update_io_bitmap() to catch
    the case, when that code is invoked with inconsistent state.
    
    Fixes: ea5f1cd7ab49 ("x86/ioperm: Remove bitmap if all permissions dropped")
    Reported-by: [email protected]
    Signed-off-by: Thomas Gleixner <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: [email protected]
    Link: https://lore.kernel.org/87wmdceom2.ffs@tglx
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/irq: Ensure initial PIR loads are performed exactly once [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Tue Apr 1 09:34:40 2025 -0700

    x86/irq: Ensure initial PIR loads are performed exactly once
    
    [ Upstream commit 600e9606046ac3b9b7a3f0500d08a179df84c45e ]
    
    Ensure the PIR is read exactly once at the start of handle_pending_pir(),
    to guarantee that checking for an outstanding posted interrupt in a given
    chuck doesn't reload the chunk from the "real" PIR.  Functionally, a reload
    is benign, but it would defeat the purpose of pre-loading into a copy.
    
    Fixes: 1b03d82ba15e ("x86/irq: Install posted MSI notification handler")
    Reviewed-by: Thomas Gleixner <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sean Christopherson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/microcode/AMD: Do not return error when microcode update is not necessary [+ + +]
Author: Annie Li <[email protected]>
Date:   Wed Apr 30 05:34:24 2025 +0000

    x86/microcode/AMD: Do not return error when microcode update is not necessary
    
    [ Upstream commit b43dc4ab097859c24e2a6993119c927cffc856aa ]
    
    After
    
      6f059e634dcd("x86/microcode: Clarify the late load logic"),
    
    if the load is up-to-date, the AMD side returns UCODE_OK which leads to
    load_late_locked() returning -EBADFD.
    
    Handle UCODE_OK in the switch case to avoid this error.
    
      [ bp: Massage commit message. ]
    
    Fixes: 6f059e634dcd ("x86/microcode: Clarify the late load logic")
    Signed-off-by: Annie Li <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
x86/mtrr: Check if fixed-range MTRRs exist in mtrr_save_fixed_ranges() [+ + +]
Author: Jiaqing Zhao <[email protected]>
Date:   Fri May 9 17:06:33 2025 +0000

    x86/mtrr: Check if fixed-range MTRRs exist in mtrr_save_fixed_ranges()
    
    [ Upstream commit 824c6384e8d9275d4ec7204f3f79a4ac6bc10379 ]
    
    When suspending, save_processor_state() calls mtrr_save_fixed_ranges()
    to save fixed-range MTRRs.
    
    On platforms without fixed-range MTRRs like the ACRN hypervisor which
    has removed fixed-range MTRR emulation, accessing these MSRs will
    trigger an unchecked MSR access error. Make sure fixed-range MTRRs are
    supported before access to prevent such error.
    
    Since mtrr_state.have_fixed is only set when MTRRs are present and
    enabled, checking the CPU feature flag in mtrr_save_fixed_ranges() is
    unnecessary.
    
    Fixes: 3ebad5905609 ("[PATCH] x86: Save and restore the fixed-range MTRRs of the BSP when suspending")
    Signed-off-by: Jiaqing Zhao <[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/arm: call uaccess_ttbr0_enable for dm_op hypercall [+ + +]
Author: Stefano Stabellini <[email protected]>
Date:   Mon May 12 14:54:52 2025 -0700

    xen/arm: call uaccess_ttbr0_enable for dm_op hypercall
    
    commit 7f9bbc1140ff8796230bc2634055763e271fd692 upstream.
    
    dm_op hypercalls might come from userspace and pass memory addresses as
    parameters. The memory addresses typically correspond to buffers
    allocated in userspace to hold extra hypercall parameters.
    
    On ARM, when CONFIG_ARM64_SW_TTBR0_PAN is enabled, they might not be
    accessible by Xen, as a result ioreq hypercalls might fail. See the
    existing comment in arch/arm64/xen/hypercall.S regarding privcmd_call
    for reference.
    
    For privcmd_call, Linux calls uaccess_ttbr0_enable before issuing the
    hypercall thanks to commit 9cf09d68b89a. We need to do the same for
    dm_op. This resolves the problem.
    
    Cc: [email protected]
    Fixes: 9cf09d68b89a ("arm64: xen: Enable user access before a privcmd hvc call")
    Signed-off-by: Stefano Stabellini <[email protected]>
    Reviewed-by: Juergen Gross <[email protected]>
    Message-ID: <alpine.DEB.2.22.394.2505121446370.8380@ubuntu-linux-20-04-desktop>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
xen/x86: fix initial memory balloon target [+ + +]
Author: Roger Pau Monne <[email protected]>
Date:   Wed May 14 10:04:26 2025 +0200

    xen/x86: fix initial memory balloon target
    
    [ Upstream commit 74287971dbb3fe322bb316afd9e7fb5807e23bee ]
    
    When adding extra memory regions as ballooned pages also adjust the balloon
    target, otherwise when the balloon driver is started it will populate
    memory to match the target value and consume all the extra memory regions
    added.
    
    This made the usage of the Xen `dom0_mem=,max:` command line parameter for
    dom0 not work as expected, as the target won't be adjusted and when the
    balloon is started it will populate memory straight to the 'max:' value.
    It would equally affect domUs that have memory != maxmem.
    
    Kernels built with CONFIG_XEN_UNPOPULATED_ALLOC are not affected, because
    the extra memory regions are consumed by the unpopulated allocation driver,
    and then balloon_add_regions() becomes a no-op.
    
    Reported-by: John <[email protected]>
    Fixes: 87af633689ce ('x86/xen: fix balloon target initialization for PVH dom0')
    Signed-off-by: Roger Pau Monné <[email protected]>
    Reviewed-by: Juergen Gross <[email protected]>
    Tested-by: Marek Marczykowski-Górecki <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Juergen Gross <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xfrm: Use xdo.dev instead of xdo.real_dev [+ + +]
Author: Cosmin Ratiu <[email protected]>
Date:   Fri Apr 11 10:49:54 2025 +0300

    xfrm: Use xdo.dev instead of xdo.real_dev
    
    [ Upstream commit 25ac138f58e7d5c8bffa31e8891418d2819180c4 ]
    
    The policy offload struct was reused from the state offload and
    real_dev was copied from dev, but it was never set to anything else.
    Simplify the code by always using xdo.dev for policies.
    
    Signed-off-by: Cosmin Ratiu <[email protected]>
    Reviewed-by: Leon Romanovsky <[email protected]>
    Reviewed-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xfs: don't assume perags are initialised when trimming AGs [+ + +]
Author: Dave Chinner <[email protected]>
Date:   Thu May 1 09:27:24 2025 +1000

    xfs: don't assume perags are initialised when trimming AGs
    
    commit 23be716b1c4f3f3a6c00ee38d51a57ef7db9ef7d upstream.
    
    When running fstrim immediately after mounting a V4 filesystem,
    the fstrim fails to trim all the free space in the filesystem. It
    only trims the first extent in the by-size free space tree in each
    AG and then returns. If a second fstrim is then run, it runs
    correctly and the entire free space in the filesystem is iterated
    and discarded correctly.
    
    The problem lies in the setup of the trim cursor - it assumes that
    pag->pagf_longest is valid without either reading the AGF first or
    checking if xfs_perag_initialised_agf(pag) is true or not.
    
    As a result, when a filesystem is mounted without reading the AGF
    (e.g. a clean mount on a v4 filesystem) and the first operation is a
    fstrim call, pag->pagf_longest is zero and so the free extent search
    starts at the wrong end of the by-size btree and exits after
    discarding the first record in the tree.
    
    Fix this by deferring the initialisation of tcur->count to after
    we have locked the AGF and guaranteed that the perag is properly
    initialised. We trigger this on tcur->count == 0 after locking the
    AGF, as this will only occur on the first call to
    xfs_trim_gather_extents() for each AG. If we need to iterate,
    tcur->count will be set to the length of the record we need to
    restart at, so we can use this to ensure we only sample a valid
    pag->pagf_longest value for the iteration.
    
    Signed-off-by: Dave Chinner <[email protected]>
    Reviewed-by: Bill O'Donnell <[email protected]>
    Reviewed-by: Darrick J. Wong <[email protected]>
    Fixes: 89cfa899608f ("xfs: reduce AGF hold times during fstrim operations")
    Cc: <[email protected]> # v6.6
    Signed-off-by: Carlos Maiolino <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>