Changelog in Linux kernel 6.6.122

 
ALSA: ctxfi: Fix potential OOB access in audio mixer handling [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Mon Jan 19 14:32:07 2026 +0100

    ALSA: ctxfi: Fix potential OOB access in audio mixer handling
    
    commit 61006c540cbdedea83b05577dc7fb7fa18fe1276 upstream.
    
    In the audio mixer handling code of ctxfi driver, the conf field is
    used as a kind of loop index, and it's referred in the index callbacks
    (amixer_index() and sum_index()).
    
    As spotted recently by fuzzers, the current code causes OOB access at
    those functions.
    | UBSAN: array-index-out-of-bounds in /build/reproducible-path/linux-6.17.8/sound/pci/ctxfi/ctamixer.c:347:48
    | index 8 is out of range for type 'unsigned char [8]'
    
    After the analysis, the cause was found to be the lack of the proper
    (re-)initialization of conj field.
    
    This patch addresses those OOB accesses by adding the proper
    initializations of the loop indices.
    
    Reported-by: Salvatore Bonaccorso <[email protected]>
    Tested-by: Karsten Hohmeier <[email protected]>
    Closes: https://bugs.debian.org/1121535
    Cc: <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]/
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: pcm: Improve the fix for race of buffer access at PCM OSS layer [+ + +]
Author: Jaroslav Kysela <[email protected]>
Date:   Wed Jan 7 22:36:42 2026 +0100

    ALSA: pcm: Improve the fix for race of buffer access at PCM OSS layer
    
    commit 47c27c9c9c720bc93fdc69605d0ecd9382e99047 upstream.
    
    Handle the error code from snd_pcm_buffer_access_lock() in
    snd_pcm_runtime_buffer_set_silence() function.
    
    Found by Alexandros Panagiotou <[email protected]>
    
    Fixes: 93a81ca06577 ("ALSA: pcm: Fix race of buffer access at PCM OSS layer")
    Cc: [email protected] # 6.15
    Signed-off-by: Jaroslav Kysela <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: scarlett2: Fix buffer overflow in config retrieval [+ + +]
Author: Samasth Norway Ananda <[email protected]>
Date:   Tue Jan 27 16:08:23 2026 -0500

    ALSA: scarlett2: Fix buffer overflow in config retrieval
    
    [ Upstream commit 6f5c69f72e50d51be3a8c028ae7eda42c82902cb ]
    
    The scarlett2_usb_get_config() function has a logic error in the
    endianness conversion code that can cause buffer overflows when
    count > 1.
    
    The code checks `if (size == 2)` where `size` is the total buffer size in
    bytes, then loops `count` times treating each element as u16 (2 bytes).
    This causes the loop to access `count * 2` bytes when the buffer only
    has `size` bytes allocated.
    
    Fix by checking the element size (config_item->size) instead of the
    total buffer size. This ensures the endianness conversion matches the
    actual element type.
    
    Fixes: ac34df733d2d ("ALSA: usb-audio: scarlett2: Update get_config to do endian conversion")
    Cc: [email protected]
    Signed-off-by: Samasth Norway Ananda <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    [ add 32-bit handling block ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: usb-audio: Fix use-after-free in snd_usb_mixer_free() [+ + +]
Author: Berk Cem Goksel <[email protected]>
Date:   Tue Jan 20 13:28:55 2026 +0300

    ALSA: usb-audio: Fix use-after-free in snd_usb_mixer_free()
    
    commit 930e69757b74c3ae083b0c3c7419bfe7f0edc7b2 upstream.
    
    When snd_usb_create_mixer() fails, snd_usb_mixer_free() frees
    mixer->id_elems but the controls already added to the card still
    reference the freed memory. Later when snd_card_register() runs,
    the OSS mixer layer calls their callbacks and hits a use-after-free read.
    
    Call trace:
      get_ctl_value+0x63f/0x820 sound/usb/mixer.c:411
      get_min_max_with_quirks.isra.0+0x240/0x1f40 sound/usb/mixer.c:1241
      mixer_ctl_feature_info+0x26b/0x490 sound/usb/mixer.c:1381
      snd_mixer_oss_build_test+0x174/0x3a0 sound/core/oss/mixer_oss.c:887
      ...
      snd_card_register+0x4ed/0x6d0 sound/core/init.c:923
      usb_audio_probe+0x5ef/0x2a90 sound/usb/card.c:1025
    
    Fix by calling snd_ctl_remove() for all mixer controls before freeing
    id_elems. We save the next pointer first because snd_ctl_remove()
    frees the current element.
    
    Fixes: 6639b6c2367f ("[ALSA] usb-audio - add mixer control notifications")
    Cc: [email protected]
    Cc: Andrey Konovalov <[email protected]>
    Signed-off-by: Berk Cem Goksel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ALSA: usb: Increase volume range that triggers a warning [+ + +]
Author: Arun Raghavan <[email protected]>
Date:   Fri Jan 16 14:58:04 2026 -0800

    ALSA: usb: Increase volume range that triggers a warning
    
    [ Upstream commit 6b971191fcfc9e3c2c0143eea22534f1f48dbb62 ]
    
    On at least the HyperX Cloud III, the range is 18944 (-18944 -> 0 in
    steps of 1), so the original check for 255 steps is definitely obsolete.
    Let's give ourselves a little more headroom before we emit a warning.
    
    Fixes: 80acefff3bc7 ("ALSA: usb-audio - Add volume range check and warn if it too big")
    Cc: Jaroslav Kysela <[email protected]>
    Cc: Takashi Iwai <[email protected]>
    Cc: [email protected]
    Signed-off-by: Arun Raghavan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
amd-xgbe: avoid misleading per-packet error log [+ + +]
Author: Raju Rangoju <[email protected]>
Date:   Wed Jan 14 22:00:37 2026 +0530

    amd-xgbe: avoid misleading per-packet error log
    
    [ Upstream commit c158f985cf6c2c36c99c4f67af2ff3f5ebe09f8f ]
    
    On the receive path, packet can be damaged because of buffer
    overflow in Rx FIFO. Avoid misleading per-packet error log when
    packet->errors is set, this can flood the log. Instead, rely on the
    standard rtnl_link_stats64 stats.
    
    Fixes: c5aa9e3b8156 ("amd-xgbe: Initial AMD 10GbE platform driver")
    Signed-off-by: Raju Rangoju <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64/fpsimd: signal: Allocate SSVE storage when restoring ZA [+ + +]
Author: Mark Rutland <[email protected]>
Date:   Tue Jan 20 14:51:06 2026 +0000

    arm64/fpsimd: signal: Allocate SSVE storage when restoring ZA
    
    commit ea8ccfddbce0bee6310da4f3fc560ad520f5e6b4 upstream.
    
    The code to restore a ZA context doesn't attempt to allocate the task's
    sve_state before setting TIF_SME. Consequently, restoring a ZA context
    can place a task into an invalid state where TIF_SME is set but the
    task's sve_state is NULL.
    
    In legitimate but uncommon cases where the ZA signal context was NOT
    created by the kernel in the context of the same task (e.g. if the task
    is saved/restored with something like CRIU), we have no guarantee that
    sve_state had been allocated previously. In these cases, userspace can
    enter streaming mode without trapping while sve_state is NULL, causing a
    later NULL pointer dereference when the kernel attempts to store the
    register state:
    
    | # ./sigreturn-za
    | Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
    | Mem abort info:
    |   ESR = 0x0000000096000046
    |   EC = 0x25: DABT (current EL), IL = 32 bits
    |   SET = 0, FnV = 0
    |   EA = 0, S1PTW = 0
    |   FSC = 0x06: level 2 translation fault
    | Data abort info:
    |   ISV = 0, ISS = 0x00000046, ISS2 = 0x00000000
    |   CM = 0, WnR = 1, TnD = 0, TagAccess = 0
    |   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    | user pgtable: 4k pages, 52-bit VAs, pgdp=0000000101f47c00
    | [0000000000000000] pgd=08000001021d8403, p4d=0800000102274403, pud=0800000102275403, pmd=0000000000000000
    | Internal error: Oops: 0000000096000046 [#1]  SMP
    | Modules linked in:
    | CPU: 0 UID: 0 PID: 153 Comm: sigreturn-za Not tainted 6.19.0-rc1 #1 PREEMPT
    | Hardware name: linux,dummy-virt (DT)
    | pstate: 214000c9 (nzCv daIF +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
    | pc : sve_save_state+0x4/0xf0
    | lr : fpsimd_save_user_state+0xb0/0x1c0
    | sp : ffff80008070bcc0
    | x29: ffff80008070bcc0 x28: fff00000c1ca4c40 x27: 63cfa172fb5cf658
    | x26: fff00000c1ca5228 x25: 0000000000000000 x24: 0000000000000000
    | x23: 0000000000000000 x22: fff00000c1ca4c40 x21: fff00000c1ca4c40
    | x20: 0000000000000020 x19: fff00000ff6900f0 x18: 0000000000000000
    | x17: fff05e8e0311f000 x16: 0000000000000000 x15: 028fca8f3bdaf21c
    | x14: 0000000000000212 x13: fff00000c0209f10 x12: 0000000000000020
    | x11: 0000000000200b20 x10: 0000000000000000 x9 : fff00000ff69dcc0
    | x8 : 00000000000003f2 x7 : 0000000000000001 x6 : fff00000c1ca5b48
    | x5 : fff05e8e0311f000 x4 : 0000000008000000 x3 : 0000000000000000
    | x2 : 0000000000000001 x1 : fff00000c1ca5970 x0 : 0000000000000440
    | Call trace:
    |  sve_save_state+0x4/0xf0 (P)
    |  fpsimd_thread_switch+0x48/0x198
    |  __switch_to+0x20/0x1c0
    |  __schedule+0x36c/0xce0
    |  schedule+0x34/0x11c
    |  exit_to_user_mode_loop+0x124/0x188
    |  el0_interrupt+0xc8/0xd8
    |  __el0_irq_handler_common+0x18/0x24
    |  el0t_64_irq_handler+0x10/0x1c
    |  el0t_64_irq+0x198/0x19c
    | Code: 54000040 d51b4408 d65f03c0 d503245f (e5bb5800)
    | ---[ end trace 0000000000000000 ]---
    
    Fix this by having restore_za_context() ensure that the task's sve_state
    is allocated, matching what we do when taking an SME trap. Any live
    SVE/SSVE state (which is restored earlier from a separate signal
    context) must be preserved, and hence this is not zeroed.
    
    Fixes: 39782210eb7e ("arm64/sme: Implement ZA signal handling")
    Signed-off-by: Mark Rutland <[email protected]>
    Cc: <[email protected]>
    Cc: Mark Brown <[email protected]>
    Cc: Will Deacon <[email protected]>
    Reviewed-by: Mark Brown <[email protected]>
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
arm64: dts: qcom: sc8280xp: Add missing VDD_MXC links [+ + +]
Author: Konrad Dybcio <[email protected]>
Date:   Tue Dec 2 18:36:22 2025 +0100

    arm64: dts: qcom: sc8280xp: Add missing VDD_MXC links
    
    [ Upstream commit 868b979c5328b867c95a6d5a93ba13ad0d3cd2f1 ]
    
    To make sure that power rail is voted for, wire it up to its consumers.
    
    Fixes: 152d1faf1e2f ("arm64: dts: qcom: add SC8280XP platform")
    Signed-off-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Ulf Hansson <[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: rockchip: Fix voltage threshold for volume keys for Pinephone Pro [+ + +]
Author: Ondrej Jirman <[email protected]>
Date:   Mon Nov 24 19:47:03 2025 -0800

    arm64: dts: rockchip: Fix voltage threshold for volume keys for Pinephone Pro
    
    commit 5497ffe305b2ea31ae62d4a311d7cabfb671f54a upstream.
    
    Previously sometimes pressing the volume-down button would register as
    a volume-up button. Match the thresholds as shown in the Pinephone Pro
    schematic.
    
    Tests:
    
    ~ $ evtest
        // Mashed the volume down ~100 times with varying intensity
        Event: time xxx, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 1
        Event: time xxx, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 0
        // Mashed the volume up ~100 times with varying intensity
        Event: time xxx, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1
        Event: time xxx, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
    
    Fixes: d3150ed53580 ("arm64: dts: rockchip: Add support for volume keys to rk3399-pinephone-pro")
    Cc: [email protected]
    Signed-off-by: Ondrej Jirman <[email protected]>
    Signed-off-by: Rudraksha Gupta <[email protected]>
    Reviewed-by: Pavel Machek <[email protected]>
    Link: https://patch.msgid.link/20251124-ppp_light_accel_mag_vol-down-v5-4-f9a10a0a50eb@gmail.com
    Signed-off-by: Heiko Stuebner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: dts: rockchip: remove dangerous max-link-speed from helios64 [+ + +]
Author: Geraldo Nascimento <[email protected]>
Date:   Mon Nov 17 18:47:43 2025 -0300

    arm64: dts: rockchip: remove dangerous max-link-speed from helios64
    
    commit 0368e4afcf20f377c81fa77b1c7d0dee4a625a44 upstream.
    
    Shawn Lin from Rockchip strongly discourages attempts to use their
    RK3399 PCIe core at 5.0 GT/s speed, citing concerns about catastrophic
    failures that may happen. Even if the odds are low, drop from last user
    of this non-default property for the RK3399 platform, helios64 board
    dts.
    
    Fixes: 755fff528b1b ("arm64: dts: rockchip: add variables for pcie completion to helios64")
    Link: https://lore.kernel.org/all/[email protected]/
    Cc: [email protected]
    Reported-by: Shawn Lin <[email protected]>
    Reviewed-by: Dragan Simic <[email protected]>
    Signed-off-by: Geraldo Nascimento <[email protected]>
    Acked-by: Shawn Lin <[email protected]>
    Link: https://patch.msgid.link/43bb639c120f599106fca2deee6c6599b2692c5c.1763415706.git.geraldogabriel@gmail.com
    Signed-off-by: Heiko Stuebner <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: dts: rockchip: remove redundant max-link-speed from nanopi-r4s [+ + +]
Author: Geraldo Nascimento <[email protected]>
Date:   Mon Jan 26 11:13:38 2026 -0500

    arm64: dts: rockchip: remove redundant max-link-speed from nanopi-r4s
    
    [ Upstream commit ce652c98a7bfa0b7c675ef5cd85c44c186db96af ]
    
    This is already the default in rk3399-base.dtsi, remove redundant
    declaration from rk3399-nanopi-r4s.dtsi.
    
    Fixes: db792e9adbf8 ("rockchip: rk3399: Add support for FriendlyARM NanoPi R4S")
    Cc: [email protected]
    Reported-by: Dragan Simic <[email protected]>
    Reviewed-by: Dragan Simic <[email protected]>
    Signed-off-by: Geraldo Nascimento <[email protected]>
    Acked-by: Shawn Lin <[email protected]>
    Link: https://patch.msgid.link/6694456a735844177c897581f785cc00c064c7d1.1763415706.git.geraldogabriel@gmail.com
    Signed-off-by: Heiko Stuebner <[email protected]>
    [ adapted file path from rk3399-nanopi-r4s.dtsi to rk3399-nanopi-r4s.dts ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

arm64: Set __nocfi on swsusp_arch_resume() [+ + +]
Author: Zhaoyang Huang <[email protected]>
Date:   Thu Jan 22 19:49:25 2026 +0800

    arm64: Set __nocfi on swsusp_arch_resume()
    
    commit e2f8216ca2d8e61a23cb6ec355616339667e0ba6 upstream.
    
    A DABT is reported[1] on an android based system when resume from hiberate.
    This happens because swsusp_arch_suspend_exit() is marked with SYM_CODE_*()
    and does not have a CFI hash, but swsusp_arch_resume() will attempt to
    verify the CFI hash when calling a copy of swsusp_arch_suspend_exit().
    
    Given that there's an existing requirement that the entrypoint to
    swsusp_arch_suspend_exit() is the first byte of the .hibernate_exit.text
    section, we cannot fix this by marking swsusp_arch_suspend_exit() with
    SYM_FUNC_*(). The simplest fix for now is to disable the CFI check in
    swsusp_arch_resume().
    
    Mark swsusp_arch_resume() as __nocfi to disable the CFI check.
    
    [1]
    [   22.991934][    T1] Unable to handle kernel paging request at virtual address 0000000109170ffc
    [   22.991934][    T1] Mem abort info:
    [   22.991934][    T1]   ESR = 0x0000000096000007
    [   22.991934][    T1]   EC = 0x25: DABT (current EL), IL = 32 bits
    [   22.991934][    T1]   SET = 0, FnV = 0
    [   22.991934][    T1]   EA = 0, S1PTW = 0
    [   22.991934][    T1]   FSC = 0x07: level 3 translation fault
    [   22.991934][    T1] Data abort info:
    [   22.991934][    T1]   ISV = 0, ISS = 0x00000007, ISS2 = 0x00000000
    [   22.991934][    T1]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
    [   22.991934][    T1]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    [   22.991934][    T1] [0000000109170ffc] user address but active_mm is swapper
    [   22.991934][    T1] Internal error: Oops: 0000000096000007 [#1] PREEMPT SMP
    [   22.991934][    T1] Dumping ftrace buffer:
    [   22.991934][    T1]    (ftrace buffer empty)
    [   22.991934][    T1] Modules linked in:
    [   22.991934][    T1] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.6.98-android15-8-g0b1d2aee7fc3-dirty-4k #1 688c7060a825a3ac418fe53881730b355915a419
    [   22.991934][    T1] Hardware name: Unisoc UMS9360-base Board (DT)
    [   22.991934][    T1] pstate: 804000c5 (Nzcv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [   22.991934][    T1] pc : swsusp_arch_resume+0x2ac/0x344
    [   22.991934][    T1] lr : swsusp_arch_resume+0x294/0x344
    [   22.991934][    T1] sp : ffffffc08006b960
    [   22.991934][    T1] x29: ffffffc08006b9c0 x28: 0000000000000000 x27: 0000000000000000
    [   22.991934][    T1] x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000820
    [   22.991934][    T1] x23: ffffffd0817e3000 x22: ffffffd0817e3000 x21: 0000000000000000
    [   22.991934][    T1] x20: ffffff8089171000 x19: ffffffd08252c8c8 x18: ffffffc080061058
    [   22.991934][    T1] x17: 00000000529c6ef0 x16: 00000000529c6ef0 x15: 0000000000000004
    [   22.991934][    T1] x14: ffffff8178c88000 x13: 0000000000000006 x12: 0000000000000000
    [   22.991934][    T1] x11: 0000000000000015 x10: 0000000000000001 x9 : ffffffd082533000
    [   22.991934][    T1] x8 : 0000000109171000 x7 : 205b5d3433393139 x6 : 392e32322020205b
    [   22.991934][    T1] x5 : 000000010916f000 x4 : 000000008164b000 x3 : ffffff808a4e0530
    [   22.991934][    T1] x2 : ffffffd08058e784 x1 : 0000000082326000 x0 : 000000010a283000
    [   22.991934][    T1] Call trace:
    [   22.991934][    T1]  swsusp_arch_resume+0x2ac/0x344
    [   22.991934][    T1]  hibernation_restore+0x158/0x18c
    [   22.991934][    T1]  load_image_and_restore+0xb0/0xec
    [   22.991934][    T1]  software_resume+0xf4/0x19c
    [   22.991934][    T1]  software_resume_initcall+0x34/0x78
    [   22.991934][    T1]  do_one_initcall+0xe8/0x370
    [   22.991934][    T1]  do_initcall_level+0xc8/0x19c
    [   22.991934][    T1]  do_initcalls+0x70/0xc0
    [   22.991934][    T1]  do_basic_setup+0x1c/0x28
    [   22.991934][    T1]  kernel_init_freeable+0xe0/0x148
    [   22.991934][    T1]  kernel_init+0x20/0x1a8
    [   22.991934][    T1]  ret_from_fork+0x10/0x20
    [   22.991934][    T1] Code: a9400a61 f94013e0 f9438923 f9400a64 (b85fc110)
    
    Co-developed-by: Jeson Gao <[email protected]>
    Signed-off-by: Jeson Gao <[email protected]>
    Signed-off-by: Zhaoyang Huang <[email protected]>
    Acked-by: Will Deacon <[email protected]>
    Acked-by: Mark Rutland <[email protected]>
    Cc: <[email protected]>
    [[email protected]: commit log updated by Mark Rutland]
    Signed-off-by: Catalin Marinas <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ASoC: codecs: wsa881x: Drop unused version readout [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Tue Jan 20 20:39:05 2026 -0500

    ASoC: codecs: wsa881x: Drop unused version readout
    
    [ Upstream commit 3d2a69eb503d15171a7ba51cf0b562728ac396b7 ]
    
    Driver does not use the device version after reading it from the
    registers, so simplify by dropping unneeded code.
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: 29d71b8a5a40 ("ASoC: codecs: wsa881x: fix unnecessary initialisation")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: codecs: wsa881x: fix unnecessary initialisation [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Tue Jan 20 20:39:06 2026 -0500

    ASoC: codecs: wsa881x: fix unnecessary initialisation
    
    [ Upstream commit 29d71b8a5a40708b3eed9ba4953bfc2312c9c776 ]
    
    The soundwire update_status() callback may be called multiple times with
    the same ATTACHED status but initialisation should only be done when
    transitioning from UNATTACHED to ATTACHED.
    
    Fixes: a0aab9e1404a ("ASoC: codecs: add wsa881x amplifier support")
    Cc: [email protected]      # 5.6
    Cc: Srinivas Kandagatla <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Srinivas Kandagatla <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: codecs: wsa883x: fix unnecessary initialisation [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Jan 19 11:58:47 2026 -0500

    ASoC: codecs: wsa883x: fix unnecessary initialisation
    
    [ Upstream commit 49aadf830eb048134d33ad7329d92ecff45d8dbb ]
    
    The soundwire update_status() callback may be called multiple times with
    the same ATTACHED status but initialisation should only be done when
    transitioning from UNATTACHED to ATTACHED.
    
    This avoids repeated initialisation of the codecs during boot of
    machines like the Lenovo ThinkPad X13s:
    
    [   11.614523] wsa883x-codec sdw:1:0:0217:0202:00:1: WSA883X Version 1_1, Variant: WSA8835_V2
    [   11.618022] wsa883x-codec sdw:1:0:0217:0202:00:1: WSA883X Version 1_1, Variant: WSA8835_V2
    [   11.621377] wsa883x-codec sdw:1:0:0217:0202:00:1: WSA883X Version 1_1, Variant: WSA8835_V2
    [   11.624065] wsa883x-codec sdw:1:0:0217:0202:00:1: WSA883X Version 1_1, Variant: WSA8835_V2
    [   11.631382] wsa883x-codec sdw:1:0:0217:0202:00:2: WSA883X Version 1_1, Variant: WSA8835_V2
    [   11.634424] wsa883x-codec sdw:1:0:0217:0202:00:2: WSA883X Version 1_1, Variant: WSA8835_V2
    
    Fixes: 43b8c7dc85a1 ("ASoC: codecs: add wsa883x amplifier support")
    Cc: [email protected]      # 6.0
    Cc: Srinivas Kandagatla <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Srinivas Kandagatla <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: codecs: wsa884x: fix codec initialisation [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Fri Jan 2 12:14:12 2026 +0100

    ASoC: codecs: wsa884x: fix codec initialisation
    
    commit 120f3e6ff76209ee2f62a64e5e7e9d70274df42b upstream.
    
    The soundwire update_status() callback may be called multiple times with
    the same ATTACHED status but initialisation should only be done when
    transitioning from UNATTACHED to ATTACHED.
    
    Fix the inverted hw_init flag which was set to false instead of true
    after initialisation which defeats its purpose and may result in
    repeated unnecessary initialisation.
    
    Similarly, the initial state of the flag was also inverted so that the
    codec would only be initialised and brought out of regmap cache only
    mode if its status first transitions to UNATTACHED.
    
    Fixes: aa21a7d4f68a ("ASoC: codecs: wsa884x: Add WSA884x family of speakers")
    Cc: [email protected]      # 6.5
    Cc: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Tested-by: Krzysztof Kozlowski <[email protected]>
    Reviewed-by: Srinivas Kandagatla <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

ASoC: tlv320adcx140: fix null pointer [+ + +]
Author: Emil Svendsen <[email protected]>
Date:   Tue Jan 13 11:58:45 2026 +0100

    ASoC: tlv320adcx140: fix null pointer
    
    [ Upstream commit be7664c81d3129fc313ef62ff275fd3d33cfecd4 ]
    
    The "snd_soc_component" in "adcx140_priv" was only used once but never
    set. It was only used for reaching "dev" which is already present in
    "adcx140_priv".
    
    Fixes: 4e82971f7b55 ("ASoC: tlv320adcx140: Add a new kcontrol")
    Signed-off-by: Emil Svendsen <[email protected]>
    Signed-off-by: Sascha Hauer <[email protected]>
    Link: https://patch.msgid.link/20260113-sound-soc-codecs-tvl320adcx140-v4-2-8f7ecec525c8@pengutronix.de
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: tlv320adcx140: fix word length [+ + +]
Author: Emil Svendsen <[email protected]>
Date:   Tue Jan 13 11:58:47 2026 +0100

    ASoC: tlv320adcx140: fix word length
    
    [ Upstream commit 46378ab9fcb796dca46b51e10646f636e2c661f9 ]
    
    The word length is the physical width of the channel slots. So the
    hw_params would misconfigure when format width and physical width
    doesn't match. Like S24_LE which has data width of 24 bits but physical
    width of 32 bits. So if using asymmetric formats you will get a lot of
    noise.
    
    Fixes: 689c7655b50c5 ("ASoC: tlv320adcx140: Add the tlv320adcx140 codec driver family")
    Signed-off-by: Emil Svendsen <[email protected]>
    Signed-off-by: Sascha Hauer <[email protected]>
    Link: https://patch.msgid.link/20260113-sound-soc-codecs-tvl320adcx140-v4-4-8f7ecec525c8@pengutronix.de
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ata: libata-core: Introduce ata_dev_config_lpm() [+ + +]
Author: Damien Le Moal <[email protected]>
Date:   Tue Jul 1 21:53:12 2025 +0900

    ata: libata-core: Introduce ata_dev_config_lpm()
    
    [ Upstream commit d360121832d8a36871249271df5b9ff05f835f62 ]
    
    If the port of a device does not support Device Initiated Power
    Management (DIPM), that is, the port is flagged with ATA_FLAG_NO_DIPM,
    the DIPM feature of a device should not be used. Though DIPM is disabled
    by default on a device, the "Software Settings Preservation feature"
    may keep DIPM enabled or DIPM may have been enabled by the system
    firmware.
    
    Introduce the function ata_dev_config_lpm() to always disable DIPM on a
    device that supports this feature if the port of the device is flagged
    with ATA_FLAG_NO_DIPM. ata_dev_config_lpm() is called from
    ata_dev_configure(), ensuring that a device DIPM feature is disabled
    when it cannot be used.
    
    Signed-off-by: Damien Le Moal <[email protected]>
    Reviewed-by: Niklas Cassel <[email protected]>
    Reviewed-by: Hannes Reinecke <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Niklas Cassel <[email protected]>
    Stable-dep-of: c8c6fb886f57 ("ata: libata: Print features also for ATAPI devices")
    Signed-off-by: Sasha Levin <[email protected]>

ata: libata: Add cpr_log to ata_dev_print_features() early return [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Mon Jan 12 13:20:49 2026 +0100

    ata: libata: Add cpr_log to ata_dev_print_features() early return
    
    [ Upstream commit a6bee5e5243ad02cae575becc4c83df66fc29573 ]
    
    ata_dev_print_features() is supposed to return early and not print anything
    if there are no features supported.
    
    However, commit fe22e1c2f705 ("libata: support concurrent positioning
    ranges log") added another feature to ata_dev_print_features() without
    updating the early return conditional.
    
    Add the missing feature to the early return conditional.
    
    Fixes: fe22e1c2f705 ("libata: support concurrent positioning ranges log")
    Signed-off-by: Niklas Cassel <[email protected]>
    Tested-by: Wolf <[email protected]>
    Signed-off-by: Damien Le Moal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ata: libata: Call ata_dev_config_lpm() for ATAPI devices [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Mon Jan 12 13:20:47 2026 +0100

    ata: libata: Call ata_dev_config_lpm() for ATAPI devices
    
    [ Upstream commit 8f3fb33f8f3f825c708ece800c921977c157f9b6 ]
    
    Commit d360121832d8 ("ata: libata-core: Introduce ata_dev_config_lpm()")
    introduced ata_dev_config_lpm(). However, it only called this function for
    ATA_DEV_ATA and ATA_DEV_ZAC devices, not for ATA_DEV_ATAPI devices.
    
    Additionally, commit d99a9142e782 ("ata: libata-core: Move device LPM quirk
    settings to ata_dev_config_lpm()") moved the LPM quirk application from
    ata_dev_configure() to ata_dev_config_lpm(), causing LPM quirks for ATAPI
    devices to no longer be applied.
    
    Call ata_dev_config_lpm() also for ATAPI devices, such that LPM quirks are
    applied for ATAPI devices with an entry in __ata_dev_quirks once again.
    
    Fixes: d360121832d8 ("ata: libata-core: Introduce ata_dev_config_lpm()")
    Fixes: d99a9142e782 ("ata: libata-core: Move device LPM quirk settings to ata_dev_config_lpm()")
    Signed-off-by: Niklas Cassel <[email protected]>
    Tested-by: Wolf <[email protected]>
    Signed-off-by: Damien Le Moal <[email protected]>
    Stable-dep-of: c8c6fb886f57 ("ata: libata: Print features also for ATAPI devices")
    Signed-off-by: Sasha Levin <[email protected]>

ata: libata: Print features also for ATAPI devices [+ + +]
Author: Niklas Cassel <[email protected]>
Date:   Mon Jan 12 13:20:51 2026 +0100

    ata: libata: Print features also for ATAPI devices
    
    [ Upstream commit c8c6fb886f57d5bf71fb6de6334a143608d35707 ]
    
    Commit d633b8a702ab ("libata: print feature list on device scan")
    added a print of the features supported by the device for ATA_DEV_ATA and
    ATA_DEV_ZAC devices, but not for ATA_DEV_ATAPI devices.
    
    Fix this by printing the features also for ATAPI devices.
    
    Before changes:
    ata1.00: ATAPI: Slimtype DVD A  DU8AESH, 6C2M, max UDMA/133
    
    After changes:
    ata1.00: ATAPI: Slimtype DVD A  DU8AESH, 6C2M, max UDMA/133
    ata1.00: Features: Dev-Attention HIPM DIPM
    
    Fixes: d633b8a702ab ("libata: print feature list on device scan")
    Signed-off-by: Niklas Cassel <[email protected]>
    Tested-by: Wolf <[email protected]>
    Signed-off-by: Damien Le Moal <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
be2net: fix data race in be_get_new_eqd [+ + +]
Author: David Yang <[email protected]>
Date:   Mon Jan 19 23:34:36 2026 +0800

    be2net: fix data race in be_get_new_eqd
    
    [ Upstream commit 302e5b481caa7b3d11ec0e058434c1fc95195e50 ]
    
    In be_get_new_eqd(), statistics of pkts, protected by u64_stats_sync, are
    read and accumulated in ignorance of possible u64_stats_fetch_retry()
    events. Before the commit in question, these statistics were retrieved
    one by one directly from queues. Fix this by reading them into temporary
    variables first.
    
    Fixes: 209477704187 ("be2net: set interrupt moderation for Skyhawk-R using EQ-DB")
    Signed-off-by: David Yang <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

be2net: Fix NULL pointer dereference in be_cmd_get_mac_from_list [+ + +]
Author: Andrey Vatoropin <[email protected]>
Date:   Tue Jan 20 11:37:47 2026 +0000

    be2net: Fix NULL pointer dereference in be_cmd_get_mac_from_list
    
    [ Upstream commit 8215794403d264739cc676668087512950b2ff31 ]
    
    When the parameter pmac_id_valid argument of be_cmd_get_mac_from_list() is
    set to false, the driver may request the PMAC_ID from the firmware of the
    network card, and this function will store that PMAC_ID at the provided
    address pmac_id. This is the contract of this function.
    
    However, there is a location within the driver where both
    pmac_id_valid == false and pmac_id == NULL are being passed. This could
    result in dereferencing a NULL pointer.
    
    To resolve this issue, it is necessary to pass the address of a stub
    variable to the function.
    
    Fixes: 95046b927a54 ("be2net: refactor MAC-addr setup code")
    Signed-off-by: Andrey Vatoropin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bonding: limit BOND_MODE_8023AD to Ethernet devices [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Jan 13 19:12:01 2026 +0000

    bonding: limit BOND_MODE_8023AD to Ethernet devices
    
    [ Upstream commit c84fcb79e5dbde0b8d5aeeaf04282d2149aebcf6 ]
    
    BOND_MODE_8023AD makes sense for ARPHRD_ETHER only.
    
    syzbot reported:
    
     BUG: KASAN: global-out-of-bounds in __hw_addr_create net/core/dev_addr_lists.c:63 [inline]
     BUG: KASAN: global-out-of-bounds in __hw_addr_add_ex+0x25d/0x760 net/core/dev_addr_lists.c:118
    Read of size 16 at addr ffffffff8bf94040 by task syz.1.3580/19497
    
    CPU: 1 UID: 0 PID: 19497 Comm: syz.1.3580 Tainted: G             L      syzkaller #0 PREEMPT(full)
    Tainted: [L]=SOFTLOCKUP
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025
    Call Trace:
     <TASK>
      dump_stack_lvl+0xe8/0x150 lib/dump_stack.c:120
      print_address_description mm/kasan/report.c:378 [inline]
      print_report+0xca/0x240 mm/kasan/report.c:482
      kasan_report+0x118/0x150 mm/kasan/report.c:595
     check_region_inline mm/kasan/generic.c:-1 [inline]
      kasan_check_range+0x2b0/0x2c0 mm/kasan/generic.c:200
      __asan_memcpy+0x29/0x70 mm/kasan/shadow.c:105
      __hw_addr_create net/core/dev_addr_lists.c:63 [inline]
      __hw_addr_add_ex+0x25d/0x760 net/core/dev_addr_lists.c:118
      __dev_mc_add net/core/dev_addr_lists.c:868 [inline]
      dev_mc_add+0xa1/0x120 net/core/dev_addr_lists.c:886
      bond_enslave+0x2b8b/0x3ac0 drivers/net/bonding/bond_main.c:2180
      do_set_master+0x533/0x6d0 net/core/rtnetlink.c:2963
      do_setlink+0xcf0/0x41c0 net/core/rtnetlink.c:3165
      rtnl_changelink net/core/rtnetlink.c:3776 [inline]
      __rtnl_newlink net/core/rtnetlink.c:3935 [inline]
      rtnl_newlink+0x161c/0x1c90 net/core/rtnetlink.c:4072
      rtnetlink_rcv_msg+0x7cf/0xb70 net/core/rtnetlink.c:6958
      netlink_rcv_skb+0x208/0x470 net/netlink/af_netlink.c:2550
      netlink_unicast_kernel net/netlink/af_netlink.c:1318 [inline]
      netlink_unicast+0x82f/0x9e0 net/netlink/af_netlink.c:1344
      netlink_sendmsg+0x805/0xb30 net/netlink/af_netlink.c:1894
      sock_sendmsg_nosec net/socket.c:727 [inline]
      __sock_sendmsg+0x21c/0x270 net/socket.c:742
      ____sys_sendmsg+0x505/0x820 net/socket.c:2592
      ___sys_sendmsg+0x21f/0x2a0 net/socket.c:2646
      __sys_sendmsg+0x164/0x220 net/socket.c:2678
      do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline]
      __do_fast_syscall_32+0x1dc/0x560 arch/x86/entry/syscall_32.c:307
      do_fast_syscall_32+0x34/0x80 arch/x86/entry/syscall_32.c:332
     entry_SYSENTER_compat_after_hwframe+0x84/0x8e
     </TASK>
    
    The buggy address belongs to the variable:
     lacpdu_mcast_addr+0x0/0x40
    
    Fixes: 872254dd6b1f ("net/bonding: Enable bonding to enslave non ARPHRD_ETHER")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Andrew Lunn <[email protected]>
    Acked-by: Jay Vosburgh <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

bonding: provide a net pointer to __skb_flow_dissect() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Tue Jan 20 16:17:44 2026 +0000

    bonding: provide a net pointer to __skb_flow_dissect()
    
    [ Upstream commit 5f9b329096596b7e53e07d041d7fca4cbe1be752 ]
    
    After 3cbf4ffba5ee ("net: plumb network namespace into __skb_flow_dissect")
    we have to provide a net pointer to __skb_flow_dissect(),
    either via skb->dev, skb->sk, or a user provided pointer.
    
    In the following case, syzbot was able to cook a bare skb.
    
    WARNING: net/core/flow_dissector.c:1131 at __skb_flow_dissect+0xb57/0x68b0 net/core/flow_dissector.c:1131, CPU#1: syz.2.1418/11053
    Call Trace:
     <TASK>
      bond_flow_dissect drivers/net/bonding/bond_main.c:4093 [inline]
      __bond_xmit_hash+0x2d7/0xba0 drivers/net/bonding/bond_main.c:4157
      bond_xmit_hash_xdp drivers/net/bonding/bond_main.c:4208 [inline]
      bond_xdp_xmit_3ad_xor_slave_get drivers/net/bonding/bond_main.c:5139 [inline]
      bond_xdp_get_xmit_slave+0x1fd/0x710 drivers/net/bonding/bond_main.c:5515
      xdp_master_redirect+0x13f/0x2c0 net/core/filter.c:4388
      bpf_prog_run_xdp include/net/xdp.h:700 [inline]
      bpf_test_run+0x6b2/0x7d0 net/bpf/test_run.c:421
      bpf_prog_test_run_xdp+0x795/0x10e0 net/bpf/test_run.c:1390
      bpf_prog_test_run+0x2c7/0x340 kernel/bpf/syscall.c:4703
      __sys_bpf+0x562/0x860 kernel/bpf/syscall.c:6182
      __do_sys_bpf kernel/bpf/syscall.c:6274 [inline]
      __se_sys_bpf kernel/bpf/syscall.c:6272 [inline]
      __x64_sys_bpf+0x7c/0x90 kernel/bpf/syscall.c:6272
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
      do_syscall_64+0xec/0xf80 arch/x86/entry/syscall_64.c:94
    
    Fixes: 58deb77cc52d ("bonding: balance ICMP echoes in layer3+4 mode")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Matteo Croce <[email protected]>
    Acked-by: Stanislav Fomichev <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bpf: Do not let BPF test infra emit invalid GSO types to stack [+ + +]
Author: Daniel Borkmann <[email protected]>
Date:   Mon Oct 20 09:54:41 2025 +0200

    bpf: Do not let BPF test infra emit invalid GSO types to stack
    
    commit 04a899573fb87273a656f178b5f920c505f68875 upstream.
    
    Yinhao et al. reported that their fuzzer tool was able to trigger a
    skb_warn_bad_offload() from netif_skb_features() -> gso_features_check().
    When a BPF program - triggered via BPF test infra - pushes the packet
    to the loopback device via bpf_clone_redirect() then mentioned offload
    warning can be seen. GSO-related features are then rightfully disabled.
    
    We get into this situation due to convert___skb_to_skb() setting
    gso_segs and gso_size but not gso_type. Technically, it makes sense
    that this warning triggers since the GSO properties are malformed due
    to the gso_type. Potentially, the gso_type could be marked non-trustworthy
    through setting it at least to SKB_GSO_DODGY without any other specific
    assumptions, but that also feels wrong given we should not go further
    into the GSO engine in the first place.
    
    The checks were added in 121d57af308d ("gso: validate gso_type in GSO
    handlers") because there were malicious (syzbot) senders that combine
    a protocol with a non-matching gso_type. If we would want to drop such
    packets, gso_features_check() currently only returns feature flags via
    netif_skb_features(), so one location for potentially dropping such skbs
    could be validate_xmit_unreadable_skb(), but then otoh it would be
    an additional check in the fast-path for a very corner case. Given
    bpf_clone_redirect() is the only place where BPF test infra could emit
    such packets, lets reject them right there.
    
    Fixes: 850a88cc4096 ("bpf: Expose __sk_buff wire_len/gso_segs to BPF_PROG_TEST_RUN")
    Fixes: cf62089b0edd ("bpf: Add gso_size to __sk_buff")
    Reported-by: Yinhao Hu <[email protected]>
    Reported-by: Kaiyan Mei <[email protected]>
    Reported-by: Dongliang Mu <[email protected]>
    Signed-off-by: Daniel Borkmann <[email protected]>
    Signed-off-by: Martin KaFai Lau <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Shung-Hsi Yu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
bridge: mcast: Fix use-after-free during router port configuration [+ + +]
Author: Ido Schimmel <[email protected]>
Date:   Thu Jun 19 21:22:28 2025 +0300

    bridge: mcast: Fix use-after-free during router port configuration
    
    commit 7544f3f5b0b58c396f374d060898b5939da31709 upstream.
    
    The bridge maintains a global list of ports behind which a multicast
    router resides. The list is consulted during forwarding to ensure
    multicast packets are forwarded to these ports even if the ports are not
    member in the matching MDB entry.
    
    When per-VLAN multicast snooping is enabled, the per-port multicast
    context is disabled on each port and the port is removed from the global
    router port list:
    
     # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1
     # ip link add name dummy1 up master br1 type dummy
     # ip link set dev dummy1 type bridge_slave mcast_router 2
     $ bridge -d mdb show | grep router
     router ports on br1: dummy1
     # ip link set dev br1 type bridge mcast_vlan_snooping 1
     $ bridge -d mdb show | grep router
    
    However, the port can be re-added to the global list even when per-VLAN
    multicast snooping is enabled:
    
     # ip link set dev dummy1 type bridge_slave mcast_router 0
     # ip link set dev dummy1 type bridge_slave mcast_router 2
     $ bridge -d mdb show | grep router
     router ports on br1: dummy1
    
    Since commit 4b30ae9adb04 ("net: bridge: mcast: re-implement
    br_multicast_{enable, disable}_port functions"), when per-VLAN multicast
    snooping is enabled, multicast disablement on a port will disable the
    per-{port, VLAN} multicast contexts and not the per-port one. As a
    result, a port will remain in the global router port list even after it
    is deleted. This will lead to a use-after-free [1] when the list is
    traversed (when adding a new port to the list, for example):
    
     # ip link del dev dummy1
     # ip link add name dummy2 up master br1 type dummy
     # ip link set dev dummy2 type bridge_slave mcast_router 2
    
    Similarly, stale entries can also be found in the per-VLAN router port
    list. When per-VLAN multicast snooping is disabled, the per-{port, VLAN}
    contexts are disabled on each port and the port is removed from the
    per-VLAN router port list:
    
     # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 mcast_vlan_snooping 1
     # ip link add name dummy1 up master br1 type dummy
     # bridge vlan add vid 2 dev dummy1
     # bridge vlan global set vid 2 dev br1 mcast_snooping 1
     # bridge vlan set vid 2 dev dummy1 mcast_router 2
     $ bridge vlan global show dev br1 vid 2 | grep router
           router ports: dummy1
     # ip link set dev br1 type bridge mcast_vlan_snooping 0
     $ bridge vlan global show dev br1 vid 2 | grep router
    
    However, the port can be re-added to the per-VLAN list even when
    per-VLAN multicast snooping is disabled:
    
     # bridge vlan set vid 2 dev dummy1 mcast_router 0
     # bridge vlan set vid 2 dev dummy1 mcast_router 2
     $ bridge vlan global show dev br1 vid 2 | grep router
           router ports: dummy1
    
    When the VLAN is deleted from the port, the per-{port, VLAN} multicast
    context will not be disabled since multicast snooping is not enabled
    on the VLAN. As a result, the port will remain in the per-VLAN router
    port list even after it is no longer member in the VLAN. This will lead
    to a use-after-free [2] when the list is traversed (when adding a new
    port to the list, for example):
    
     # ip link add name dummy2 up master br1 type dummy
     # bridge vlan add vid 2 dev dummy2
     # bridge vlan del vid 2 dev dummy1
     # bridge vlan set vid 2 dev dummy2 mcast_router 2
    
    Fix these issues by removing the port from the relevant (global or
    per-VLAN) router port list in br_multicast_port_ctx_deinit(). The
    function is invoked during port deletion with the per-port multicast
    context and during VLAN deletion with the per-{port, VLAN} multicast
    context.
    
    Note that deleting the multicast router timer is not enough as it only
    takes care of the temporary multicast router states (1 or 3) and not the
    permanent one (2).
    
    [1]
    BUG: KASAN: slab-out-of-bounds in br_multicast_add_router.part.0+0x3f1/0x560
    Write of size 8 at addr ffff888004a67328 by task ip/384
    [...]
    Call Trace:
     <TASK>
     dump_stack_lvl+0x6f/0xa0
     print_address_description.constprop.0+0x6f/0x350
     print_report+0x108/0x205
     kasan_report+0xdf/0x110
     br_multicast_add_router.part.0+0x3f1/0x560
     br_multicast_set_port_router+0x74e/0xac0
     br_setport+0xa55/0x1870
     br_port_slave_changelink+0x95/0x120
     __rtnl_newlink+0x5e8/0xa40
     rtnl_newlink+0x627/0xb00
     rtnetlink_rcv_msg+0x6fb/0xb70
     netlink_rcv_skb+0x11f/0x350
     netlink_unicast+0x426/0x710
     netlink_sendmsg+0x75a/0xc20
     __sock_sendmsg+0xc1/0x150
     ____sys_sendmsg+0x5aa/0x7b0
     ___sys_sendmsg+0xfc/0x180
     __sys_sendmsg+0x124/0x1c0
     do_syscall_64+0xbb/0x360
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    [2]
    BUG: KASAN: slab-use-after-free in br_multicast_add_router.part.0+0x378/0x560
    Read of size 8 at addr ffff888009f00840 by task bridge/391
    [...]
    Call Trace:
     <TASK>
     dump_stack_lvl+0x6f/0xa0
     print_address_description.constprop.0+0x6f/0x350
     print_report+0x108/0x205
     kasan_report+0xdf/0x110
     br_multicast_add_router.part.0+0x378/0x560
     br_multicast_set_port_router+0x6f9/0xac0
     br_vlan_process_options+0x8b6/0x1430
     br_vlan_rtm_process_one+0x605/0xa30
     br_vlan_rtm_process+0x396/0x4c0
     rtnetlink_rcv_msg+0x2f7/0xb70
     netlink_rcv_skb+0x11f/0x350
     netlink_unicast+0x426/0x710
     netlink_sendmsg+0x75a/0xc20
     __sock_sendmsg+0xc1/0x150
     ____sys_sendmsg+0x5aa/0x7b0
     ___sys_sendmsg+0xfc/0x180
     __sys_sendmsg+0x124/0x1c0
     do_syscall_64+0xbb/0x360
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    Fixes: 2796d846d74a ("net: bridge: vlan: convert mcast router global option to per-vlan entry")
    Fixes: 4b30ae9adb04 ("net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/T/
    Signed-off-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
btrfs: factor out check_removing_space_info() from btrfs_free_block_groups() [+ + +]
Author: Naohiro Aota <[email protected]>
Date:   Wed Apr 23 11:43:45 2025 +0900

    btrfs: factor out check_removing_space_info() from btrfs_free_block_groups()
    
    [ Upstream commit 1cfdbe0d53b27b4b4a4f4cf2a4e430bc65ba2ba5 ]
    
    Factor out check_removing_space_info() from btrfs_free_block_groups(). It
    sanity checks a to-be-removed space_info. There is no functional change.
    
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Naohiro Aota <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Stable-dep-of: a11224a016d6 ("btrfs: fix memory leaks in create_space_info() error paths")
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: factor out init_space_info() from create_space_info() [+ + +]
Author: Naohiro Aota <[email protected]>
Date:   Wed Apr 23 11:43:43 2025 +0900

    btrfs: factor out init_space_info() from create_space_info()
    
    [ Upstream commit ac5578fef380e68e539a2238ba63dd978a450ef2 ]
    
    Factor out initialization of the space_info struct, which is used in a
    later patch. There is no functional change.
    
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Naohiro Aota <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Stable-dep-of: a11224a016d6 ("btrfs: fix memory leaks in create_space_info() error paths")
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: fix deadlock in wait_current_trans() due to ignored transaction type [+ + +]
Author: Robbie Ko <[email protected]>
Date:   Thu Dec 11 13:30:33 2025 +0800

    btrfs: fix deadlock in wait_current_trans() due to ignored transaction type
    
    commit 5037b342825df7094a4906d1e2a9674baab50cb2 upstream.
    
    When wait_current_trans() is called during start_transaction(), it
    currently waits for a blocked transaction without considering whether
    the given transaction type actually needs to wait for that particular
    transaction state. The btrfs_blocked_trans_types[] array already defines
    which transaction types should wait for which transaction states, but
    this check was missing in wait_current_trans().
    
    This can lead to a deadlock scenario involving two transactions and
    pending ordered extents:
    
      1. Transaction A is in TRANS_STATE_COMMIT_DOING state
    
      2. A worker processing an ordered extent calls start_transaction()
         with TRANS_JOIN
    
      3. join_transaction() returns -EBUSY because Transaction A is in
         TRANS_STATE_COMMIT_DOING
    
      4. Transaction A moves to TRANS_STATE_UNBLOCKED and completes
    
      5. A new Transaction B is created (TRANS_STATE_RUNNING)
    
      6. The ordered extent from step 2 is added to Transaction B's
         pending ordered extents
    
      7. Transaction B immediately starts commit by another task and
         enters TRANS_STATE_COMMIT_START
    
      8. The worker finally reaches wait_current_trans(), sees Transaction B
         in TRANS_STATE_COMMIT_START (a blocked state), and waits
         unconditionally
    
      9. However, TRANS_JOIN should NOT wait for TRANS_STATE_COMMIT_START
         according to btrfs_blocked_trans_types[]
    
      10. Transaction B is waiting for pending ordered extents to complete
    
      11. Deadlock: Transaction B waits for ordered extent, ordered extent
          waits for Transaction B
    
    This can be illustrated by the following call stacks:
      CPU0                              CPU1
                                        btrfs_finish_ordered_io()
                                          start_transaction(TRANS_JOIN)
                                            join_transaction()
                                              # -EBUSY (Transaction A is
                                              # TRANS_STATE_COMMIT_DOING)
      # Transaction A completes
      # Transaction B created
      # ordered extent added to
      # Transaction B's pending list
      btrfs_commit_transaction()
        # Transaction B enters
        # TRANS_STATE_COMMIT_START
        # waiting for pending ordered
        # extents
                                            wait_current_trans()
                                              # waits for Transaction B
                                              # (should not wait!)
    
    Task bstore_kv_sync in btrfs_commit_transaction waiting for ordered
    extents:
    
      __schedule+0x2e7/0x8a0
      schedule+0x64/0xe0
      btrfs_commit_transaction+0xbf7/0xda0 [btrfs]
      btrfs_sync_file+0x342/0x4d0 [btrfs]
      __x64_sys_fdatasync+0x4b/0x80
      do_syscall_64+0x33/0x40
      entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Task kworker in wait_current_trans waiting for transaction commit:
    
      Workqueue: btrfs-syno_nocow btrfs_work_helper [btrfs]
      __schedule+0x2e7/0x8a0
      schedule+0x64/0xe0
      wait_current_trans+0xb0/0x110 [btrfs]
      start_transaction+0x346/0x5b0 [btrfs]
      btrfs_finish_ordered_io.isra.0+0x49b/0x9c0 [btrfs]
      btrfs_work_helper+0xe8/0x350 [btrfs]
      process_one_work+0x1d3/0x3c0
      worker_thread+0x4d/0x3e0
      kthread+0x12d/0x150
      ret_from_fork+0x1f/0x30
    
    Fix this by passing the transaction type to wait_current_trans() and
    checking btrfs_blocked_trans_types[cur_trans->state] against the given
    type before deciding to wait. This ensures that transaction types which
    are allowed to join during certain blocked states will not unnecessarily
    wait and cause deadlocks.
    
    Reviewed-by: Filipe Manana <[email protected]>
    Signed-off-by: Robbie Ko <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Cc: Motiejus Jakštys <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

btrfs: fix memory leaks in create_space_info() error paths [+ + +]
Author: Jiasheng Jiang <[email protected]>
Date:   Sun Jan 11 19:20:37 2026 +0000

    btrfs: fix memory leaks in create_space_info() error paths
    
    [ Upstream commit a11224a016d6d1d46a4d9b6573244448a80d4d7f ]
    
    In create_space_info(), the 'space_info' object is allocated at the
    beginning of the function. However, there are two error paths where the
    function returns an error code without freeing the allocated memory:
    
    1. When create_space_info_sub_group() fails in zoned mode.
    2. When btrfs_sysfs_add_space_info_type() fails.
    
    In both cases, 'space_info' has not yet been added to the
    fs_info->space_info list, resulting in a memory leak. Fix this by
    adding an error handling label to kfree(space_info) before returning.
    
    Fixes: 2be12ef79fe9 ("btrfs: Separate space_info create/update")
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: fix missing fields in superblock backup with BLOCK_GROUP_TREE [+ + +]
Author: Mark Harmstone <[email protected]>
Date:   Tue Jan 13 18:37:56 2026 +0000

    btrfs: fix missing fields in superblock backup with BLOCK_GROUP_TREE
    
    [ Upstream commit 1d8f69f453c2e8a2d99b158e58e02ed65031fa6d ]
    
    When the BLOCK_GROUP_TREE compat_ro flag is set, the extent root and
    csum root fields are getting missed.
    
    This is because EXTENT_TREE_V2 treated these differently, and when
    they were split off this special-casing was mistakenly assigned to
    BGT rather than the rump EXTENT_TREE_V2. There's no reason why the
    existence of the block group tree should mean that we don't record the
    details of the last commit's extent root and csum root.
    
    Fix the code in backup_super_roots() so that the correct check gets
    made.
    
    Fixes: 1c56ab991903 ("btrfs: separate BLOCK_GROUP_TREE compat RO flag from EXTENT_TREE_V2")
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Mark Harmstone <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: introduce btrfs_space_info sub-group [+ + +]
Author: Naohiro Aota <[email protected]>
Date:   Wed Apr 23 11:43:48 2025 +0900

    btrfs: introduce btrfs_space_info sub-group
    
    [ Upstream commit f92ee31e031c7819126d2febdda0c3e91f5d2eb9 ]
    
    Current code assumes we have only one space_info for each block group type
    (DATA, METADATA, and SYSTEM). We sometime need multiple space infos to
    manage special block groups.
    
    One example is handling the data relocation block group for the zoned mode.
    That block group is dedicated for writing relocated data and we cannot
    allocate any regular extent from that block group, which is implemented in
    the zoned extent allocator. This block group still belongs to the normal
    data space_info. So, when all the normal data block groups are full and
    there is some free space in the dedicated block group, the space_info
    looks to have some free space, while it cannot allocate normal extent
    anymore. That results in a strange ENOSPC error. We need to have a
    space_info for the relocation data block group to represent the situation
    properly.
    
    Adds a basic infrastructure for having a "sub-group" of a space_info:
    creation and removing. A sub-group space_info belongs to one of the
    primary space_infos and has the same flags as its parent.
    
    This commit first introduces the relocation data sub-space_info, and the
    next commit will introduce tree-log sub-space_info. In the future, it could
    be useful to implement tiered storage for btrfs e.g. by implementing a
    sub-group space_info for block groups resides on a fast storage.
    
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Naohiro Aota <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Stable-dep-of: a11224a016d6 ("btrfs: fix memory leaks in create_space_info() error paths")
    Signed-off-by: Sasha Levin <[email protected]>

btrfs: send: check for inline extents in range_is_hole_in_parent() [+ + +]
Author: Qu Wenruo <[email protected]>
Date:   Tue Jan 6 20:26:40 2026 +1030

    btrfs: send: check for inline extents in range_is_hole_in_parent()
    
    [ Upstream commit 08b096c1372cd69627f4f559fb47c9fb67a52b39 ]
    
    Before accessing the disk_bytenr field of a file extent item we need
    to check if we are dealing with an inline extent.
    This is because for inline extents their data starts at the offset of
    the disk_bytenr field. So accessing the disk_bytenr
    means we are accessing inline data or in case the inline data is less
    than 8 bytes we can actually cause an invalid
    memory access if this inline extent item is the first item in the leaf
    or access metadata from other items.
    
    Fixes: 82bfb2e7b645 ("Btrfs: incremental send, fix unnecessary hole writes for sparse files")
    Reviewed-by: Filipe Manana <[email protected]>
    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: store fs_info in space_info [+ + +]
Author: Boris Burkov <[email protected]>
Date:   Fri Feb 2 11:52:57 2024 -0800

    btrfs: store fs_info in space_info
    
    [ Upstream commit 42f620aec182f62ee72e3fce41cb3353951b3508 ]
    
    This is handy when computing space_info dynamic reclaim thresholds where
    we do not have access to a block group. We could add it to the various
    functions as a parameter, but it seems reasonable for space_info to have
    an fs_info pointer.
    
    Reviewed-by: Josef Bacik <[email protected]>
    Reviewed-by: Johannes Thumshirn <[email protected]>
    Signed-off-by: Boris Burkov <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Stable-dep-of: a11224a016d6 ("btrfs: fix memory leaks in create_space_info() error paths")
    Signed-off-by: Sasha Levin <[email protected]>

 
can: ctucanfd: fix SSP_SRC in cases when bit-rate is higher than 1 MBit. [+ + +]
Author: Ondrej Ille <[email protected]>
Date:   Mon Jan 5 12:16:20 2026 +0100

    can: ctucanfd: fix SSP_SRC in cases when bit-rate is higher than 1 MBit.
    
    commit e707c591a139d1bfa4ddc83036fc820ca006a140 upstream.
    
    The Secondary Sample Point Source field has been
    set to an incorrect value by some mistake in the
    past
    
      0b01 - SSP_SRC_NO_SSP - SSP is not used.
    
    for data bitrates above 1 MBit/s. The correct/default
    value already used for lower bitrates is
    
      0b00 - SSP_SRC_MEAS_N_OFFSET - SSP position = TRV_DELAY
             (Measured Transmitter delay) + SSP_OFFSET.
    
    The related configuration register structure is described
    in section 3.1.46 SSP_CFG of the CTU CAN FD
    IP CORE Datasheet.
    
    The analysis leading to the proper configuration
    is described in section 2.8.3 Secondary sampling point
    of the datasheet.
    
    The change has been tested on AMD/Xilinx Zynq
    with the next CTU CN FD IP core versions:
    
     - 2.6 aka master in the "integration with Zynq-7000 system" test
       6.12.43-rt12+ #1 SMP PREEMPT_RT kernel with CTU CAN FD git
       driver (change already included in the driver repo)
     - older 2.5 snapshot with mainline kernels with this patch
       applied locally in the multiple CAN latency tester nightly runs
       6.18.0-rc4-rt3-dut #1 SMP PREEMPT_RT
       6.19.0-rc3-dut
    
    The logs, the datasheet and sources are available at
    
     https://canbus.pages.fel.cvut.cz/
    
    Signed-off-by: Ondrej Ille <[email protected]>
    Signed-off-by: Pavel Pisa <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Fixes: 2dcb8e8782d8 ("can: ctucanfd: add support for CTU CAN FD open-source IP core - bus independent part.")
    Cc: [email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: ems_usb: ems_usb_read_bulk_callback(): fix URB memory leak [+ + +]
Author: Marc Kleine-Budde <[email protected]>
Date:   Sat Jan 10 12:52:27 2026 +0100

    can: ems_usb: ems_usb_read_bulk_callback(): fix URB memory leak
    
    commit 0ce73a0eb5a27070957b67fd74059b6da89cc516 upstream.
    
    Fix similar memory leak as in commit 7352e1d5932a ("can: gs_usb:
    gs_usb_receive_bulk_callback(): fix URB memory leak").
    
    In ems_usb_open(), the URBs for USB-in transfers are allocated, added to
    the dev->rx_submitted anchor and submitted. In the complete callback
    ems_usb_read_bulk_callback(), the URBs are processed and resubmitted. In
    ems_usb_close() the URBs are freed by calling
    usb_kill_anchored_urbs(&dev->rx_submitted).
    
    However, this does not take into account that the USB framework unanchors
    the URB before the complete function is called. This means that once an
    in-URB has been completed, it is no longer anchored and is ultimately not
    released in ems_usb_close().
    
    Fix the memory leak by anchoring the URB in the
    ems_usb_read_bulk_callback() to the dev->rx_submitted anchor.
    
    Fixes: 702171adeed3 ("ems_usb: Added support for EMS CPC-USB/ARM7 CAN/USB interface")
    Cc: [email protected]
    Link: https://patch.msgid.link/20260116-can_usb-fix-memory-leak-v2-1-4b8cb2915571@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: esd_usb: esd_usb_read_bulk_callback(): fix URB memory leak [+ + +]
Author: Marc Kleine-Budde <[email protected]>
Date:   Sat Jan 10 12:52:27 2026 +0100

    can: esd_usb: esd_usb_read_bulk_callback(): fix URB memory leak
    
    commit 5a4391bdc6c8357242f62f22069c865b792406b3 upstream.
    
    Fix similar memory leak as in commit 7352e1d5932a ("can: gs_usb:
    gs_usb_receive_bulk_callback(): fix URB memory leak").
    
    In esd_usb_open(), the URBs for USB-in transfers are allocated, added to
    the dev->rx_submitted anchor and submitted. In the complete callback
    esd_usb_read_bulk_callback(), the URBs are processed and resubmitted. In
    esd_usb_close() the URBs are freed by calling
    usb_kill_anchored_urbs(&dev->rx_submitted).
    
    However, this does not take into account that the USB framework unanchors
    the URB before the complete function is called. This means that once an
    in-URB has been completed, it is no longer anchored and is ultimately not
    released in esd_usb_close().
    
    Fix the memory leak by anchoring the URB in the
    esd_usb_read_bulk_callback() to the dev->rx_submitted anchor.
    
    Fixes: 96d8e90382dc ("can: Add driver for esd CAN-USB/2 device")
    Cc: [email protected]
    Link: https://patch.msgid.link/20260116-can_usb-fix-memory-leak-v2-2-4b8cb2915571@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: etas_es58x: allow partial RX URB allocation to succeed [+ + +]
Author: Szymon Wilczek <[email protected]>
Date:   Tue Dec 23 02:17:32 2025 +0100

    can: etas_es58x: allow partial RX URB allocation to succeed
    
    [ Upstream commit b1979778e98569c1e78c2c7f16bb24d76541ab00 ]
    
    When es58x_alloc_rx_urbs() fails to allocate the requested number of
    URBs but succeeds in allocating some, it returns an error code.
    This causes es58x_open() to return early, skipping the cleanup label
    'free_urbs', which leads to the anchored URBs being leaked.
    
    As pointed out by maintainer Vincent Mailhol, the driver is designed
    to handle partial URB allocation gracefully. Therefore, partial
    allocation should not be treated as a fatal error.
    
    Modify es58x_alloc_rx_urbs() to return 0 if at least one URB has been
    allocated, restoring the intended behavior and preventing the leak
    in es58x_open().
    
    Fixes: 8537257874e9 ("can: etas_es58x: add core support for ETAS ES58X CAN USB interfaces")
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=e8cb6691a7cf68256cb8
    Signed-off-by: Szymon Wilczek <[email protected]>
    Reviewed-by: Vincent Mailhol <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: gs_usb: gs_usb_receive_bulk_callback(): fix URB memory leak [+ + +]
Author: Marc Kleine-Budde <[email protected]>
Date:   Tue Dec 23 21:21:39 2025 +0100

    can: gs_usb: gs_usb_receive_bulk_callback(): fix URB memory leak
    
    commit 7352e1d5932a0e777e39fa4b619801191f57e603 upstream.
    
    In gs_can_open(), the URBs for USB-in transfers are allocated, added to the
    parent->rx_submitted anchor and submitted. In the complete callback
    gs_usb_receive_bulk_callback(), the URB is processed and resubmitted. In
    gs_can_close() the URBs are freed by calling
    usb_kill_anchored_urbs(parent->rx_submitted).
    
    However, this does not take into account that the USB framework unanchors
    the URB before the complete function is called. This means that once an
    in-URB has been completed, it is no longer anchored and is ultimately not
    released in gs_can_close().
    
    Fix the memory leak by anchoring the URB in the
    gs_usb_receive_bulk_callback() to the parent->rx_submitted anchor.
    
    Fixes: d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices")
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: gs_usb: gs_usb_receive_bulk_callback(): unanchor URL on usb_submit_urb() error [+ + +]
Author: Marc Kleine-Budde <[email protected]>
Date:   Fri Jan 16 14:10:10 2026 +0100

    can: gs_usb: gs_usb_receive_bulk_callback(): unanchor URL on usb_submit_urb() error
    
    [ Upstream commit 79a6d1bfe1148bc921b8d7f3371a7fbce44e30f7 ]
    
    In commit 7352e1d5932a ("can: gs_usb: gs_usb_receive_bulk_callback(): fix
    URB memory leak"), the URB was re-anchored before usb_submit_urb() in
    gs_usb_receive_bulk_callback() to prevent a leak of this URB during
    cleanup.
    
    However, this patch did not take into account that usb_submit_urb() could
    fail. The URB remains anchored and
    usb_kill_anchored_urbs(&parent->rx_submitted) in gs_can_close() loops
    infinitely since the anchor list never becomes empty.
    
    To fix the bug, unanchor the URB when an usb_submit_urb() error occurs,
    also print an info message.
    
    Fixes: 7352e1d5932a ("can: gs_usb: gs_usb_receive_bulk_callback(): fix URB memory leak")
    Reported-by: Jakub Kicinski <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

can: kvaser_usb: kvaser_usb_read_bulk_callback(): fix URB memory leak [+ + +]
Author: Marc Kleine-Budde <[email protected]>
Date:   Sat Jan 10 12:52:27 2026 +0100

    can: kvaser_usb: kvaser_usb_read_bulk_callback(): fix URB memory leak
    
    commit 248e8e1a125fa875158df521b30f2cc7e27eeeaa upstream.
    
    Fix similar memory leak as in commit 7352e1d5932a ("can: gs_usb:
    gs_usb_receive_bulk_callback(): fix URB memory leak").
    
    In kvaser_usb_set_{,data_}bittiming() -> kvaser_usb_setup_rx_urbs(), the
    URBs for USB-in transfers are allocated, added to the dev->rx_submitted
    anchor and submitted. In the complete callback
    kvaser_usb_read_bulk_callback(), the URBs are processed and resubmitted. In
    kvaser_usb_remove_interfaces() the URBs are freed by calling
    usb_kill_anchored_urbs(&dev->rx_submitted).
    
    However, this does not take into account that the USB framework unanchors
    the URB before the complete function is called. This means that once an
    in-URB has been completed, it is no longer anchored and is ultimately not
    released in usb_kill_anchored_urbs().
    
    Fix the memory leak by anchoring the URB in the
    kvaser_usb_read_bulk_callback() to the dev->rx_submitted anchor.
    
    Fixes: 080f40a6fa28 ("can: kvaser_usb: Add support for Kvaser CAN/USB devices")
    Cc: [email protected]
    Link: https://patch.msgid.link/20260116-can_usb-fix-memory-leak-v2-3-4b8cb2915571@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: mcba_usb: mcba_usb_read_bulk_callback(): fix URB memory leak [+ + +]
Author: Marc Kleine-Budde <[email protected]>
Date:   Sat Jan 10 12:52:27 2026 +0100

    can: mcba_usb: mcba_usb_read_bulk_callback(): fix URB memory leak
    
    commit 710a7529fb13c5a470258ff5508ed3c498d54729 upstream.
    
    Fix similar memory leak as in commit 7352e1d5932a ("can: gs_usb:
    gs_usb_receive_bulk_callback(): fix URB memory leak").
    
    In mcba_usb_probe() -> mcba_usb_start(), the URBs for USB-in transfers are
    allocated, added to the priv->rx_submitted anchor and submitted. In the
    complete callback mcba_usb_read_bulk_callback(), the URBs are processed and
    resubmitted. In mcba_usb_close() -> mcba_urb_unlink() the URBs are freed by
    calling usb_kill_anchored_urbs(&priv->rx_submitted).
    
    However, this does not take into account that the USB framework unanchors
    the URB before the complete function is called. This means that once an
    in-URB has been completed, it is no longer anchored and is ultimately not
    released in usb_kill_anchored_urbs().
    
    Fix the memory leak by anchoring the URB in the
    mcba_usb_read_bulk_callback()to the priv->rx_submitted anchor.
    
    Fixes: 51f3baad7de9 ("can: mcba_usb: Add support for Microchip CAN BUS Analyzer")
    Cc: [email protected]
    Link: https://patch.msgid.link/20260116-can_usb-fix-memory-leak-v2-4-4b8cb2915571@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

can: usb_8dev: usb_8dev_read_bulk_callback(): fix URB memory leak [+ + +]
Author: Marc Kleine-Budde <[email protected]>
Date:   Sat Jan 10 12:52:27 2026 +0100

    can: usb_8dev: usb_8dev_read_bulk_callback(): fix URB memory leak
    
    commit f7a980b3b8f80fe367f679da376cf76e800f9480 upstream.
    
    Fix similar memory leak as in commit 7352e1d5932a ("can: gs_usb:
    gs_usb_receive_bulk_callback(): fix URB memory leak").
    
    In usb_8dev_open() -> usb_8dev_start(), the URBs for USB-in transfers are
    allocated, added to the priv->rx_submitted anchor and submitted. In the
    complete callback usb_8dev_read_bulk_callback(), the URBs are processed and
    resubmitted. In usb_8dev_close() -> unlink_all_urbs() the URBs are freed by
    calling usb_kill_anchored_urbs(&priv->rx_submitted).
    
    However, this does not take into account that the USB framework unanchors
    the URB before the complete function is called. This means that once an
    in-URB has been completed, it is no longer anchored and is ultimately not
    released in usb_kill_anchored_urbs().
    
    Fix the memory leak by anchoring the URB in the
    usb_8dev_read_bulk_callback() to the priv->rx_submitted anchor.
    
    Fixes: 0024d8ad1639 ("can: usb_8dev: Add support for USB2CAN interface from 8 devices")
    Cc: [email protected]
    Link: https://patch.msgid.link/20260116-can_usb-fix-memory-leak-v2-5-4b8cb2915571@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
comedi: dmm32at: serialize use of paged registers [+ + +]
Author: Ian Abbott <[email protected]>
Date:   Mon Jan 12 16:28:35 2026 +0000

    comedi: dmm32at: serialize use of paged registers
    
    commit e03b29b55f2b7c345a919a6ee36633b06bf3fb56 upstream.
    
    Some of the hardware registers of the DMM-32-AT board are multiplexed,
    using the least significant two bits of the Miscellaneous Control
    register to select the function of registers at offsets 12 to 15:
    
     00 => 8254 timer/counter registers are accessible
     01 => 8255 digital I/O registers are accessible
     10 => Reserved
     11 => Calibration registers are accessible
    
    The interrupt service routine (`dmm32at_isr()`) clobbers the bottom two
    bits of the register with value 00, which would interfere with access to
    the 8255 registers by the `dm32at_8255_io()` function (used for Comedi
    instruction handling on the digital I/O subdevice).
    
    Make use of the generic Comedi device spin-lock `dev->spinlock` (which
    is otherwise unused by this driver) to serialize access to the
    miscellaneous control register and paged registers.
    
    Fixes: 3c501880ac44 ("Staging: comedi: add dmm32at driver")
    Cc: [email protected]
    Signed-off-by: Ian Abbott <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

comedi: Fix getting range information for subdevices 16 to 255 [+ + +]
Author: Ian Abbott <[email protected]>
Date:   Wed Dec 3 16:24:38 2025 +0000

    comedi: Fix getting range information for subdevices 16 to 255
    
    commit 10d28cffb3f6ec7ad67f0a4cd32c2afa92909452 upstream.
    
    The `COMEDI_RANGEINFO` ioctl does not work properly for subdevice
    indices above 15.  Currently, the only in-tree COMEDI drivers that
    support more than 16 subdevices are the "8255" driver and the
    "comedi_bond" driver.  Making the ioctl work for subdevice indices up to
    255 is achievable.  It needs minor changes to the handling of the
    `COMEDI_RANGEINFO` and `COMEDI_CHANINFO` ioctls that should be mostly
    harmless to user-space, apart from making them less broken.  Details
    follow...
    
    The `COMEDI_RANGEINFO` ioctl command gets the list of supported ranges
    (usually with units of volts or milliamps) for a COMEDI subdevice or
    channel.  (Only some subdevices have per-channel range tables, indicated
    by the `SDF_RANGETYPE` flag in the subdevice information.)  It uses a
    `range_type` value and a user-space pointer, both supplied by
    user-space, but the `range_type` value should match what was obtained
    using the `COMEDI_CHANINFO` ioctl (if the subdevice has per-channel
    range tables)  or `COMEDI_SUBDINFO` ioctl (if the subdevice uses a
    single range table for all channels).  Bits 15 to 0 of the `range_type`
    value contain the length of the range table, which is the only part that
    user-space should care about (so it can use a suitably sized buffer to
    fetch the range table).  Bits 23 to 16 store the channel index, which is
    assumed to be no more than 255 if the subdevice has per-channel range
    tables, and is set to 0 if the subdevice has a single range table.  For
    `range_type` values produced by the `COMEDI_SUBDINFO` ioctl, bits 31 to
    24 contain the subdevice index, which is assumed to be no more than 255.
    But for `range_type` values produced by the `COMEDI_CHANINFO` ioctl,
    bits 27 to 24 contain the subdevice index, which is assumed to be no
    more than 15, and bits 31 to 28 contain the COMEDI device's minor device
    number for some unknown reason lost in the mists of time.  The
    `COMEDI_RANGEINFO` ioctl extract the length from bits 15 to 0 of the
    user-supplied `range_type` value, extracts the channel index from bits
    23 to 16 (only used if the subdevice has per-channel range tables),
    extracts the subdevice index from bits 27 to 24, and ignores bits 31 to
    28.  So for subdevice indices 16 to 255, the `COMEDI_SUBDINFO` or
    `COMEDI_CHANINFO` ioctl will report a `range_type` value that doesn't
    work with the `COMEDI_RANGEINFO` ioctl.  It will either get the range
    table for the subdevice index modulo 16, or will fail with `-EINVAL`.
    
    To fix this, always use bits 31 to 24 of the `range_type` value to hold
    the subdevice index (assumed to be no more than 255).  This affects the
    `COMEDI_CHANINFO` and `COMEDI_RANGEINFO` ioctls.  There should not be
    anything in user-space that depends on the old, broken usage, although
    it may now see different values in bits 31 to 28 of the `range_type`
    values reported by the `COMEDI_CHANINFO` ioctl for subdevices that have
    per-channel subdevices.  User-space should not be trying to decode bits
    31 to 16 of the `range_type` values anyway.
    
    Fixes: ed9eccbe8970 ("Staging: add comedi core")
    Cc: [email protected] #5.17+
    Signed-off-by: Ian Abbott <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec [+ + +]
Author: Taeyang Lee <[email protected]>
Date:   Fri Jan 16 16:03:58 2026 +0900

    crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec
    
    [ Upstream commit 2397e9264676be7794f8f7f1e9763d90bd3c7335 ]
    
    authencesn assumes an ESP/ESN-formatted AAD. When assoclen is shorter than
    the minimum expected length, crypto_authenc_esn_decrypt() can advance past
    the end of the destination scatterlist and trigger a NULL pointer dereference
    in scatterwalk_map_and_copy(), leading to a kernel panic (DoS).
    
    Add a minimum AAD length check to fail fast on invalid inputs.
    
    Fixes: 104880a6b470 ("crypto: authencesn - Convert to new AEAD interface")
    Reported-By: Taeyang Lee <[email protected]>
    Signed-off-by: Taeyang Lee <[email protected]>
    Signed-off-by: Herbert Xu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
dmaengine: apple-admac: Add "apple,t8103-admac" compatible [+ + +]
Author: Janne Grunau <[email protected]>
Date:   Wed Dec 31 13:34:59 2025 +0100

    dmaengine: apple-admac: Add "apple,t8103-admac" compatible
    
    commit 76cba1e60b69c9cd53b9127d017a7dc5945455b1 upstream.
    
    After discussion with the devicetree maintainers we agreed to not extend
    lists with the generic compatible "apple,admac" anymore [1]. Use
    "apple,t8103-admac" as base compatible as it is the SoC the driver and
    bindings were written for.
    
    [1]: https://lore.kernel.org/asahi/[email protected]/
    
    Fixes: b127315d9a78 ("dmaengine: apple-admac: Add Apple ADMAC driver")
    Cc: [email protected]
    Reviewed-by: Neal Gompa <[email protected]>
    Signed-off-by: Janne Grunau <[email protected]>
    Link: https://patch.msgid.link/20251231-apple-admac-t8103-base-compat-v1-1-ec24a3708f76@jannau.net
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: at_hdmac: fix device leak on of_dma_xlate() [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Nov 17 17:12:43 2025 +0100

    dmaengine: at_hdmac: fix device leak on of_dma_xlate()
    
    commit b9074b2d7a230b6e28caa23165e9d8bc0677d333 upstream.
    
    Make sure to drop the reference taken when looking up the DMA platform
    device during of_dma_xlate() when releasing channel resources.
    
    Note that commit 3832b78b3ec2 ("dmaengine: at_hdmac: add missing
    put_device() call in at_dma_xlate()") fixed the leak in a couple of
    error paths but the reference is still leaking on successful allocation.
    
    Fixes: bbe89c8e3d59 ("at_hdmac: move to generic DMA binding")
    Fixes: 3832b78b3ec2 ("dmaengine: at_hdmac: add missing put_device() call in at_dma_xlate()")
    Cc: [email protected]      # 3.10: 3832b78b3ec2
    Cc: Yu Kuai <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: bcm-sba-raid: fix device leak on probe [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Nov 17 17:12:45 2025 +0100

    dmaengine: bcm-sba-raid: fix device leak on probe
    
    commit 7c3a46ebf15a9796b763a54272407fdbf945bed8 upstream.
    
    Make sure to drop the reference taken when looking up the mailbox device
    during probe on probe failures and on driver unbind.
    
    Fixes: 743e1c8ffe4e ("dmaengine: Add Broadcom SBA RAID driver")
    Cc: [email protected]      # 4.13
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: dw: dmamux: fix OF node leak on route allocation failure [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Nov 17 17:12:47 2025 +0100

    dmaengine: dw: dmamux: fix OF node leak on route allocation failure
    
    commit ec25e60f9f95464aa11411db31d0906b3fb7b9f2 upstream.
    
    Make sure to drop the reference taken to the DMA master OF node also on
    late route allocation failures.
    
    Fixes: 134d9c52fca2 ("dmaengine: dw: dmamux: Introduce RZN1 DMA router support")
    Cc: [email protected]      # 5.19
    Cc: Miquel Raynal <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Miquel Raynal <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: idxd: fix device leaks on compat bind and unbind [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Nov 17 17:12:48 2025 +0100

    dmaengine: idxd: fix device leaks on compat bind and unbind
    
    commit 799900f01792cf8b525a44764f065f83fcafd468 upstream.
    
    Make sure to drop the reference taken when looking up the idxd device as
    part of the compat bind and unbind sysfs interface.
    
    Fixes: 6e7f3ee97bbe ("dmaengine: idxd: move dsa_drv support to compatible mode")
    Cc: [email protected]      # 5.15
    Cc: Dave Jiang <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: lpc18xx-dmamux: fix device leak on route allocation [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Nov 17 17:12:49 2025 +0100

    dmaengine: lpc18xx-dmamux: fix device leak on route allocation
    
    commit d4d63059dee7e7cae0c4d9a532ed558bc90efb55 upstream.
    
    Make sure to drop the reference taken when looking up the DMA mux
    platform device during route allocation.
    
    Note that holding a reference to a device does not prevent its driver
    data from going away so there is no point in keeping the reference.
    
    Fixes: e5f4ae84be74 ("dmaengine: add driver for lpc18xx dmamux")
    Cc: [email protected]      # 4.3
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Vladimir Zapolskiy <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: omap-dma: fix dma_pool resource leak in error paths [+ + +]
Author: Haotian Zhang <[email protected]>
Date:   Mon Nov 3 15:30:18 2025 +0800

    dmaengine: omap-dma: fix dma_pool resource leak in error paths
    
    [ Upstream commit 2e1136acf8a8887c29f52e35a77b537309af321f ]
    
    The dma_pool created by dma_pool_create() is not destroyed when
    dma_async_device_register() or of_dma_controller_register() fails,
    causing a resource leak in the probe error paths.
    
    Add dma_pool_destroy() in both error paths to properly release the
    allocated dma_pool resource.
    
    Fixes: 7bedaa553760 ("dmaengine: add OMAP DMA engine driver")
    Signed-off-by: Haotian Zhang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: qcom: gpi: Fix memory leak in gpi_peripheral_config() [+ + +]
Author: Miaoqian Lin <[email protected]>
Date:   Wed Oct 29 20:34:19 2025 +0800

    dmaengine: qcom: gpi: Fix memory leak in gpi_peripheral_config()
    
    commit 3f747004bbd641131d9396d87b5d2d3d1e182728 upstream.
    
    Fix a memory leak in gpi_peripheral_config() where the original memory
    pointed to by gchan->config could be lost if krealloc() fails.
    
    The issue occurs when:
    1. gchan->config points to previously allocated memory
    2. krealloc() fails and returns NULL
    3. The function directly assigns NULL to gchan->config, losing the
       reference to the original memory
    4. The original memory becomes unreachable and cannot be freed
    
    Fix this by using a temporary variable to hold the krealloc() result
    and only updating gchan->config when the allocation succeeds.
    
    Found via static analysis and code review.
    
    Fixes: 5d0c3533a19f ("dmaengine: qcom: Add GPI dma driver")
    Cc: [email protected]
    Signed-off-by: Miaoqian Lin <[email protected]>
    Reviewed-by: Bjorn Andersson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: sh: rz-dmac: Fix rz_dmac_terminate_all() [+ + +]
Author: Biju Das <[email protected]>
Date:   Thu Nov 13 19:50:48 2025 +0000

    dmaengine: sh: rz-dmac: Fix rz_dmac_terminate_all()
    
    commit 747213b08a1ab6a76e3e3b3e7a209cc1d402b5d0 upstream.
    
    After audio full duplex testing, playing the recorded file contains a few
    playback frames from the previous time. The rz_dmac_terminate_all() does
    not reset all the hardware descriptors queued previously, leading to the
    wrong descriptor being picked up during the next DMA transfer. Fix the
    above issue by resetting all the descriptor headers for a channel in
    rz_dmac_terminate_all() as rz_dmac_lmdesc_recycle() points to the proper
    descriptor header filled by the rz_dmac_prepare_descs_for_slave_sg().
    
    Cc: [email protected]
    Fixes: 5000d37042a6 ("dmaengine: sh: Add DMAC driver for RZ/G2L SoC")
    Reviewed-by: Geert Uytterhoeven <[email protected]>
    Signed-off-by: Biju Das <[email protected]>
    Reviewed-by: Claudiu Beznea <[email protected]>
    Tested-by: Claudiu Beznea <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: stm32: dmamux: fix device leak on route allocation [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Wed Jan 21 07:15:50 2026 -0500

    dmaengine: stm32: dmamux: fix device leak on route allocation
    
    [ Upstream commit dd6e4943889fb354efa3f700e42739da9bddb6ef ]
    
    Make sure to drop the reference taken when looking up the DMA mux
    platform device during route allocation.
    
    Note that holding a reference to a device does not prevent its driver
    data from going away so there is no point in keeping the reference.
    
    Fixes: df7e762db5f6 ("dmaengine: Add STM32 DMAMUX driver")
    Cc: [email protected]      # 4.15
    Cc: Pierre-Yves MORDRET <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Amelie Delaunay <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: stm32: dmamux: fix OF node leak on route allocation failure [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Wed Jan 21 07:20:47 2026 -0500

    dmaengine: stm32: dmamux: fix OF node leak on route allocation failure
    
    [ Upstream commit b1b590a590af13ded598e70f0b72bc1e515787a1 ]
    
    Make sure to drop the reference taken to the DMA master OF node also on
    late route allocation failures.
    
    Fixes: df7e762db5f6 ("dmaengine: Add STM32 DMAMUX driver")
    Cc: [email protected]      # 4.15
    Cc: Pierre-Yves MORDRET <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Amelie Delaunay <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: tegra-adma: Fix use-after-free [+ + +]
Author: Sheetal <[email protected]>
Date:   Mon Nov 10 19:54:45 2025 +0530

    dmaengine: tegra-adma: Fix use-after-free
    
    [ Upstream commit 2efd07a7c36949e6fa36a69183df24d368bf9e96 ]
    
    A use-after-free bug exists in the Tegra ADMA driver when audio streams
    are terminated, particularly during XRUN conditions. The issue occurs
    when the DMA buffer is freed by tegra_adma_terminate_all() before the
    vchan completion tasklet finishes accessing it.
    
    The race condition follows this sequence:
    
      1. DMA transfer completes, triggering an interrupt that schedules the
         completion tasklet (tasklet has not executed yet)
      2. Audio playback stops, calling tegra_adma_terminate_all() which
         frees the DMA buffer memory via kfree()
      3. The scheduled tasklet finally executes, calling vchan_complete()
         which attempts to access the already-freed memory
    
    Since tasklets can execute at any time after being scheduled, there is
    no guarantee that the buffer will remain valid when vchan_complete()
    runs.
    
    Fix this by properly synchronizing the virtual channel completion:
     - Calling vchan_terminate_vdesc() in tegra_adma_stop() to mark the
       descriptors as terminated instead of freeing the descriptor.
     - Add the callback tegra_adma_synchronize() that calls
       vchan_synchronize() which kills any pending tasklets and frees any
       terminated descriptors.
    
    Crash logs:
    [  337.427523] BUG: KASAN: use-after-free in vchan_complete+0x124/0x3b0
    [  337.427544] Read of size 8 at addr ffff000132055428 by task swapper/0/0
    
    [  337.427562] Call trace:
    [  337.427564]  dump_backtrace+0x0/0x320
    [  337.427571]  show_stack+0x20/0x30
    [  337.427575]  dump_stack_lvl+0x68/0x84
    [  337.427584]  print_address_description.constprop.0+0x74/0x2b8
    [  337.427590]  kasan_report+0x1f4/0x210
    [  337.427598]  __asan_load8+0xa0/0xd0
    [  337.427603]  vchan_complete+0x124/0x3b0
    [  337.427609]  tasklet_action_common.constprop.0+0x190/0x1d0
    [  337.427617]  tasklet_action+0x30/0x40
    [  337.427623]  __do_softirq+0x1a0/0x5c4
    [  337.427628]  irq_exit+0x110/0x140
    [  337.427633]  handle_domain_irq+0xa4/0xe0
    [  337.427640]  gic_handle_irq+0x64/0x160
    [  337.427644]  call_on_irq_stack+0x20/0x4c
    [  337.427649]  do_interrupt_handler+0x7c/0x90
    [  337.427654]  el1_interrupt+0x30/0x80
    [  337.427659]  el1h_64_irq_handler+0x18/0x30
    [  337.427663]  el1h_64_irq+0x7c/0x80
    [  337.427667]  cpuidle_enter_state+0xe4/0x540
    [  337.427674]  cpuidle_enter+0x54/0x80
    [  337.427679]  do_idle+0x2e0/0x380
    [  337.427685]  cpu_startup_entry+0x2c/0x70
    [  337.427690]  rest_init+0x114/0x130
    [  337.427695]  arch_call_rest_init+0x18/0x24
    [  337.427702]  start_kernel+0x380/0x3b4
    [  337.427706]  __primary_switched+0xc0/0xc8
    
    Fixes: f46b195799b5 ("dmaengine: tegra-adma: Add support for Tegra210 ADMA")
    Signed-off-by: Sheetal <[email protected]>
    Acked-by: Thierry Reding <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: ti: dma-crossbar: fix device leak on am335x route allocation [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Nov 17 17:12:56 2025 +0100

    dmaengine: ti: dma-crossbar: fix device leak on am335x route allocation
    
    commit 4fc17b1c6d2e04ad13fd6c21cfbac68043ec03f9 upstream.
    
    Make sure to drop the reference taken when looking up the crossbar
    platform device during am335x route allocation.
    
    Fixes: 42dbdcc6bf96 ("dmaengine: ti-dma-crossbar: Add support for crossbar on AM33xx/AM43xx")
    Cc: [email protected]      # 4.4
    Cc: Peter Ujfalusi <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: ti: dma-crossbar: fix device leak on dra7x route allocation [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Nov 17 17:12:55 2025 +0100

    dmaengine: ti: dma-crossbar: fix device leak on dra7x route allocation
    
    commit dc7e44db01fc2498644e3106db3e62a9883a93d5 upstream.
    
    Make sure to drop the reference taken when looking up the crossbar
    platform device during dra7x route allocation.
    
    Note that commit 615a4bfc426e ("dmaengine: ti: Add missing put_device in
    ti_dra7_xbar_route_allocate") fixed the leak in the error paths but the
    reference is still leaking on successful allocation.
    
    Fixes: a074ae38f859 ("dmaengine: Add driver for TI DMA crossbar on DRA7x")
    Fixes: 615a4bfc426e ("dmaengine: ti: Add missing put_device in ti_dra7_xbar_route_allocate")
    Cc: [email protected]      # 4.2: 615a4bfc426e
    Cc: Peter Ujfalusi <[email protected]>
    Cc: Miaoqian Lin <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: ti: k3-udma: fix device leak on udma lookup [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Nov 17 17:12:58 2025 +0100

    dmaengine: ti: k3-udma: fix device leak on udma lookup
    
    commit 430f7803b69cd5e5694e5dfc884c6628870af36e upstream.
    
    Make sure to drop the reference taken when looking up the UDMA platform
    device.
    
    Note that holding a reference to a platform device does not prevent its
    driver data from going away so there is no point in keeping the
    reference after the lookup helper returns.
    
    Fixes: d70241913413 ("dmaengine: ti: k3-udma: Add glue layer for non DMAengine users")
    Fixes: 1438cde8fe9c ("dmaengine: ti: k3-udma: add missing put_device() call in of_xudma_dev_get()")
    Cc: [email protected]      # 5.6: 1438cde8fe9c
    Cc: Grygorii Strashko <[email protected]>
    Cc: Yu Kuai <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

dmaengine: xilinx: xdma: Fix regmap max_register [+ + +]
Author: Anthony Brandon <[email protected]>
Date:   Mon Oct 13 17:48:49 2025 +0200

    dmaengine: xilinx: xdma: Fix regmap max_register
    
    [ Upstream commit c7d436a6c1a274c1ac28d5fb3b8eb8f03b6d0e10 ]
    
    The max_register field is assigned the size of the register memory
    region instead of the offset of the last register.
    The result is that reading from the regmap via debugfs can cause
    a segmentation fault:
    
    tail /sys/kernel/debug/regmap/xdma.1.auto/registers
    Unable to handle kernel paging request at virtual address ffff800082f70000
    Mem abort info:
      ESR = 0x0000000096000007
      EC = 0x25: DABT (current EL), IL = 32 bits
      SET = 0, FnV = 0
      EA = 0, S1PTW = 0
      FSC = 0x07: level 3 translation fault
    [...]
    Call trace:
     regmap_mmio_read32le+0x10/0x30
     _regmap_bus_reg_read+0x74/0xc0
     _regmap_read+0x68/0x198
     regmap_read+0x54/0x88
     regmap_read_debugfs+0x140/0x380
     regmap_map_read_file+0x30/0x48
     full_proxy_read+0x68/0xc8
     vfs_read+0xcc/0x310
     ksys_read+0x7c/0x120
     __arm64_sys_read+0x24/0x40
     invoke_syscall.constprop.0+0x64/0x108
     do_el0_svc+0xb0/0xd8
     el0_svc+0x38/0x130
     el0t_64_sync_handler+0x120/0x138
     el0t_64_sync+0x194/0x198
    Code: aa1e03e9 d503201f f9400000 8b214000 (b9400000)
    ---[ end trace 0000000000000000 ]---
    note: tail[1217] exited with irqs disabled
    note: tail[1217] exited with preempt_count 1
    Segmentation fault
    
    Fixes: 17ce252266c7 ("dmaengine: xilinx: xdma: Add xilinx xdma driver")
    Reviewed-by: Lizhi Hou <[email protected]>
    Reviewed-by: Radhey Shyam Pandey <[email protected]>
    Reviewed-by: Alexander Stein <[email protected]>
    Signed-off-by: Anthony Brandon <[email protected]>
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dmaengine: xilinx_dma: Fix uninitialized addr_width when "xlnx,addrwidth" property is missing [+ + +]
Author: Suraj Gupta <[email protected]>
Date:   Wed Oct 22 00:00:06 2025 +0530

    dmaengine: xilinx_dma: Fix uninitialized addr_width when "xlnx,addrwidth" property is missing
    
    [ Upstream commit c0732fe78728718c853ef8e7af5bbb05262acbd1 ]
    
    When device tree lacks optional "xlnx,addrwidth" property, the addr_width
    variable remained uninitialized with garbage values, causing incorrect
    DMA mask configuration and subsequent probe failure. The fix ensures a
    fallback to the default 32-bit address width when this property is missing.
    
    Signed-off-by: Suraj Gupta <[email protected]>
    Fixes: b72db4005fe4 ("dmaengine: vdma: Add 64 bit addressing support to the driver")
    Reviewed-by: Radhey Shyam Pandey <[email protected]>
    Reviewed-by: Folker Schwesinger <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Drivers: hv: Always do Hyper-V panic notification in hv_kmsg_dump() [+ + +]
Author: Michael Kelley <[email protected]>
Date:   Wed Dec 31 12:14:47 2025 -0800

    Drivers: hv: Always do Hyper-V panic notification in hv_kmsg_dump()
    
    [ Upstream commit 49f49d47af67f8a7b221db1d758fc634242dc91a ]
    
    hv_kmsg_dump() currently skips the panic notification entirely if it
    doesn't get any message bytes to pass to Hyper-V due to an error from
    kmsg_dump_get_buffer(). Skipping the notification is undesirable because
    it leaves the Hyper-V host uncertain about the state of a panic'ed guest.
    
    Fix this by always doing the panic notification, even if bytes_written
    is zero. Also ensure that bytes_written is initialized, which fixes a
    kernel test robot warning. The warning is actually bogus because
    kmsg_dump_get_buffer() happens to set bytes_written even if it fails, and
    in the kernel test robot's CONFIG_PRINTK not set case, hv_kmsg_dump() is
    never called. But do the initialization for robustness and to quiet the
    static checker.
    
    Fixes: 9c318a1d9b50 ("Drivers: hv: move panic report code from vmbus to hv early init code")
    Reported-by: kernel test robot <[email protected]>
    Reported-by: Dan Carpenter <[email protected]>
    Closes: https://lore.kernel.org/all/[email protected]/
    Signed-off-by: Michael Kelley <[email protected]>
    Reviewed-by: Roman Kisel <[email protected]>
    Signed-off-by: Wei Liu <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display: Bump the HDMI clock to 340MHz [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Mon Dec 15 14:08:30 2025 -0600

    drm/amd/display: Bump the HDMI clock to 340MHz
    
    commit fee50077656d8a58011f13bca48f743d1b6d6015 upstream.
    
    [Why]
    DP-HDMI dongles can execeed bandwidth requirements on high resolution
    monitors. This can lead to pruning the high resolution modes.
    
    HDMI 1.3 bumped the clock to 340MHz, but display code never matched it.
    
    [How]
    Set default to (DVI) 165MHz.  Once HDMI display is identified update
    to 340MHz.
    
    Reported-by: Dianne Skoll <[email protected]>
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4780
    Reviewed-by: Chris Park <[email protected]>
    Signed-off-by: Mario Limonciello <[email protected]>
    Signed-off-by: Matthew Stewart <[email protected]>
    Tested-by: Dan Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit ac1e65d8ade46c09fb184579b81acadf36dcb91e)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

drm/amd/display: Check dce_hwseq before dereferencing it [+ + +]
Author: Alex Hung <[email protected]>
Date:   Tue Jun 3 18:30:55 2025 -0600

    drm/amd/display: Check dce_hwseq before dereferencing it
    
    commit b669507b637eb6b1aaecf347f193efccc65d756e upstream.
    
    [WHAT]
    
    hws was checked for null earlier in dce110_blank_stream, indicating hws
    can be null, and should be checked whenever it is used.
    
    Cc: Mario Limonciello <[email protected]>
    Cc: Alex Deucher <[email protected]>
    Reviewed-by: Aurabindo Pillai <[email protected]>
    Signed-off-by: Alex Hung <[email protected]>
    Signed-off-by: Aurabindo Pillai <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit 79db43611ff61280b6de58ce1305e0b2ecf675ad)
    Cc: [email protected]
    Signed-off-by: Rahul Sharma <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amd/pm: Don't clear SI SMC table when setting power limit [+ + +]
Author: Timur Kristóf <[email protected]>
Date:   Mon Jan 19 21:36:23 2026 +0100

    drm/amd/pm: Don't clear SI SMC table when setting power limit
    
    [ Upstream commit d5077426e1a76d269e518e048bde2e9fc49b32ad ]
    
    There is no reason to clear the SMC table.
    We also don't need to recalculate the power limit then.
    
    Fixes: 841686df9f7d ("drm/amdgpu: add SI DPM support (v4)")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur Kristóf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit e214d626253f5b180db10dedab161b7caa41f5e9)
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/pm: Workaround SI powertune issue on Radeon 430 (v2) [+ + +]
Author: Timur Kristóf <[email protected]>
Date:   Mon Jan 19 21:36:24 2026 +0100

    drm/amd/pm: Workaround SI powertune issue on Radeon 430 (v2)
    
    [ Upstream commit 764a90eb02268a23b1bb98be5f4a13671346804a ]
    
    Radeon 430 and 520 are OEM GPUs from 2016~2017
    They have the same device id: 0x6611 and revision: 0x87
    
    On the Radeon 430, powertune is buggy and throttles the GPU,
    never allowing it to reach its maximum SCLK. Work around this
    bug by raising the TDP limits we program to the SMC from
    24W (specified by the VBIOS on Radeon 430) to 32W.
    
    Disabling powertune entirely is not a viable workaround,
    because it causes the Radeon 520 to heat up above 100 C,
    which I prefer to avoid.
    
    Additionally, revise the maximum SCLK limit. Considering the
    above issue, these GPUs never reached a high SCLK on Linux,
    and the workarounds were added before the GPUs were released,
    so the workaround likely didn't target these specifically.
    Use 780 MHz (the maximum SCLK according to the VBIOS on the
    Radeon 430). Note that the Radeon 520 VBIOS has a higher
    maximum SCLK: 905 MHz, but in practice it doesn't seem to
    perform better with the higher clock, only heats up more.
    
    v2:
    Move the workaround to si_populate_smc_tdp_limits.
    
    Fixes: 841686df9f7d ("drm/amdgpu: add SI DPM support (v4)")
    Reviewed-by: Alex Deucher <[email protected]>
    Signed-off-by: Timur Kristóf <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit 966d70f1e160bdfdecaf7ff2b3f22ad088516e9f)
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd: Clean up kfd node on surprise disconnect [+ + +]
Author: Mario Limonciello (AMD) <[email protected]>
Date:   Wed Jan 7 15:37:28 2026 -0600

    drm/amd: Clean up kfd node on surprise disconnect
    
    commit 28695ca09d326461f8078332aa01db516983e8a2 upstream.
    
    When an eGPU is unplugged the KFD topology should also be destroyed
    for that GPU. This never happens because the fini_sw callbacks never
    get to run. Run them manually before calling amdgpu_device_ip_fini_early()
    when a device has already been disconnected.
    
    This location is intentionally chosen to make sure that the kfd locking
    refcount doesn't get incremented unintentionally.
    
    Cc: [email protected]
    Closes: https://community.frame.work/t/amd-egpu-on-linux/8691/33
    Signed-off-by: Mario Limonciello (AMD) <[email protected]>
    Reviewed-by: Kent Russell <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit 6a23e7b4332c10f8b56c33a9c5431b52ecff9aab)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amdgpu: csa unmap use uninterruptible lock [+ + +]
Author: Philip Yang <[email protected]>
Date:   Wed Jan 28 11:22:38 2026 +0800

    drm/amdgpu: csa unmap use uninterruptible lock
    
    [ Upstream commit a0fa7873f2f869087b1e7793f7fac3713a1e3afe ]
    
    After process exit to unmap csa and free GPU vm, if signal is accepted
    and then waiting to take vm lock is interrupted and return, it causes
    memory leaking and below warning backtrace.
    
    Change to use uninterruptible wait lock fix the issue.
    
    WARNING: CPU: 69 PID: 167800 at amd/amdgpu/amdgpu_kms.c:1525
     amdgpu_driver_postclose_kms+0x294/0x2a0 [amdgpu]
     Call Trace:
      <TASK>
      drm_file_free.part.0+0x1da/0x230 [drm]
      drm_close_helper.isra.0+0x65/0x70 [drm]
      drm_release+0x6a/0x120 [drm]
      amdgpu_drm_release+0x51/0x60 [amdgpu]
      __fput+0x9f/0x280
      ____fput+0xe/0x20
      task_work_run+0x67/0xa0
      do_exit+0x217/0x3c0
      do_group_exit+0x3b/0xb0
      get_signal+0x14a/0x8d0
      arch_do_signal_or_restart+0xde/0x100
      exit_to_user_mode_loop+0xc1/0x1a0
      exit_to_user_mode_prepare+0xf4/0x100
      syscall_exit_to_user_mode+0x17/0x40
      do_syscall_64+0x69/0xc0
    
    Signed-off-by: Philip Yang <[email protected]>
    Reviewed-by: Christian König <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit 7dbbfb3c171a6f63b01165958629c9c26abf38ab)
    Cc: [email protected]
    [The third parameter of drm_exec_init() was introduced by commit
     05d249352f1a ("drm/exec: Pass in initial # of objects") after Linux 6.8.
     This code targets linux 6.6, so the current implementation is used
     and the third parameter is not needed.]
    Signed-off-by: Li hongliang <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/amdkfd: fix a memory leak in device_queue_manager_init() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Thu Jan 8 15:18:22 2026 +0800

    drm/amdkfd: fix a memory leak in device_queue_manager_init()
    
    commit 80614c509810fc051312d1a7ccac8d0012d6b8d0 upstream.
    
    If dqm->ops.initialize() fails, add deallocate_hiq_sdma_mqd()
    to release the memory allocated by allocate_hiq_sdma_mqd().
    Move deallocate_hiq_sdma_mqd() up to ensure proper function
    visibility at the point of use.
    
    Fixes: 11614c36bc8f ("drm/amdkfd: Allocate MQD trunk for HIQ and SDMA")
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Felix Kuehling <[email protected]>
    Reviewed-by: Oak Zeng <[email protected]>
    Reviewed-by: Felix Kuehling <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    (cherry picked from commit b7cccc8286bb9919a0952c812872da1dcfe9d390)
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/nouveau/disp/nv50-: Set lock_core in curs507a_prepare [+ + +]
Author: Lyude Paul <[email protected]>
Date:   Fri Dec 19 16:52:02 2025 -0500

    drm/nouveau/disp/nv50-: Set lock_core in curs507a_prepare
    
    commit 9e9bc6be0fa0b6b6b73f4f831f3b77716d0a8d9e upstream.
    
    For a while, I've been seeing a strange issue where some (usually not all)
    of the display DMA channels will suddenly hang, particularly when there is
    a visible cursor on the screen that is being frequently updated, and
    especially when said cursor happens to go between two screens. While this
    brings back lovely memories of fixing Intel Skylake bugs, I would quite
    like to fix it :).
    
    It turns out the problem that's happening here is that we're managing to
    reach nv50_head_flush_set() in our atomic commit path without actually
    holding nv50_disp->mutex. This means that cursor updates happening in
    parallel (along with any other atomic updates that need to use the core
    channel) will race with eachother, which eventually causes us to corrupt
    the pushbuffer - leading to a plethora of various GSP errors, usually:
    
      nouveau 0000:c1:00.0: gsp: Xid:56 CMDre 00000000 00000218 00102680 00000004 00800003
      nouveau 0000:c1:00.0: gsp: Xid:56 CMDre 00000000 0000021c 00040509 00000004 00000001
      nouveau 0000:c1:00.0: gsp: Xid:56 CMDre 00000000 00000000 00000000 00000001 00000001
    
    The reason this is happening is because generally we check whether we need
    to set nv50_atom->lock_core at the end of nv50_head_atomic_check().
    However, curs507a_prepare is called from the fb_prepare callback, which
    happens after the atomic check phase. As a result, this can lead to commits
    that both touch the core channel but also don't grab nv50_disp->mutex.
    
    So, fix this by making sure that we set nv50_atom->lock_core in
    cus507a_prepare().
    
    Reviewed-by: Dave Airlie <[email protected]>
    Signed-off-by: Lyude Paul <[email protected]>
    Fixes: 1590700d94ac ("drm/nouveau/kms/nv50-: split each resource type into their own source files")
    Cc: <[email protected]> # v4.18+
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/panel-simple: fix connector type for DataImage SCF0700C48GGU18 panel [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Sat Jan 10 16:27:28 2026 +0100

    drm/panel-simple: fix connector type for DataImage SCF0700C48GGU18 panel
    
    commit 6ab3d4353bf75005eaa375677c9fed31148154d6 upstream.
    
    The connector type for the DataImage SCF0700C48GGU18 panel is missing and
    devm_drm_panel_bridge_add() requires connector type to be set. This leads
    to a warning and a backtrace in the kernel log and panel does not work:
    "
    WARNING: CPU: 3 PID: 38 at drivers/gpu/drm/bridge/panel.c:379 devm_drm_of_get_bridge+0xac/0xb8
    "
    The warning is triggered by a check for valid connector type in
    devm_drm_panel_bridge_add(). If there is no valid connector type
    set for a panel, the warning is printed and panel is not added.
    Fill in the missing connector type to fix the warning and make
    the panel operational once again.
    
    Cc: [email protected]
    Fixes: 97ceb1fb08b6 ("drm/panel: simple: Add support for DataImage SCF0700C48GGU18")
    Signed-off-by: Marek Vasut <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
drm/vmwgfx: Fix an error return check in vmw_compat_shader_add() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Wed Dec 24 17:11:05 2025 +0800

    drm/vmwgfx: Fix an error return check in vmw_compat_shader_add()
    
    commit bf72b4b7bb7dbb643d204fa41e7463894a95999f upstream.
    
    In vmw_compat_shader_add(), the return value check of vmw_shader_alloc()
    is not proper. Modify the check for the return pointer 'res'.
    
    Found by code review and compiled on ubuntu 20.04.
    
    Fixes: 18e4a4669c50 ("drm/vmwgfx: Fix compat shader namespace")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Zack Rusin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
dt-bindings: power: qcom,rpmpd: Add SC8280XP_MXC_AO [+ + +]
Author: Konrad Dybcio <[email protected]>
Date:   Tue Dec 2 18:36:20 2025 +0100

    dt-bindings: power: qcom,rpmpd: Add SC8280XP_MXC_AO
    
    [ Upstream commit 45e1be5ddec98db71e7481fa7a3005673200d85c ]
    
    Not sure how useful it's gonna be in practice, but the definition is
    missing (unlike the previously-unused SC8280XP_MXC-non-_AO), so add it
    to allow the driver to create the corresponding pmdomain.
    
    Fixes: dbfb5f94e084 ("dt-bindings: power: rpmpd: Add sc8280xp RPMh power-domains")
    Acked-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Ulf Hansson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: power: qcom,rpmpd: Add SM7150 [+ + +]
Author: Danila Tikhonov <[email protected]>
Date:   Sat Sep 16 20:59:51 2023 +0300

    dt-bindings: power: qcom,rpmpd: Add SM7150
    
    [ Upstream commit 0cd3f86ad558d3f585634e211c6fccbe786cbc28 ]
    
    Add a compatible for SM7150 platforms.
    
    Signed-off-by: Danila Tikhonov <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Stable-dep-of: 45e1be5ddec9 ("dt-bindings: power: qcom,rpmpd: Add SC8280XP_MXC_AO")
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: power: qcom,rpmpd: add Turbo L5 corner [+ + +]
Author: Akhil P Oommen <[email protected]>
Date:   Tue Jul 1 21:50:45 2025 +0530

    dt-bindings: power: qcom,rpmpd: add Turbo L5 corner
    
    [ Upstream commit 1c402295c10891988fb2a6fc658e6e95d4852a20 ]
    
    Update the RPMH level definitions to include TURBO_L5 corner.
    
    Acked-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Akhil P Oommen <[email protected]>
    Patchwork: https://patchwork.freedesktop.org/patch/661840/
    Signed-off-by: Rob Clark <[email protected]>
    Stable-dep-of: 45e1be5ddec9 ("dt-bindings: power: qcom,rpmpd: Add SC8280XP_MXC_AO")
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: power: qcom,rpmpd: document the SM8650 RPMh Power Domains [+ + +]
Author: Neil Armstrong <[email protected]>
Date:   Wed Oct 25 09:32:02 2023 +0200

    dt-bindings: power: qcom,rpmpd: document the SM8650 RPMh Power Domains
    
    [ Upstream commit d4d56c079ddd19293b11de1f2309add0b8972af2 ]
    
    Document the RPMh Power Domains on the SM8650 Platform.
    
    Signed-off-by: Neil Armstrong <[email protected]>
    Link: https://lore.kernel.org/r/20231025-topic-sm8650-upstream-rpmpd-v1-1-f25d313104c6@linaro.org
    Signed-off-by: Ulf Hansson <[email protected]>
    Stable-dep-of: 45e1be5ddec9 ("dt-bindings: power: qcom,rpmpd: Add SC8280XP_MXC_AO")
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: power: qcom,rpmpd: document the SM8750 RPMh Power Domains [+ + +]
Author: Taniya Das <[email protected]>
Date:   Mon Nov 11 16:24:43 2024 -0800

    dt-bindings: power: qcom,rpmpd: document the SM8750 RPMh Power Domains
    
    [ Upstream commit 134e9d035d830aabd1121bcda89f7ee9a476d3a3 ]
    
    Document the RPMh Power Domains on the SM8750 Platform.
    
    Signed-off-by: Taniya Das <[email protected]>
    Signed-off-by: Jishnu Prakash <[email protected]>
    Signed-off-by: Melody Olvera <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Ulf Hansson <[email protected]>
    Stable-dep-of: 45e1be5ddec9 ("dt-bindings: power: qcom,rpmpd: Add SC8280XP_MXC_AO")
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: power: qcom-rpmpd: split RPMh domains definitions [+ + +]
Author: Dmitry Baryshkov <[email protected]>
Date:   Fri Jul 18 19:13:39 2025 +0300

    dt-bindings: power: qcom-rpmpd: split RPMh domains definitions
    
    [ Upstream commit dcb8d01b65fb5a891ddbbedcbe6eff0b8ec37867 ]
    
    Historically both RPM and RPMh domain definitions were a part of the
    same, qcom-rpmpd.h header. Now as we have a separate header for RPMh
    definitions, qcom,rpmhpd.h, move all RPMh power domain definitions to
    that header.
    
    Signed-off-by: Dmitry Baryshkov <[email protected]>
    Acked-by: Rob Herring (Arm) <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Bjorn Andersson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Stable-dep-of: 45e1be5ddec9 ("dt-bindings: power: qcom,rpmpd: Add SC8280XP_MXC_AO")
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: power: rpmpd: Add MSM8917, MSM8937 and QM215 [+ + +]
Author: Otto Pflüger <[email protected]>
Date:   Sat Oct 14 15:38:21 2023 +0200

    dt-bindings: power: rpmpd: Add MSM8917, MSM8937 and QM215
    
    [ Upstream commit 61848698288d93a230cab9c0585e726df66f2402 ]
    
    The MSM8917, MSM8937 and QM215 SoCs have VDDCX and VDDMX power domains
    controlled in voltage level mode. Define the MSM8937 and QM215 power
    domains as aliases because these SoCs are similar to MSM8917 and may
    share some parts of the device tree.
    
    Also add the compatibles for these SoCs to the documentation, with
    qcom,msm8937-rpmpd using qcom,msm8917-rpmpd as a fallback compatible
    because there are no known differences. QM215 is not compatible with
    these because it uses different regulators.
    
    Signed-off-by: Otto Pflüger <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Stable-dep-of: 45e1be5ddec9 ("dt-bindings: power: qcom,rpmpd: Add SC8280XP_MXC_AO")
    Signed-off-by: Sasha Levin <[email protected]>

dt-bindings: power: rpmpd: Update part number to X1E80100 [+ + +]
Author: Sibi Sankar <[email protected]>
Date:   Thu Nov 23 15:30:20 2023 +0530

    dt-bindings: power: rpmpd: Update part number to X1E80100
    
    [ Upstream commit 3d123f513af055b4c085b555f9c856bbd7390536 ]
    
    There was a recent part number update from SC8380XP to X1E80100 and as
    a result of which the SC8380xp rpmpd bindings introduced is no longer
    correct. Given that it currently has no users, it was agreed that it
    can be updated to the correct part number (X1E80100) without causing
    any binding breakage.
    
    Signed-off-by: Sibi Sankar <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Stable-dep-of: 45e1be5ddec9 ("dt-bindings: power: qcom,rpmpd: Add SC8280XP_MXC_AO")
    Signed-off-by: Sasha Levin <[email protected]>

 
EDAC/i3200: Fix a resource leak in i3200_probe1() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Tue Dec 23 20:32:02 2025 +0800

    EDAC/i3200: Fix a resource leak in i3200_probe1()
    
    commit d42d5715dcb559342ff356327b241c53a67584d9 upstream.
    
    If edac_mc_alloc() fails, also unmap the window.
    
      [ bp: Use separate labels, turning it into the classic unwind pattern. ]
    
    Fixes: dd8ef1db87a4 ("edac: i3200 memory controller driver")
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
EDAC/x38: Fix a resource leak in x38_probe1() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Tue Dec 23 20:43:50 2025 +0800

    EDAC/x38: Fix a resource leak in x38_probe1()
    
    commit 0ff7c44106b4715fc27a2e455d9f57f1dfcfd54f upstream.
    
    If edac_mc_alloc() fails, also unmap the window.
    
      [ bp: Use separate labels, turning it into the classic unwind pattern. ]
    
    Fixes: df8bc08c192f ("edac x38: new MC driver module")
    Signed-off-by: Haoxiang Li <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
efi/cper: Fix cper_bits_to_str buffer handling and return value [+ + +]
Author: Morduan Zang <[email protected]>
Date:   Wed Jan 14 13:30:33 2026 +0800

    efi/cper: Fix cper_bits_to_str buffer handling and return value
    
    commit d7f1b4bdc7108be1b178e1617b5f45c8918e88d7 upstream.
    
    The return value calculation was incorrect: `return len - buf_size;`
    Initially `len = buf_size`, then `len` decreases with each operation.
    This results in a negative return value on success.
    
    Fix by returning `buf_size - len` which correctly calculates the actual
    number of bytes written.
    
    Fixes: a976d790f494 ("efi/cper: Add a new helper function to print bitmasks")
    Signed-off-by: Morduan Zang <[email protected]>
    Signed-off-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ext4: fix iloc.bh leak in ext4_xattr_inode_update_ref [+ + +]
Author: Yang Erkun <[email protected]>
Date:   Sat Dec 13 13:57:06 2025 +0800

    ext4: fix iloc.bh leak in ext4_xattr_inode_update_ref
    
    commit d250bdf531d9cd4096fedbb9f172bb2ca660c868 upstream.
    
    The error branch for ext4_xattr_inode_update_ref forget to release the
    refcount for iloc.bh. Find this when review code.
    
    Fixes: 57295e835408 ("ext4: guard against EA inode refcount underflow in xattr update")
    Signed-off-by: Yang Erkun <[email protected]>
    Reviewed-by: Baokun Li <[email protected]>
    Reviewed-by: Zhang Yi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Theodore Ts'o <[email protected]>
    Cc: [email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
firmware: imx: scu-irq: Set mu_resource_id before get handle [+ + +]
Author: Peng Fan <[email protected]>
Date:   Fri Oct 17 09:56:27 2025 +0800

    firmware: imx: scu-irq: Set mu_resource_id before get handle
    
    commit ff3f9913bc0749364fbfd86ea62ba2d31c6136c8 upstream.
    
    mu_resource_id is referenced in imx_scu_irq_get_status() and
    imx_scu_irq_group_enable() which could be used by other modules, so
    need to set correct value before using imx_sc_irq_ipc_handle in
    SCU API call.
    
    Reviewed-by: Frank Li <[email protected]>
    Signed-off-by: Peng Fan <[email protected]>
    Signed-off-by: Shawn Guo <[email protected]>
    Fixes: 81fb53feb66a ("firmware: imx: scu-irq: Init workqueue before request mbox channel")
    Cc: Ben Hutchings <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
 
Linux: Fix memory leak in posix_clock_open() [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Tue Mar 26 14:59:48 2024 -0700

    Fix memory leak in posix_clock_open()
    
    [ Upstream commit 5b4cdd9c5676559b8a7c944ac5269b914b8c0bb8 ]
    
    If the clk ops.open() function returns an error, we don't release the
    pccontext we allocated for this clock.
    
    Re-organize the code slightly to make it all more obvious.
    
    Reported-by: Rohit Keshri <[email protected]>
    Acked-by: Oleg Nesterov <[email protected]>
    Fixes: 60c6946675fc ("posix-clock: introduce posix_clock_context concept")
    Cc: Jakub Kicinski <[email protected]>
    Cc: David S. Miller <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Stable-dep-of: e859d375d169 ("posix-clock: Store file pointer in struct posix_clock_context")
    Signed-off-by: Sasha Levin <[email protected]>

 
fou: Don't allow 0 for FOU_ATTR_IPPROTO. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Jan 15 17:24:48 2026 +0000

    fou: Don't allow 0 for FOU_ATTR_IPPROTO.
    
    [ Upstream commit 7a9bc9e3f42391e4c187e099263cf7a1c4b69ff5 ]
    
    fou_udp_recv() has the same problem mentioned in the previous
    patch.
    
    If FOU_ATTR_IPPROTO is set to 0, skb is not freed by
    fou_udp_recv() nor "resubmit"-ted in ip_protocol_deliver_rcu().
    
    Let's forbid 0 for FOU_ATTR_IPPROTO.
    
    Fixes: 23461551c0062 ("fou: Support for foo-over-udp RX path")
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-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]>

 
fs/ntfs3: Initialize allocated memory before use [+ + +]
Author: Bartlomiej Kubik <[email protected]>
Date:   Fri Jan 23 14:57:53 2026 +0800

    fs/ntfs3: Initialize allocated memory before use
    
    [ Upstream commit a8a3ca23bbd9d849308a7921a049330dc6c91398 ]
    
    KMSAN reports: Multiple uninitialized values detected:
    
    - KMSAN: uninit-value in ntfs_read_hdr (3)
    - KMSAN: uninit-value in bcmp (3)
    
    Memory is allocated by __getname(), which is a wrapper for
    kmem_cache_alloc(). This memory is used before being properly
    cleared. Change kmem_cache_alloc() to kmem_cache_zalloc() to
    properly allocate and clear memory before use.
    
    Fixes: 82cae269cfa9 ("fs/ntfs3: Add initialization of super block")
    Fixes: 78ab59fee07f ("fs/ntfs3: Rework file operations")
    Tested-by: [email protected]
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=332bd4e9d148f11a87dc
    
    Fixes: 82cae269cfa9 ("fs/ntfs3: Add initialization of super block")
    Fixes: 78ab59fee07f ("fs/ntfs3: Rework file operations")
    Tested-by: [email protected]
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=0399100e525dd9696764
    
    Reviewed-by: Khalid Aziz <[email protected]>
    Signed-off-by: Bartlomiej Kubik <[email protected]>
    Signed-off-by: Konstantin Komarov <[email protected]>
    Signed-off-by: Li hongliang <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
gue: Fix skb memleak with inner IP protocol 0. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Jan 15 17:24:46 2026 +0000

    gue: Fix skb memleak with inner IP protocol 0.
    
    [ Upstream commit 9a56796ad258786d3624eef5aefba394fc9bdded ]
    
    syzbot reported skb memleak below. [0]
    
    The repro generated a GUE packet with its inner protocol 0.
    
    gue_udp_recv() returns -guehdr->proto_ctype for "resubmit"
    in ip_protocol_deliver_rcu(), but this only works with
    non-zero protocol number.
    
    Let's drop such packets.
    
    Note that 0 is a valid number (IPv6 Hop-by-Hop Option).
    
    I think it is not practical to encap HOPOPT in GUE, so once
    someone starts to complain, we could pass down a resubmit
    flag pointer to distinguish two zeros from the upper layer:
    
      * no error
      * resubmit HOPOPT
    
    [0]
    BUG: memory leak
    unreferenced object 0xffff888109695a00 (size 240):
      comm "syz.0.17", pid 6088, jiffies 4294943096
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 40 c2 10 81 88 ff ff 00 00 00 00 00 00 00 00  .@..............
      backtrace (crc a84b336f):
        kmemleak_alloc_recursive include/linux/kmemleak.h:44 [inline]
        slab_post_alloc_hook mm/slub.c:4958 [inline]
        slab_alloc_node mm/slub.c:5263 [inline]
        kmem_cache_alloc_noprof+0x3b4/0x590 mm/slub.c:5270
        __build_skb+0x23/0x60 net/core/skbuff.c:474
        build_skb+0x20/0x190 net/core/skbuff.c:490
        __tun_build_skb drivers/net/tun.c:1541 [inline]
        tun_build_skb+0x4a1/0xa40 drivers/net/tun.c:1636
        tun_get_user+0xc12/0x2030 drivers/net/tun.c:1770
        tun_chr_write_iter+0x71/0x120 drivers/net/tun.c:1999
        new_sync_write fs/read_write.c:593 [inline]
        vfs_write+0x45d/0x710 fs/read_write.c:686
        ksys_write+0xa7/0x170 fs/read_write.c:738
        do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
        do_syscall_64+0xa4/0xf80 arch/x86/entry/syscall_64.c:94
        entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: 37dd0247797b1 ("gue: Receive side for Generic UDP Encapsulation")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-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]>

 
HID: usbhid: paper over wrong bNumDescriptor field [+ + +]
Author: Benjamin Tissoires <[email protected]>
Date:   Mon Dec 15 12:57:21 2025 +0100

    HID: usbhid: paper over wrong bNumDescriptor field
    
    commit f28beb69c51517aec7067dfb2074e7c751542384 upstream.
    
    Some faulty devices (ZWO EFWmini) have a wrong optional HID class
    descriptor count compared to the provided length.
    
    Given that we plainly ignore those optional descriptor, we can attempt
    to fix the provided number so we do not lock out those devices.
    
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Cc: Salvatore Bonaccorso <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
hrtimer: Fix softirq base check in update_needs_ipi() [+ + +]
Author: Thomas Weißschuh <[email protected]>
Date:   Wed Jan 7 11:39:24 2026 +0100

    hrtimer: Fix softirq base check in update_needs_ipi()
    
    commit 05dc4a9fc8b36d4c99d76bbc02aa9ec0132de4c2 upstream.
    
    The 'clockid' field is not the correct way to check for a softirq base.
    
    Fix the check to correctly compare the base type instead of the clockid.
    
    Fixes: 1e7f7fbcd40c ("hrtimer: Avoid more SMP function calls in clock_was_set()")
    Signed-off-by: Thomas Weißschuh <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/20260107-hrtimer-clock-base-check-v1-1-afb5dbce94a1@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
hyperv-tlfs: Change prefix of generic HV_REGISTER_* MSRs to HV_MSR_* [+ + +]
Author: Nuno Das Neves <[email protected]>
Date:   Tue Feb 20 06:55:33 2024 -0800

    hyperv-tlfs: Change prefix of generic HV_REGISTER_* MSRs to HV_MSR_*
    
    [ Upstream commit 0e3f7d120086c8b9d6e1ae0dd4917fc529daa1ca ]
    
    The HV_REGISTER_ are used as arguments to hv_set/get_register(), which
    delegate to arch-specific mechanisms for getting/setting synthetic
    Hyper-V MSRs.
    
    On arm64, HV_REGISTER_ defines are synthetic VP registers accessed via
    the get/set vp registers hypercalls. The naming matches the TLFS
    document, although these register names are not specific to arm64.
    
    However, on x86 the prefix HV_REGISTER_ indicates Hyper-V MSRs accessed
    via rdmsrl()/wrmsrl(). This is not consistent with the TLFS doc, where
    HV_REGISTER_ is *only* used for used for VP register names used by
    the get/set register hypercalls.
    
    To fix this inconsistency and prevent future confusion, change the
    arch-generic aliases used by callers of hv_set/get_register() to have
    the prefix HV_MSR_ instead of HV_REGISTER_.
    
    Use the prefix HV_X64_MSR_ for the x86-only Hyper-V MSRs. On x86, the
    generic HV_MSR_'s point to the corresponding HV_X64_MSR_.
    
    Move the arm64 HV_REGISTER_* defines to the asm-generic hyperv-tlfs.h,
    since these are not specific to arm64. On arm64, the generic HV_MSR_'s
    point to the corresponding HV_REGISTER_.
    
    While at it, rename hv_get/set_registers() and related functions to
    hv_get/set_msr(), hv_get/set_nested_msr(), etc. These are only used for
    Hyper-V MSRs and this naming makes that clear.
    
    Signed-off-by: Nuno Das Neves <[email protected]>
    Reviewed-by: Wei Liu <[email protected]>
    Reviewed-by: Michael Kelley <[email protected]>
    Link: https://lore.kernel.org/r/1708440933-27125-1-git-send-email-nunodasneves@linux.microsoft.com
    Signed-off-by: Wei Liu <[email protected]>
    Message-ID: <1708440933-27125-1-git-send-email-nunodasneves@linux.microsoft.com>
    Stable-dep-of: 49f49d47af67 ("Drivers: hv: Always do Hyper-V panic notification in hv_kmsg_dump()")
    Signed-off-by: Sasha Levin <[email protected]>

 
i2c: qcom-geni: make sure I2C hub controllers can't use SE DMA [+ + +]
Author: Neil Armstrong <[email protected]>
Date:   Wed Oct 29 19:07:42 2025 +0100

    i2c: qcom-geni: make sure I2C hub controllers can't use SE DMA
    
    [ Upstream commit c0c50e3743e467ec4752c638e10e97f89c8644e2 ]
    
    The I2C Hub controller is a simpler GENI I2C variant that doesn't
    support DMA at all, add a no_dma flag to make sure it nevers selects
    the SE DMA mode with mappable 32bytes long transfers.
    
    Fixes: cacd9643eca7 ("i2c: qcom-geni: add support for I2C Master Hub variant")
    Signed-off-by: Neil Armstrong <[email protected]>
    Reviewed-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Mukesh Kumar Savaliya <[email protected]>>
    Signed-off-by: Wolfram Sang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ice: Avoid detrimental cleanup for bond during interface stop [+ + +]
Author: Dave Ertman <[email protected]>
Date:   Thu Nov 20 09:58:26 2025 -0800

    ice: Avoid detrimental cleanup for bond during interface stop
    
    [ Upstream commit a9d45c22ed120cdd15ff56d0a6e4700c46451901 ]
    
    When the user issues an administrative down to an interface that is the
    primary for an aggregate bond, the prune lists are being purged. This
    breaks communication to the secondary interface, which shares a prune
    list on the main switch block while bonded together.
    
    For the primary interface of an aggregate, avoid deleting these prune
    lists during stop, and since they are hardcoded to specific values for
    the default vlan and QinQ vlans, the attempt to re-add them during the
    up phase will quietly fail without any additional problem.
    
    Fixes: 1e0f9881ef79 ("ice: Flesh out implementation of support for SRIOV on bonded interface")
    Reviewed-by: Jacob Keller <[email protected]>
    Reviewed-by: Marcin Szycik <[email protected]>
    Signed-off-by: Dave Ertman <[email protected]>
    Tested-by: Rinitha S <[email protected]> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ice: initialize ring_stats->syncp [+ + +]
Author: Jacob Keller <[email protected]>
Date:   Thu Nov 20 12:20:41 2025 -0800

    ice: initialize ring_stats->syncp
    
    [ Upstream commit 8439016c3b8b5ab687c2420317b1691585106611 ]
    
    The u64_stats_sync structure is empty on 64-bit systems. However, on 32-bit
    systems it contains a seqcount_t which needs to be initialized. While the
    memory is zero-initialized, a lack of u64_stats_init means that lockdep
    won't get initialized properly. Fix this by adding u64_stats_init() calls
    to the rings just after allocation.
    
    Fixes: 2b245cb29421 ("ice: Implement transmit and NAPI support")
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Signed-off-by: Jacob Keller <[email protected]>
    Reviewed-by: Simon Horman <[email protected]>
    Tested-by: Rinitha S <[email protected]> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
igc: fix race condition in TX timestamp read for register 0 [+ + +]
Author: Chwee-Lin Choong <[email protected]>
Date:   Fri Nov 28 18:53:04 2025 +0800

    igc: fix race condition in TX timestamp read for register 0
    
    [ Upstream commit 6990dc392a9ab10e52af37e0bee8c7b753756dc4 ]
    
    The current HW bug workaround checks the TXTT_0 ready bit first,
    then reads TXSTMPL_0 twice (before and after reading TXSTMPH_0)
    to detect whether a new timestamp was captured by timestamp
    register 0 during the workaround.
    
    This sequence has a race: if a new timestamp is captured after
    checking the TXTT_0 bit but before the first TXSTMPL_0 read, the
    detection fails because both the "old" and "new" values come from
    the same timestamp.
    
    Fix by reading TXSTMPL_0 first to establish a baseline, then
    checking the TXTT_0 bit. This ensures any timestamp captured
    during the race window will be detected.
    
    Old sequence:
      1. Check TXTT_0 ready bit
      2. Read TXSTMPL_0 (baseline)
      3. Read TXSTMPH_0 (interrupt workaround)
      4. Read TXSTMPL_0 (detect changes vs baseline)
    
    New sequence:
      1. Read TXSTMPL_0 (baseline)
      2. Check TXTT_0 ready bit
      3. Read TXSTMPH_0 (interrupt workaround)
      4. Read TXSTMPL_0 (detect changes vs baseline)
    
    Fixes: c789ad7cbebc ("igc: Work around HW bug causing missing timestamps")
    Suggested-by: Avi Shalev <[email protected]>
    Reviewed-by: Aleksandr Loktionov <[email protected]>
    Co-developed-by: Song Yoong Siang <[email protected]>
    Signed-off-by: Song Yoong Siang <[email protected]>
    Signed-off-by: Chwee-Lin Choong <[email protected]>
    Tested-by: Avigail Dahan <[email protected]>
    Signed-off-by: Tony Nguyen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iio: accel: iis328dq: fix gain values [+ + +]
Author: Markus Koeniger <[email protected]>
Date:   Wed Jan 7 16:32:18 2026 +0100

    iio: accel: iis328dq: fix gain values
    
    commit b8f15d1df2e73322e2112de21a4a7f3553c7fb60 upstream.
    
    The sensors IIS328DQ and H3LIS331DL share one configuration but
    H3LIS331DL has different gain parameters, configs therefore
    need to be split up.
    The gain parameters for the IIS328DQ are 0.98, 1.95 and 3.91,
    depending on the selected measurement range.
    
    See sensor manuals, chapter 2.1 "mechanical characteristics",
    parameter "Sensitivity".
    
    Datasheet: https://www.st.com/resource/en/datasheet/iis328dq.pdf
    Datasheet: https://www.st.com/resource/en/datasheet/h3lis331dl.pdf
    Fixes: 46e33707fe95 ("iio: accel: add support for IIS328DQ variant")
    Reviewed-by: Dimitri Fedrau <[email protected]>
    Signed-off-by: Markus Koeniger <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: adc: ad7280a: handle spi_setup() errors in probe() [+ + +]
Author: Pavel Zhigulin <[email protected]>
Date:   Fri Nov 14 18:13:01 2025 +0300

    iio: adc: ad7280a: handle spi_setup() errors in probe()
    
    [ Upstream commit 6b39824ac4c15783787e6434449772bfb2e31214 ]
    
    The probe() function ignored the return value of spi_setup(), leaving SPI
    configuration failures undetected. If spi_setup() fails, the driver should
    stop initialization and propagate the error to the caller.
    
    Add proper error handling: check the return value of spi_setup() and return
    it on failure.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 2051f25d2a26 ("iio: adc: New driver for AD7280A Lithium Ion Battery Monitoring System")
    Signed-off-by: Pavel Zhigulin <[email protected]>
    Reviewed-by: Marcelo Schmitt <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

iio: adc: ad9467: fix ad9434 vref mask [+ + +]
Author: Tomas Melin <[email protected]>
Date:   Wed Dec 3 09:28:11 2025 +0000

    iio: adc: ad9467: fix ad9434 vref mask
    
    commit 92452b1760ff2d1d411414965d4d06f75e1bda9a upstream.
    
    The mask setting is 5 bits wide for the ad9434
    (ref. data sheet register 0x18 FLEX_VREF). Apparently the settings
    from ad9265 were copied by mistake when support for the device was added
    to the driver.
    
    Fixes: 4606d0f4b05f ("iio: adc: ad9467: add support for AD9434 high-speed ADC")
    Reviewed-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Nuno Sá <[email protected]>
    Reviewed-by: David Lechner <[email protected]>
    Signed-off-by: Tomas Melin <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: adc: at91-sama5d2_adc: Fix potential use-after-free in sama5d2_adc driver [+ + +]
Author: Pei Xiao <[email protected]>
Date:   Wed Oct 29 10:40:16 2025 +0800

    iio: adc: at91-sama5d2_adc: Fix potential use-after-free in sama5d2_adc driver
    
    commit dbdb442218cd9d613adeab31a88ac973f22c4873 upstream.
    
    at91_adc_interrupt can call at91_adc_touch_data_handler function
    to start the work by schedule_work(&st->touch_st.workq).
    
    If we remove the module which will call at91_adc_remove to
    make cleanup, it will free indio_dev through iio_device_unregister but
    quite a bit later. While the work mentioned above will be used. The
    sequence of operations that may lead to a UAF bug is as follows:
    
    CPU0                                      CPU1
    
                                         | at91_adc_workq_handler
    at91_adc_remove                      |
    iio_device_unregister(indio_dev)     |
    //free indio_dev a bit later         |
                                         | iio_push_to_buffers(indio_dev)
                                         | //use indio_dev
    
    Fix it by ensuring that the work is canceled before proceeding with
    the cleanup in at91_adc_remove.
    
    Fixes: 23ec2774f1cc ("iio: adc: at91-sama5d2_adc: add support for position and pressure channels")
    Signed-off-by: Pei Xiao <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: adc: exynos_adc: fix OF populate on driver rebind [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Tue Jan 27 13:26:19 2026 -0500

    iio: adc: exynos_adc: fix OF populate on driver rebind
    
    [ Upstream commit ea6b4feba85e996e840e0b661bc42793df6eb701 ]
    
    Since commit c6e126de43e7 ("of: Keep track of populated platform
    devices") child devices will not be created by of_platform_populate()
    if the devices had previously been deregistered individually so that the
    OF_POPULATED flag is still set in the corresponding OF nodes.
    
    Switch to using of_platform_depopulate() instead of open coding so that
    the child devices are created if the driver is rebound.
    
    Fixes: c6e126de43e7 ("of: Keep track of populated platform devices")
    Cc: [email protected]      # 3.16
    Signed-off-by: Johan Hovold <[email protected]>
    Reviewed-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: chemical: scd4x: fix reported channel endianness [+ + +]
Author: Fiona Klute <[email protected]>
Date:   Sat Dec 13 17:32:26 2025 +0100

    iio: chemical: scd4x: fix reported channel endianness
    
    commit 81d5a5366d3c20203fb9d7345e1aa46d668445a2 upstream.
    
    The driver converts values read from the sensor from BE to CPU
    endianness in scd4x_read_meas(). The result is then pushed into the
    buffer in scd4x_trigger_handler(), so on LE architectures parsing the
    buffer using the reported BE type gave wrong results.
    
    scd4x_read_raw() which provides sysfs *_raw values is not affected, it
    used the values returned by scd4x_read_meas() without further
    conversion.
    
    Fixes: 49d22b695cbb6 ("drivers: iio: chemical: Add support for Sensirion SCD4x CO2 sensor")
    Signed-off-by: Fiona Klute <[email protected]>
    Reviewed-by: David Lechner <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: core: add missing mutex_destroy in iio_dev_release() [+ + +]
Author: Andy Shevchenko <[email protected]>
Date:   Mon Jan 26 13:28:54 2026 -0500

    iio: core: add missing mutex_destroy in iio_dev_release()
    
    [ Upstream commit f5d203467a31798191365efeb16cd619d2c8f23a ]
    
    Add missing mutex_destroy() call in iio_dev_release() to properly
    clean up the mutex initialized in iio_device_alloc(). Ensure proper
    resource cleanup and follows kernel practices.
    
    Found by code review.
    
    While at it, create a lockdep key before mutex initialisation.
    This will help with converting it to the better API in the future.
    
    Fixes: 847ec80bbaa7 ("Staging: IIO: core support for device registration and management")
    Fixes: ac917a81117c ("staging:iio:core set the iio_dev.info pointer to null on unregister under lock.")
    Signed-off-by: Andy Shevchenko <[email protected]>
    Reviewed-by: Nuno Sá <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Stable-dep-of: 9910159f0659 ("iio: core: add separate lockdep class for info_exist_lock")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: core: add separate lockdep class for info_exist_lock [+ + +]
Author: Rasmus Villemoes <[email protected]>
Date:   Mon Jan 26 13:28:55 2026 -0500

    iio: core: add separate lockdep class for info_exist_lock
    
    [ Upstream commit 9910159f06590c17df4fbddedaabb4c0201cc4cb ]
    
    When one iio device is a consumer of another, it is possible that
    the ->info_exist_lock of both ends up being taken when reading the
    value of the consumer device.
    
    Since they currently belong to the same lockdep class (being
    initialized in a single location with mutex_init()), that results in a
    lockdep warning
    
             CPU0
             ----
        lock(&iio_dev_opaque->info_exist_lock);
        lock(&iio_dev_opaque->info_exist_lock);
    
       *** DEADLOCK ***
    
       May be due to missing lock nesting notation
    
      4 locks held by sensors/414:
       #0: c31fd6dc (&p->lock){+.+.}-{3:3}, at: seq_read_iter+0x44/0x4e4
       #1: c4f5a1c4 (&of->mutex){+.+.}-{3:3}, at: kernfs_seq_start+0x1c/0xac
       #2: c2827548 (kn->active#34){.+.+}-{0:0}, at: kernfs_seq_start+0x30/0xac
       #3: c1dd2b68 (&iio_dev_opaque->info_exist_lock){+.+.}-{3:3}, at: iio_read_channel_processed_scale+0x24/0xd8
    
      stack backtrace:
      CPU: 0 UID: 0 PID: 414 Comm: sensors Not tainted 6.17.11 #5 NONE
      Hardware name: Generic AM33XX (Flattened Device Tree)
      Call trace:
       unwind_backtrace from show_stack+0x10/0x14
       show_stack from dump_stack_lvl+0x44/0x60
       dump_stack_lvl from print_deadlock_bug+0x2b8/0x334
       print_deadlock_bug from __lock_acquire+0x13a4/0x2ab0
       __lock_acquire from lock_acquire+0xd0/0x2c0
       lock_acquire from __mutex_lock+0xa0/0xe8c
       __mutex_lock from mutex_lock_nested+0x1c/0x24
       mutex_lock_nested from iio_read_channel_raw+0x20/0x6c
       iio_read_channel_raw from rescale_read_raw+0x128/0x1c4
       rescale_read_raw from iio_channel_read+0xe4/0xf4
       iio_channel_read from iio_read_channel_processed_scale+0x6c/0xd8
       iio_read_channel_processed_scale from iio_hwmon_read_val+0x68/0xbc
       iio_hwmon_read_val from dev_attr_show+0x18/0x48
       dev_attr_show from sysfs_kf_seq_show+0x80/0x110
       sysfs_kf_seq_show from seq_read_iter+0xdc/0x4e4
       seq_read_iter from vfs_read+0x238/0x2e4
       vfs_read from ksys_read+0x6c/0xec
       ksys_read from ret_fast_syscall+0x0/0x1c
    
    Just as the mlock_key already has its own lockdep class, add a
    lock_class_key for the info_exist mutex.
    
    Note that this has in theory been a problem since before IIO first
    left staging, but it only occurs when a chain of consumers is in use
    and that is not often done.
    
    Fixes: ac917a81117c ("staging:iio:core set the iio_dev.info pointer to null on unregister under lock.")
    Signed-off-by: Rasmus Villemoes <[email protected]>
    Reviewed-by: Peter Rosin <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: dac: ad5686: add AD5695R to ad5686_chip_info_tbl [+ + +]
Author: Kübrich, Andreas <[email protected]>
Date:   Mon Nov 17 12:35:13 2025 +0000

    iio: dac: ad5686: add AD5695R to ad5686_chip_info_tbl
    
    commit 441ac29923c9172bc5e4b2c4f52ae756192f5715 upstream.
    
    The chip info for this variant (I2C, four channels, 14 bit, internal
    reference) seems to have been left out due to oversight, so
    ad5686_chip_info_tbl[ID_AD5695R] is all zeroes. Initialisation of an
    AD5695R still succeeds, but the resulting IIO device has no channels and no
    /dev/iio:device* node.
    
    Add the missing chip info to the table.
    
    Fixes: 4177381b4401 ("iio:dac:ad5686: Add AD5671R/75R/94/94R/95R/96/96R support")
    Signed-off-by: Andreas Kübrich <[email protected]>
    Cc: [email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

iio: imu: st_lsm6dsx: fix iio_chan_spec for sensors without event detection [+ + +]
Author: Francesco Lavra <[email protected]>
Date:   Mon Dec 1 11:00:10 2025 +0100

    iio: imu: st_lsm6dsx: fix iio_chan_spec for sensors without event detection
    
    commit c34e2e2d67b3bb8d5a6d09b0d6dac845cdd13fb3 upstream.
    
    The st_lsm6dsx_acc_channels array of struct iio_chan_spec has a non-NULL
    event_spec field, indicating support for IIO events. However, event
    detection is not supported for all sensors, and if userspace tries to
    configure accelerometer wakeup events on a sensor device that does not
    support them (e.g. LSM6DS0), st_lsm6dsx_write_event() dereferences a NULL
    pointer when trying to write to the wakeup register.
    Define an additional struct iio_chan_spec array whose members have a NULL
    event_spec field, and use this array instead of st_lsm6dsx_acc_channels for
    sensors without event detection capability.
    
    Fixes: b5969abfa8b8 ("iio: imu: st_lsm6dsx: add motion events")
    Signed-off-by: Francesco Lavra <[email protected]>
    Reviewed-by: Andy Shevchenko <[email protected]>
    Acked-by: Lorenzo Bianconi <[email protected]>
    Cc: [email protected]
    Signed-off-by: Jonathan Cameron <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Input: i8042 - add quirk for ASUS Zenbook UX425QA_UM425QA [+ + +]
Author: feng <[email protected]>
Date:   Sat Jan 24 21:44:12 2026 -0800

    Input: i8042 - add quirk for ASUS Zenbook UX425QA_UM425QA
    
    commit 2934325f56150ad8dab8ab92cbe2997242831396 upstream.
    
    The ASUS Zenbook UX425QA_UM425QA fails to initialize the keyboard after
    a cold boot.
    
    A quirk already exists for "ZenBook UX425", but some Zenbooks report
    "Zenbook" with a lowercase 'b'. Since DMI matching is case-sensitive,
    the existing quirk is not applied to these "extra special" Zenbooks.
    
    Testing confirms that this model needs the same quirks as the ZenBook
    UX425 variants.
    
    Signed-off-by: feng <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: [email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

Input: i8042 - add quirks for MECHREVO Wujie 15X Pro [+ + +]
Author: gongqi <[email protected]>
Date:   Thu Jan 22 23:54:59 2026 +0800

    Input: i8042 - add quirks for MECHREVO Wujie 15X Pro
    
    commit 19a5d9ba6208e9006a2a9d5962aea4d6e427d8ab upstream.
    
    The MECHREVO Wujie 15X Pro requires several i8042 quirks to function
    correctly. Specifically, NOMUX, RESET_ALWAYS, NOLOOP, and NOPNP are
    needed to ensure the keyboard and touchpad work reliably.
    
    Signed-off-by: gongqi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: [email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
intel_th: fix device leak on output open() [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Mon Dec 8 16:35:23 2025 +0100

    intel_th: fix device leak on output open()
    
    commit 95fc36a234da24bbc5f476f8104a5a15f99ed3e3 upstream.
    
    Make sure to drop the reference taken when looking up the th device
    during output device open() on errors and on close().
    
    Note that a recent commit fixed the leak in a couple of open() error
    paths but not all of them, and the reference is still leaking on
    successful open().
    
    Fixes: 39f4034693b7 ("intel_th: Add driver infrastructure for Intel(R) Trace Hub devices")
    Fixes: 6d5925b667e4 ("intel_th: Fix error handling in intel_th_output_open")
    Cc: [email protected]      # 4.4: 6d5925b667e4
    Cc: Alexander Shishkin <[email protected]>
    Cc: Ma Ke <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
interconnect: debugfs: initialize src_node and dst_node to empty strings [+ + +]
Author: Georgi Djakov <[email protected]>
Date:   Fri Jan 9 14:25:23 2026 +0200

    interconnect: debugfs: initialize src_node and dst_node to empty strings
    
    [ Upstream commit 8cc27f5c6dd17dd090f3a696683f04336c162ff5 ]
    
    The debugfs_create_str() API assumes that the string pointer is either NULL
    or points to valid kmalloc() memory. Leaving the pointer uninitialized can
    cause problems.
    
    Initialize src_node and dst_node to empty strings before creating the
    debugfs entries to guarantee that reads and writes are safe.
    
    Fixes: 770c69f037c1 ("interconnect: Add debugfs test client")
    Signed-off-by: Georgi Djakov <[email protected]>
    Reviewed-by: Kuan-Wei Chiu <[email protected]>
    Tested-by: Kuan-Wei Chiu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Georgi Djakov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
io_uring/io-wq: check IO_WQ_BIT_EXIT inside work run loop [+ + +]
Author: Jens Axboe <[email protected]>
Date:   Tue Jan 20 07:42:50 2026 -0700

    io_uring/io-wq: check IO_WQ_BIT_EXIT inside work run loop
    
    commit 10dc959398175736e495f71c771f8641e1ca1907 upstream.
    
    Currently this is checked before running the pending work. Normally this
    is quite fine, as work items either end up blocking (which will create a
    new worker for other items), or they complete fairly quickly. But syzbot
    reports an issue where io-wq takes seemingly forever to exit, and with a
    bit of debugging, this turns out to be because it queues a bunch of big
    (2GB - 4096b) reads with a /dev/msr* file. Since this file type doesn't
    support ->read_iter(), loop_rw_iter() ends up handling them. Each read
    returns 16MB of data read, which takes 20 (!!) seconds. With a bunch of
    these pending, processing the whole chain can take a long time. Easily
    longer than the syzbot uninterruptible sleep timeout of 140 seconds.
    This then triggers a complaint off the io-wq exit path:
    
    INFO: task syz.4.135:6326 blocked for more than 143 seconds.
          Not tainted syzkaller #0
          Blocked by coredump.
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    task:syz.4.135       state:D stack:26824 pid:6326  tgid:6324  ppid:5957   task_flags:0x400548 flags:0x00080000
    Call Trace:
     <TASK>
     context_switch kernel/sched/core.c:5256 [inline]
     __schedule+0x1139/0x6150 kernel/sched/core.c:6863
     __schedule_loop kernel/sched/core.c:6945 [inline]
     schedule+0xe7/0x3a0 kernel/sched/core.c:6960
     schedule_timeout+0x257/0x290 kernel/time/sleep_timeout.c:75
     do_wait_for_common kernel/sched/completion.c:100 [inline]
     __wait_for_common+0x2fc/0x4e0 kernel/sched/completion.c:121
     io_wq_exit_workers io_uring/io-wq.c:1328 [inline]
     io_wq_put_and_exit+0x271/0x8a0 io_uring/io-wq.c:1356
     io_uring_clean_tctx+0x10d/0x190 io_uring/tctx.c:203
     io_uring_cancel_generic+0x69c/0x9a0 io_uring/cancel.c:651
     io_uring_files_cancel include/linux/io_uring.h:19 [inline]
     do_exit+0x2ce/0x2bd0 kernel/exit.c:911
     do_group_exit+0xd3/0x2a0 kernel/exit.c:1112
     get_signal+0x2671/0x26d0 kernel/signal.c:3034
     arch_do_signal_or_restart+0x8f/0x7e0 arch/x86/kernel/signal.c:337
     __exit_to_user_mode_loop kernel/entry/common.c:41 [inline]
     exit_to_user_mode_loop+0x8c/0x540 kernel/entry/common.c:75
     __exit_to_user_mode_prepare include/linux/irq-entry-common.h:226 [inline]
     syscall_exit_to_user_mode_prepare include/linux/irq-entry-common.h:256 [inline]
     syscall_exit_to_user_mode_work include/linux/entry-common.h:159 [inline]
     syscall_exit_to_user_mode include/linux/entry-common.h:194 [inline]
     do_syscall_64+0x4ee/0xf80 arch/x86/entry/syscall_64.c:100
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7fa02738f749
    RSP: 002b:00007fa0281ae0e8 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca
    RAX: fffffffffffffe00 RBX: 00007fa0275e6098 RCX: 00007fa02738f749
    RDX: 0000000000000000 RSI: 0000000000000080 RDI: 00007fa0275e6098
    RBP: 00007fa0275e6090 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 00007fa0275e6128 R14: 00007fff14e4fcb0 R15: 00007fff14e4fd98
    
    There's really nothing wrong here, outside of processing these reads
    will take a LONG time. However, we can speed up the exit by checking the
    IO_WQ_BIT_EXIT inside the io_worker_handle_work() loop, as syzbot will
    exit the ring after queueing up all of these reads. Then once the first
    item is processed, io-wq will simply cancel the rest. That should avoid
    syzbot running into this complaint again.
    
    Cc: [email protected]
    Link: https://lore.kernel.org/all/[email protected]/
    Reported-by: [email protected]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
io_uring: move local task_work in exit cancel loop [+ + +]
Author: Ming Lei <[email protected]>
Date:   Wed Jan 14 16:54:05 2026 +0800

    io_uring: move local task_work in exit cancel loop
    
    commit da579f05ef0faada3559e7faddf761c75cdf85e1 upstream.
    
    With IORING_SETUP_DEFER_TASKRUN, task work is queued to ctx->work_llist
    (local work) rather than the fallback list. During io_ring_exit_work(),
    io_move_task_work_from_local() was called once before the cancel loop,
    moving work from work_llist to fallback_llist.
    
    However, task work can be added to work_llist during the cancel loop
    itself. There are two cases:
    
    1) io_kill_timeouts() is called from io_uring_try_cancel_requests() to
    cancel pending timeouts, and it adds task work via io_req_queue_tw_complete()
    for each cancelled timeout:
    
    2) URING_CMD requests like ublk can be completed via
    io_uring_cmd_complete_in_task() from ublk_queue_rq() during canceling,
    given ublk request queue is only quiesced when canceling the 1st uring_cmd.
    
    Since io_allowed_defer_tw_run() returns false in io_ring_exit_work()
    (kworker != submitter_task), io_run_local_work() is never invoked,
    and the work_llist entries are never processed. This causes
    io_uring_try_cancel_requests() to loop indefinitely, resulting in
    100% CPU usage in kworker threads.
    
    Fix this by moving io_move_task_work_from_local() inside the cancel
    loop, ensuring any work on work_llist is moved to fallback before
    each cancel attempt.
    
    Cc: [email protected]
    Fixes: c0e0d6ba25f1 ("io_uring: add IORING_SETUP_DEFER_TASKRUN")
    Signed-off-by: Ming Lei <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ip6_tunnel: use skb_vlan_inet_prepare() in __ip6_tnl_rcv() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Jan 7 16:31:09 2026 +0000

    ip6_tunnel: use skb_vlan_inet_prepare() in __ip6_tnl_rcv()
    
    [ Upstream commit 81c734dae203757fb3c9eee6f9896386940776bd ]
    
    Blamed commit did not take care of VLAN encapsulations
    as spotted by syzbot [1].
    
    Use skb_vlan_inet_prepare() instead of pskb_inet_may_pull().
    
    [1]
     BUG: KMSAN: uninit-value in __INET_ECN_decapsulate include/net/inet_ecn.h:253 [inline]
     BUG: KMSAN: uninit-value in INET_ECN_decapsulate include/net/inet_ecn.h:275 [inline]
     BUG: KMSAN: uninit-value in IP6_ECN_decapsulate+0x7a8/0x1fa0 include/net/inet_ecn.h:321
      __INET_ECN_decapsulate include/net/inet_ecn.h:253 [inline]
      INET_ECN_decapsulate include/net/inet_ecn.h:275 [inline]
      IP6_ECN_decapsulate+0x7a8/0x1fa0 include/net/inet_ecn.h:321
      ip6ip6_dscp_ecn_decapsulate+0x16f/0x1b0 net/ipv6/ip6_tunnel.c:729
      __ip6_tnl_rcv+0xed9/0x1b50 net/ipv6/ip6_tunnel.c:860
      ip6_tnl_rcv+0xc3/0x100 net/ipv6/ip6_tunnel.c:903
     gre_rcv+0x1529/0x1b90 net/ipv6/ip6_gre.c:-1
      ip6_protocol_deliver_rcu+0x1c89/0x2c60 net/ipv6/ip6_input.c:438
      ip6_input_finish+0x1f4/0x4a0 net/ipv6/ip6_input.c:489
      NF_HOOK include/linux/netfilter.h:318 [inline]
      ip6_input+0x9c/0x330 net/ipv6/ip6_input.c:500
      ip6_mc_input+0x7ca/0xc10 net/ipv6/ip6_input.c:590
      dst_input include/net/dst.h:474 [inline]
      ip6_rcv_finish+0x958/0x990 net/ipv6/ip6_input.c:79
      NF_HOOK include/linux/netfilter.h:318 [inline]
      ipv6_rcv+0xf1/0x3c0 net/ipv6/ip6_input.c:311
      __netif_receive_skb_one_core net/core/dev.c:6139 [inline]
      __netif_receive_skb+0x1df/0xac0 net/core/dev.c:6252
      netif_receive_skb_internal net/core/dev.c:6338 [inline]
      netif_receive_skb+0x57/0x630 net/core/dev.c:6397
      tun_rx_batched+0x1df/0x980 drivers/net/tun.c:1485
      tun_get_user+0x5c0e/0x6c60 drivers/net/tun.c:1953
      tun_chr_write_iter+0x3e9/0x5c0 drivers/net/tun.c:1999
      new_sync_write fs/read_write.c:593 [inline]
      vfs_write+0xbe2/0x15d0 fs/read_write.c:686
      ksys_write fs/read_write.c:738 [inline]
      __do_sys_write fs/read_write.c:749 [inline]
      __se_sys_write fs/read_write.c:746 [inline]
      __x64_sys_write+0x1fb/0x4d0 fs/read_write.c:746
      x64_sys_call+0x30ab/0x3e70 arch/x86/include/generated/asm/syscalls_64.h:2
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
      do_syscall_64+0xd3/0xf80 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Uninit was created at:
      slab_post_alloc_hook mm/slub.c:4960 [inline]
      slab_alloc_node mm/slub.c:5263 [inline]
      kmem_cache_alloc_node_noprof+0x9e7/0x17a0 mm/slub.c:5315
      kmalloc_reserve+0x13c/0x4b0 net/core/skbuff.c:586
      __alloc_skb+0x805/0x1040 net/core/skbuff.c:690
      alloc_skb include/linux/skbuff.h:1383 [inline]
      alloc_skb_with_frags+0xc5/0xa60 net/core/skbuff.c:6712
      sock_alloc_send_pskb+0xacc/0xc60 net/core/sock.c:2995
      tun_alloc_skb drivers/net/tun.c:1461 [inline]
      tun_get_user+0x1142/0x6c60 drivers/net/tun.c:1794
      tun_chr_write_iter+0x3e9/0x5c0 drivers/net/tun.c:1999
      new_sync_write fs/read_write.c:593 [inline]
      vfs_write+0xbe2/0x15d0 fs/read_write.c:686
      ksys_write fs/read_write.c:738 [inline]
      __do_sys_write fs/read_write.c:749 [inline]
      __se_sys_write fs/read_write.c:746 [inline]
      __x64_sys_write+0x1fb/0x4d0 fs/read_write.c:746
      x64_sys_call+0x30ab/0x3e70 arch/x86/include/generated/asm/syscalls_64.h:2
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
      do_syscall_64+0xd3/0xf80 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    CPU: 0 UID: 0 PID: 6465 Comm: syz.0.17 Not tainted syzkaller #0 PREEMPT(none)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025
    
    Fixes: 8d975c15c0cd ("ip6_tunnel: make sure to pull inner header in __ip6_tnl_rcv()")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    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]>

 
ipv4: ip_gre: make ipgre_header() robust [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Thu Jan 8 19:02:14 2026 +0000

    ipv4: ip_gre: make ipgre_header() robust
    
    [ Upstream commit e67c577d89894811ce4dcd1a9ed29d8b63476667 ]
    
    Analog to commit db5b4e39c4e6 ("ip6_gre: make ip6gre_header() robust")
    
    Over the years, syzbot found many ways to crash the kernel
    in ipgre_header() [1].
    
    This involves team or bonding drivers ability to dynamically
    change their dev->needed_headroom and/or dev->hard_header_len
    
    In this particular crash mld_newpack() allocated an skb
    with a too small reserve/headroom, and by the time mld_sendpack()
    was called, syzbot managed to attach an ipgre device.
    
    [1]
    skbuff: skb_under_panic: text:ffffffff89ea3cb7 len:2030915468 put:2030915372 head:ffff888058b43000 data:ffff887fdfa6e194 tail:0x120 end:0x6c0 dev:team0
     kernel BUG at net/core/skbuff.c:213 !
    Oops: invalid opcode: 0000 [#1] SMP KASAN PTI
    CPU: 1 UID: 0 PID: 1322 Comm: kworker/1:9 Not tainted syzkaller #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025
    Workqueue: mld mld_ifc_work
     RIP: 0010:skb_panic+0x157/0x160 net/core/skbuff.c:213
    Call Trace:
     <TASK>
      skb_under_panic net/core/skbuff.c:223 [inline]
      skb_push+0xc3/0xe0 net/core/skbuff.c:2641
      ipgre_header+0x67/0x290 net/ipv4/ip_gre.c:897
      dev_hard_header include/linux/netdevice.h:3436 [inline]
      neigh_connected_output+0x286/0x460 net/core/neighbour.c:1618
      NF_HOOK_COND include/linux/netfilter.h:307 [inline]
      ip6_output+0x340/0x550 net/ipv6/ip6_output.c:247
      NF_HOOK+0x9e/0x380 include/linux/netfilter.h:318
      mld_sendpack+0x8d4/0xe60 net/ipv6/mcast.c:1855
      mld_send_cr net/ipv6/mcast.c:2154 [inline]
      mld_ifc_work+0x83e/0xd60 net/ipv6/mcast.c:2693
      process_one_work kernel/workqueue.c:3257 [inline]
      process_scheduled_works+0xad1/0x1770 kernel/workqueue.c:3340
      worker_thread+0x8a0/0xda0 kernel/workqueue.c:3421
      kthread+0x711/0x8a0 kernel/kthread.c:463
      ret_from_fork+0x510/0xa50 arch/x86/kernel/process.c:158
      ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246
    
    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Reported-by: [email protected]
    Closes: https://www.spinics.net/lists/netdev/msg1147302.html
    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]>

 
ipv6: annotate data-race in ndisc_router_discovery() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sun Jan 18 15:29:41 2026 +0000

    ipv6: annotate data-race in ndisc_router_discovery()
    
    [ Upstream commit 9a063f96d87efc3a6cc667f8de096a3d38d74bb5 ]
    
    syzbot found that ndisc_router_discovery() could read and write
    in6_dev->ra_mtu without holding a lock [1]
    
    This looks fine, IFLA_INET6_RA_MTU is best effort.
    
    Add READ_ONCE()/WRITE_ONCE() to document the race.
    
    Note that we might also reject illegal MTU values
    (mtu < IPV6_MIN_MTU || mtu > skb->dev->mtu) in a future patch.
    
    [1]
    BUG: KCSAN: data-race in ndisc_router_discovery / ndisc_router_discovery
    
    read to 0xffff888119809c20 of 4 bytes by task 25817 on cpu 1:
      ndisc_router_discovery+0x151d/0x1c90 net/ipv6/ndisc.c:1558
      ndisc_rcv+0x2ad/0x3d0 net/ipv6/ndisc.c:1841
      icmpv6_rcv+0xe5a/0x12f0 net/ipv6/icmp.c:989
      ip6_protocol_deliver_rcu+0xb2a/0x10d0 net/ipv6/ip6_input.c:438
      ip6_input_finish+0xf0/0x1d0 net/ipv6/ip6_input.c:489
      NF_HOOK include/linux/netfilter.h:318 [inline]
      ip6_input+0x5e/0x140 net/ipv6/ip6_input.c:500
      ip6_mc_input+0x27c/0x470 net/ipv6/ip6_input.c:590
      dst_input include/net/dst.h:474 [inline]
      ip6_rcv_finish+0x336/0x340 net/ipv6/ip6_input.c:79
    ...
    
    write to 0xffff888119809c20 of 4 bytes by task 25816 on cpu 0:
      ndisc_router_discovery+0x155a/0x1c90 net/ipv6/ndisc.c:1559
      ndisc_rcv+0x2ad/0x3d0 net/ipv6/ndisc.c:1841
      icmpv6_rcv+0xe5a/0x12f0 net/ipv6/icmp.c:989
      ip6_protocol_deliver_rcu+0xb2a/0x10d0 net/ipv6/ip6_input.c:438
      ip6_input_finish+0xf0/0x1d0 net/ipv6/ip6_input.c:489
      NF_HOOK include/linux/netfilter.h:318 [inline]
      ip6_input+0x5e/0x140 net/ipv6/ip6_input.c:500
      ip6_mc_input+0x27c/0x470 net/ipv6/ip6_input.c:590
      dst_input include/net/dst.h:474 [inline]
      ip6_rcv_finish+0x336/0x340 net/ipv6/ip6_input.c:79
    ...
    
    value changed: 0x00000000 -> 0xe5400659
    
    Fixes: 49b99da2c9ce ("ipv6: add IFLA_INET6_RA_MTU to expose mtu value")
    Reported-by: syzbot <[email protected]>
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Rocco Yue <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ipv6: Fix use-after-free in inet6_addr_del(). [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Tue Jan 13 01:05:08 2026 +0000

    ipv6: Fix use-after-free in inet6_addr_del().
    
    [ Upstream commit ddf96c393a33aef4887e2e406c76c2f8cda1419c ]
    
    syzbot reported use-after-free of inet6_ifaddr in
    inet6_addr_del(). [0]
    
    The cited commit accidentally moved ipv6_del_addr() for
    mngtmpaddr before reading its ifp->flags for temporary
    addresses in inet6_addr_del().
    
    Let's move ipv6_del_addr() down to fix the UAF.
    
    [0]:
    BUG: KASAN: slab-use-after-free in inet6_addr_del.constprop.0+0x67a/0x6b0 net/ipv6/addrconf.c:3117
    Read of size 4 at addr ffff88807b89c86c by task syz.3.1618/9593
    
    CPU: 0 UID: 0 PID: 9593 Comm: syz.3.1618 Not tainted syzkaller #0 PREEMPT(full)
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
     print_address_description mm/kasan/report.c:378 [inline]
     print_report+0xcd/0x630 mm/kasan/report.c:482
     kasan_report+0xe0/0x110 mm/kasan/report.c:595
     inet6_addr_del.constprop.0+0x67a/0x6b0 net/ipv6/addrconf.c:3117
     addrconf_del_ifaddr+0x11e/0x190 net/ipv6/addrconf.c:3181
     inet6_ioctl+0x1e5/0x2b0 net/ipv6/af_inet6.c:582
     sock_do_ioctl+0x118/0x280 net/socket.c:1254
     sock_ioctl+0x227/0x6b0 net/socket.c:1375
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:597 [inline]
     __se_sys_ioctl fs/ioctl.c:583 [inline]
     __x64_sys_ioctl+0x18e/0x210 fs/ioctl.c:583
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xcd/0xf80 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    RIP: 0033:0x7f164cf8f749
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 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 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f164de64038 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 00007f164d1e5fa0 RCX: 00007f164cf8f749
    RDX: 0000200000000000 RSI: 0000000000008936 RDI: 0000000000000003
    RBP: 00007f164d013f91 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
    R13: 00007f164d1e6038 R14: 00007f164d1e5fa0 R15: 00007ffde15c8288
     </TASK>
    
    Allocated by task 9593:
     kasan_save_stack+0x33/0x60 mm/kasan/common.c:56
     kasan_save_track+0x14/0x30 mm/kasan/common.c:77
     poison_kmalloc_redzone mm/kasan/common.c:397 [inline]
     __kasan_kmalloc+0xaa/0xb0 mm/kasan/common.c:414
     kmalloc_noprof include/linux/slab.h:957 [inline]
     kzalloc_noprof include/linux/slab.h:1094 [inline]
     ipv6_add_addr+0x4e3/0x2010 net/ipv6/addrconf.c:1120
     inet6_addr_add+0x256/0x9b0 net/ipv6/addrconf.c:3050
     addrconf_add_ifaddr+0x1fc/0x450 net/ipv6/addrconf.c:3160
     inet6_ioctl+0x103/0x2b0 net/ipv6/af_inet6.c:580
     sock_do_ioctl+0x118/0x280 net/socket.c:1254
     sock_ioctl+0x227/0x6b0 net/socket.c:1375
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:597 [inline]
     __se_sys_ioctl fs/ioctl.c:583 [inline]
     __x64_sys_ioctl+0x18e/0x210 fs/ioctl.c:583
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xcd/0xf80 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 6099:
     kasan_save_stack+0x33/0x60 mm/kasan/common.c:56
     kasan_save_track+0x14/0x30 mm/kasan/common.c:77
     kasan_save_free_info+0x3b/0x60 mm/kasan/generic.c:584
     poison_slab_object mm/kasan/common.c:252 [inline]
     __kasan_slab_free+0x5f/0x80 mm/kasan/common.c:284
     kasan_slab_free include/linux/kasan.h:234 [inline]
     slab_free_hook mm/slub.c:2540 [inline]
     slab_free_freelist_hook mm/slub.c:2569 [inline]
     slab_free_bulk mm/slub.c:6696 [inline]
     kmem_cache_free_bulk mm/slub.c:7383 [inline]
     kmem_cache_free_bulk+0x2bf/0x680 mm/slub.c:7362
     kfree_bulk include/linux/slab.h:830 [inline]
     kvfree_rcu_bulk+0x1b7/0x1e0 mm/slab_common.c:1523
     kvfree_rcu_drain_ready mm/slab_common.c:1728 [inline]
     kfree_rcu_monitor+0x1d0/0x2f0 mm/slab_common.c:1801
     process_one_work+0x9ba/0x1b20 kernel/workqueue.c:3257
     process_scheduled_works kernel/workqueue.c:3340 [inline]
     worker_thread+0x6c8/0xf10 kernel/workqueue.c:3421
     kthread+0x3c5/0x780 kernel/kthread.c:463
     ret_from_fork+0x983/0xb10 arch/x86/kernel/process.c:158
     ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246
    
    Fixes: 00b5b7aab9e42 ("net/ipv6: delete temporary address if mngtmpaddr is removed or unmanaged")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-by: Hangbin Liu <[email protected]>
    Reviewed-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]>

 
ipvlan: Make the addrs_lock be per port [+ + +]
Author: Dmitry Skorodumov <[email protected]>
Date:   Mon Jan 12 17:24:06 2026 +0300

    ipvlan: Make the addrs_lock be per port
    
    [ Upstream commit d3ba32162488283c0a4c5bedd8817aec91748802 ]
    
    Make the addrs_lock be per port, not per ipvlan dev.
    
    Initial code seems to be written in the assumption,
    that any address change must occur under RTNL.
    But it is not so for the case of IPv6. So
    
    1) Introduce per-port addrs_lock.
    
    2) It was needed to fix places where it was forgotten
    to take lock (ipvlan_open/ipvlan_close)
    
    This appears to be a very minor problem though.
    Since it's highly unlikely that ipvlan_add_addr() will
    be called on 2 CPU simultaneously. But nevertheless,
    this could cause:
    
    1) False-negative of ipvlan_addr_busy(): one interface
    iterated through all port->ipvlans + ipvlan->addrs
    under some ipvlan spinlock, and another added IP
    under its own lock. Though this is only possible
    for IPv6, since looks like only ipvlan_addr6_event() can be
    called without rtnl_lock.
    
    2) Race since ipvlan_ht_addr_add(port) is called under
    different ipvlan->addrs_lock locks
    
    This should not affect performance, since add/remove IP
    is a rare situation and spinlock is not taken on fast
    paths.
    
    Fixes: 8230819494b3 ("ipvlan: use per device spinlock to protect addrs list updates")
    Signed-off-by: Dmitry Skorodumov <[email protected]>
    Reviewed-by: Paolo Abeni <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
irqchip/gic-v3-its: Avoid truncating memory addresses [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Mon Jan 19 21:15:12 2026 +0100

    irqchip/gic-v3-its: Avoid truncating memory addresses
    
    commit 8d76a7d89c12d08382b66e2f21f20d0627d14859 upstream.
    
    On 32-bit machines with CONFIG_ARM_LPAE, it is possible for lowmem
    allocations to be backed by addresses physical memory above the 32-bit
    address limit, as found while experimenting with larger VMSPLIT
    configurations.
    
    This caused the qemu virt model to crash in the GICv3 driver, which
    allocates the 'itt' object using GFP_KERNEL. Since all memory below
    the 4GB physical address limit is in ZONE_DMA in this configuration,
    kmalloc() defaults to higher addresses for ZONE_NORMAL, and the
    ITS driver stores the physical address in a 32-bit 'unsigned long'
    variable.
    
    Change the itt_addr variable to the correct phys_addr_t type instead,
    along with all other variables in this driver that hold a physical
    address.
    
    The gicv5 driver correctly uses u64 variables, while all other irqchip
    drivers don't call virt_to_phys or similar interfaces. It's expected that
    other device drivers have similar issues, but fixing this one is
    sufficient for booting a virtio based guest.
    
    Fixes: cc2d3216f53c ("irqchip: GICv3: ITS command queue")
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Thomas Gleixner <[email protected]>
    Reviewed-by: Marc Zyngier <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
kconfig: fix static linking of nconf [+ + +]
Author: Arkadiusz Kozdra <[email protected]>
Date:   Sat Jan 10 12:48:08 2026 +0100

    kconfig: fix static linking of nconf
    
    [ Upstream commit baaecfcac559bcac73206df447eb5c385fa22f2a ]
    
    When running make nconfig with a static linking host toolchain,
    the libraries are linked in an incorrect order,
    resulting in errors similar to the following:
    
    $ MAKEFLAGS='HOSTCC=cc\ -static' make nconfig
    /usr/bin/ld: /usr/lib64/gcc/x86_64-unknown-linux-gnu/14.2.1/../../../../lib64/libpanel.a(p_new.o): in function `new_panel':
    (.text+0x13): undefined reference to `_nc_panelhook_sp'
    /usr/bin/ld: (.text+0x6c): undefined reference to `_nc_panelhook_sp'
    
    Fixes: 1c5af5cf9308 ("kconfig: refactor ncurses package checks for building mconf and nconf")
    Signed-off-by: Arusekk <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    [nsc: Added comment about library order]
    Signed-off-by: Nicolas Schier <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ksmbd: fix use-after-free in ksmbd_session_rpc_open [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Tue Jan 27 16:31:49 2026 +0800

    ksmbd: fix use-after-free in ksmbd_session_rpc_open
    
    [ Upstream commit a1f46c99d9ea411f9bf30025b912d881d36fc709 ]
    
    A UAF issue can occur due to a race condition between
    ksmbd_session_rpc_open() and __session_rpc_close().
    Add rpc_lock to the session to protect it.
    
    Cc: [email protected]
    Reported-by: Norbert Szetei <[email protected]>
    Tested-by: Norbert Szetei <[email protected]>
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    [ KSMBD_DEFAULT_GFP is introduced by commit 0066f623bce8 ("ksmbd: use __GFP_RETRY_MAYFAIL")
     after linux-6.13. Here we still use GFP_KERNEL. ]
    Signed-off-by: Li hongliang <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
l2tp: avoid one data-race in l2tp_tunnel_del_work() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Thu Jan 15 09:21:39 2026 +0000

    l2tp: avoid one data-race in l2tp_tunnel_del_work()
    
    [ Upstream commit 7a29f6bf60f2590fe5e9c4decb451e19afad2bcf ]
    
    We should read sk->sk_socket only when dealing with kernel sockets.
    
    syzbot reported the following data-race:
    
    BUG: KCSAN: data-race in l2tp_tunnel_del_work / sk_common_release
    
    write to 0xffff88811c182b20 of 8 bytes by task 5365 on cpu 0:
      sk_set_socket include/net/sock.h:2092 [inline]
      sock_orphan include/net/sock.h:2118 [inline]
      sk_common_release+0xae/0x230 net/core/sock.c:4003
      udp_lib_close+0x15/0x20 include/net/udp.h:325
      inet_release+0xce/0xf0 net/ipv4/af_inet.c:437
      __sock_release net/socket.c:662 [inline]
      sock_close+0x6b/0x150 net/socket.c:1455
      __fput+0x29b/0x650 fs/file_table.c:468
      ____fput+0x1c/0x30 fs/file_table.c:496
      task_work_run+0x131/0x1a0 kernel/task_work.c:233
      resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
      __exit_to_user_mode_loop kernel/entry/common.c:44 [inline]
      exit_to_user_mode_loop+0x1fe/0x740 kernel/entry/common.c:75
      __exit_to_user_mode_prepare include/linux/irq-entry-common.h:226 [inline]
      syscall_exit_to_user_mode_prepare include/linux/irq-entry-common.h:256 [inline]
      syscall_exit_to_user_mode_work include/linux/entry-common.h:159 [inline]
      syscall_exit_to_user_mode include/linux/entry-common.h:194 [inline]
      do_syscall_64+0x1e1/0x2b0 arch/x86/entry/syscall_64.c:100
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    read to 0xffff88811c182b20 of 8 bytes by task 827 on cpu 1:
      l2tp_tunnel_del_work+0x2f/0x1a0 net/l2tp/l2tp_core.c:1418
      process_one_work kernel/workqueue.c:3257 [inline]
      process_scheduled_works+0x4ce/0x9d0 kernel/workqueue.c:3340
      worker_thread+0x582/0x770 kernel/workqueue.c:3421
      kthread+0x489/0x510 kernel/kthread.c:463
      ret_from_fork+0x149/0x290 arch/x86/kernel/process.c:158
      ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246
    
    value changed: 0xffff88811b818000 -> 0x0000000000000000
    
    Fixes: d00fa9adc528 ("l2tp: fix races with tunnel socket close")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: James Chapman <[email protected]>
    Reviewed-by: Guillaume Nault <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
leds: led-class: Only Add LED to leds_list when it is fully ready [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Thu Dec 11 17:37:27 2025 +0100

    leds: led-class: Only Add LED to leds_list when it is fully ready
    
    commit d1883cefd31752f0504b94c3bcfa1f6d511d6e87 upstream.
    
    Before this change the LED was added to leds_list before led_init_core()
    gets called adding it the list before led_classdev.set_brightness_work gets
    initialized.
    
    This leaves a window where led_trigger_register() of a LED's default
    trigger will call led_trigger_set() which calls led_set_brightness()
    which in turn will end up queueing the *uninitialized*
    led_classdev.set_brightness_work.
    
    This race gets hit by the lenovo-thinkpad-t14s EC driver which registers
    2 LEDs with a default trigger provided by snd_ctl_led.ko in quick
    succession. The first led_classdev_register() causes an async modprobe of
    snd_ctl_led to run and that async modprobe manages to exactly hit
    the window where the second LED is on the leds_list without led_init_core()
    being called for it, resulting in:
    
     ------------[ cut here ]------------
     WARNING: CPU: 11 PID: 5608 at kernel/workqueue.c:4234 __flush_work+0x344/0x390
     Hardware name: LENOVO 21N2S01F0B/21N2S01F0B, BIOS N42ET93W (2.23 ) 09/01/2025
     ...
     Call trace:
      __flush_work+0x344/0x390 (P)
      flush_work+0x2c/0x50
      led_trigger_set+0x1c8/0x340
      led_trigger_register+0x17c/0x1c0
      led_trigger_register_simple+0x84/0xe8
      snd_ctl_led_init+0x40/0xf88 [snd_ctl_led]
      do_one_initcall+0x5c/0x318
      do_init_module+0x9c/0x2b8
      load_module+0x7e0/0x998
    
    Close the race window by moving the adding of the LED to leds_list to
    after the led_init_core() call.
    
    Cc: [email protected]
    Fixes: d23a22a74fde ("leds: delay led_set_brightness if stopping soft-blink")
    Signed-off-by: Hans de Goede <[email protected]>
    Reviewed-by: Sebastian Reichel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Lee Jones <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Linux: Linux 6.6.122 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Fri Jan 30 10:27:43 2026 +0100

    Linux 6.6.122
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Brett A C Sheffield <[email protected]>
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Shung-Hsi Yu <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: Slade Watkins <[email protected]>
    Tested-by: Francesco Dolcini <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Miguel Ojeda <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
LoongArch: Fix PMU counter allocation for mixed-type event groups [+ + +]
Author: Lisa Robinson <[email protected]>
Date:   Sat Jan 17 10:56:43 2026 +0800

    LoongArch: Fix PMU counter allocation for mixed-type event groups
    
    commit a91f86e27087f250a5d9c89bb4a427b9c30fd815 upstream.
    
    When validating a perf event group, validate_group() unconditionally
    attempts to allocate hardware PMU counters for the leader, sibling
    events and the new event being added.
    
    This is incorrect for mixed-type groups. If a PERF_TYPE_SOFTWARE event
    is part of the group, the current code still tries to allocate a hardware
    PMU counter for it, which can wrongly consume hardware PMU resources and
    cause spurious allocation failures.
    
    Fix this by only allocating PMU counters for hardware events during group
    validation, and skipping software events.
    
    A trimmed down reproducer is as simple as this:
    
      #include <stdio.h>
      #include <assert.h>
      #include <unistd.h>
      #include <string.h>
      #include <sys/syscall.h>
      #include <linux/perf_event.h>
    
      int main (int argc, char *argv[])
      {
            struct perf_event_attr attr = { 0 };
            int fds[5];
    
            attr.disabled = 1;
            attr.exclude_kernel = 1;
            attr.exclude_hv = 1;
            attr.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED |
                    PERF_FORMAT_TOTAL_TIME_RUNNING | PERF_FORMAT_ID | PERF_FORMAT_GROUP;
            attr.size = sizeof (attr);
    
            attr.type = PERF_TYPE_SOFTWARE;
            attr.config = PERF_COUNT_SW_DUMMY;
            fds[0] = syscall (SYS_perf_event_open, &attr, 0, -1, -1, 0);
            assert (fds[0] >= 0);
    
            attr.type = PERF_TYPE_HARDWARE;
            attr.config = PERF_COUNT_HW_CPU_CYCLES;
            fds[1] = syscall (SYS_perf_event_open, &attr, 0, -1, fds[0], 0);
            assert (fds[1] >= 0);
    
            attr.type = PERF_TYPE_HARDWARE;
            attr.config = PERF_COUNT_HW_INSTRUCTIONS;
            fds[2] = syscall (SYS_perf_event_open, &attr, 0, -1, fds[0], 0);
            assert (fds[2] >= 0);
    
            attr.type = PERF_TYPE_HARDWARE;
            attr.config = PERF_COUNT_HW_BRANCH_MISSES;
            fds[3] = syscall (SYS_perf_event_open, &attr, 0, -1, fds[0], 0);
            assert (fds[3] >= 0);
    
            attr.type = PERF_TYPE_HARDWARE;
            attr.config = PERF_COUNT_HW_CACHE_REFERENCES;
            fds[4] = syscall (SYS_perf_event_open, &attr, 0, -1, fds[0], 0);
            assert (fds[4] >= 0);
    
            printf ("PASSED\n");
    
            return 0;
      }
    
    Cc: [email protected]
    Fixes: b37042b2bb7c ("LoongArch: Add perf events support")
    Signed-off-by: Lisa Robinson <[email protected]>
    Signed-off-by: Huacai Chen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
macvlan: fix possible UAF in macvlan_forward_source() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Thu Jan 8 13:36:51 2026 +0000

    macvlan: fix possible UAF in macvlan_forward_source()
    
    [ Upstream commit 7470a7a63dc162f07c26dbf960e41ee1e248d80e ]
    
    Add RCU protection on (struct macvlan_source_entry)->vlan.
    
    Whenever macvlan_hash_del_source() is called, we must clear
    entry->vlan pointer before RCU grace period starts.
    
    This allows macvlan_forward_source() to skip over
    entries queued for freeing.
    
    Note that macvlan_dev are already RCU protected, as they
    are embedded in a standard netdev (netdev_priv(ndev)).
    
    Fixes: 79cf79abce71 ("macvlan: add source mode")
    Reported-by: [email protected]
    https: //lore.kernel.org/netdev/[email protected]/T/#u
    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]>

 
migrate: correct lock ordering for hugetlb file folios [+ + +]
Author: Matthew Wilcox (Oracle) <[email protected]>
Date:   Fri Jan 9 04:13:42 2026 +0000

    migrate: correct lock ordering for hugetlb file folios
    
    commit b7880cb166ab62c2409046b2347261abf701530e upstream.
    
    Syzbot has found a deadlock (analyzed by Lance Yang):
    
    1) Task (5749): Holds folio_lock, then tries to acquire i_mmap_rwsem(read lock).
    2) Task (5754): Holds i_mmap_rwsem(write lock), then tries to acquire
    folio_lock.
    
    migrate_pages()
      -> migrate_hugetlbs()
        -> unmap_and_move_huge_page()     <- Takes folio_lock!
          -> remove_migration_ptes()
            -> __rmap_walk_file()
              -> i_mmap_lock_read()       <- Waits for i_mmap_rwsem(read lock)!
    
    hugetlbfs_fallocate()
      -> hugetlbfs_punch_hole()           <- Takes i_mmap_rwsem(write lock)!
        -> hugetlbfs_zero_partial_page()
         -> filemap_lock_hugetlb_folio()
          -> filemap_lock_folio()
            -> __filemap_get_folio        <- Waits for folio_lock!
    
    The migration path is the one taking locks in the wrong order according to
    the documentation at the top of mm/rmap.c.  So expand the scope of the
    existing i_mmap_lock to cover the calls to remove_migration_ptes() too.
    
    This is (mostly) how it used to be after commit c0d0381ade79.  That was
    removed by 336bf30eb765 for both file & anon hugetlb pages when it should
    only have been removed for anon hugetlb pages.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Matthew Wilcox (Oracle) <[email protected]>
    Fixes: 336bf30eb765 ("hugetlbfs: fix anon huge page migration race")
    Reported-by: [email protected]
    Link: https://lore.kernel.org/all/[email protected]
    Debugged-by: Lance Yang <[email protected]>
    Acked-by: David Hildenbrand (Red Hat) <[email protected]>
    Acked-by: Zi Yan <[email protected]>
    Cc: Alistair Popple <[email protected]>
    Cc: Byungchul Park <[email protected]>
    Cc: Gregory Price <[email protected]>
    Cc: Jann Horn <[email protected]>
    Cc: Joshua Hahn <[email protected]>
    Cc: Liam Howlett <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: Matthew Brost <[email protected]>
    Cc: Rakie Kim <[email protected]>
    Cc: Rik van Riel <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: Ying Huang <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mISDN: annotate data-race around dev->work [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Sun Jan 18 13:25:28 2026 +0000

    mISDN: annotate data-race around dev->work
    
    [ Upstream commit 8175dbf174d487afab81e936a862a8d9b8a1ccb6 ]
    
    dev->work can re read locklessly in mISDN_read()
    and mISDN_poll(). Add READ_ONCE()/WRITE_ONCE() annotations.
    
    BUG: KCSAN: data-race in mISDN_ioctl / mISDN_read
    
    write to 0xffff88812d848280 of 4 bytes by task 10864 on cpu 1:
      misdn_add_timer drivers/isdn/mISDN/timerdev.c:175 [inline]
      mISDN_ioctl+0x2fb/0x550 drivers/isdn/mISDN/timerdev.c:233
      vfs_ioctl fs/ioctl.c:51 [inline]
      __do_sys_ioctl fs/ioctl.c:597 [inline]
      __se_sys_ioctl+0xce/0x140 fs/ioctl.c:583
      __x64_sys_ioctl+0x43/0x50 fs/ioctl.c:583
      x64_sys_call+0x14b0/0x3000 arch/x86/include/generated/asm/syscalls_64.h:17
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
      do_syscall_64+0xd8/0x2c0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    read to 0xffff88812d848280 of 4 bytes by task 10857 on cpu 0:
      mISDN_read+0x1f2/0x470 drivers/isdn/mISDN/timerdev.c:112
      do_loop_readv_writev fs/read_write.c:847 [inline]
      vfs_readv+0x3fb/0x690 fs/read_write.c:1020
      do_readv+0xe7/0x210 fs/read_write.c:1080
      __do_sys_readv fs/read_write.c:1165 [inline]
      __se_sys_readv fs/read_write.c:1162 [inline]
      __x64_sys_readv+0x45/0x50 fs/read_write.c:1162
      x64_sys_call+0x2831/0x3000 arch/x86/include/generated/asm/syscalls_64.h:20
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
      do_syscall_64+0xd8/0x2c0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    value changed: 0x00000000 -> 0x00000001
    
    Fixes: 1b2b03f8e514 ("Add mISDN core files")
    Reported-by: syzbot <[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]>

 
mm, kfence: describe @slab parameter in __kfence_obj_info() [+ + +]
Author: Bagas Sanjaya <[email protected]>
Date:   Fri Dec 19 08:40:07 2025 +0700

    mm, kfence: describe @slab parameter in __kfence_obj_info()
    
    [ Upstream commit 6cfab50e1440fde19af7c614aacd85e11aa4dcea ]
    
    Sphinx reports kernel-doc warning:
    
    WARNING: ./include/linux/kfence.h:220 function parameter 'slab' not described in '__kfence_obj_info'
    
    Fix it by describing @slab parameter.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 2dfe63e61cc3 ("mm, kfence: support kmem_dump_obj() for KFENCE objects")
    Signed-off-by: Bagas Sanjaya <[email protected]>
    Acked-by: Marco Elver <[email protected]>
    Acked-by: David Hildenbrand (Red Hat) <[email protected]>
    Acked-by: Harry Yoo <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mm/damon/sysfs-scheme: cleanup access_pattern subdirs on scheme dir setup failure [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Wed Dec 24 18:30:37 2025 -0800

    mm/damon/sysfs-scheme: cleanup access_pattern subdirs on scheme dir setup failure
    
    commit 392b3d9d595f34877dd745b470c711e8ebcd225c upstream.
    
    When a DAMOS-scheme DAMON sysfs directory setup fails after setup of
    access_pattern/ directory, subdirectories of access_pattern/ directory are
    not cleaned up.  As a result, DAMON sysfs interface is nearly broken until
    the system reboots, and the memory for the unremoved directory is leaked.
    
    Cleanup the directories under such failures.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 9bbb820a5bd5 ("mm/damon/sysfs: support DAMOS quotas")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: chongjiapeng <[email protected]>
    Cc: <[email protected]> # 5.18.x
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: SeongJae Park <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm/damon/sysfs-scheme: cleanup quotas subdirs on scheme dir setup failure [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Wed Dec 24 18:30:36 2025 -0800

    mm/damon/sysfs-scheme: cleanup quotas subdirs on scheme dir setup failure
    
    commit dc7e1d75fd8c505096d0cddeca9e2efb2b55aaf9 upstream.
    
    When a DAMOS-scheme DAMON sysfs directory setup fails after setup of
    quotas/ directory, subdirectories of quotas/ directory are not cleaned up.
    As a result, DAMON sysfs interface is nearly broken until the system
    reboots, and the memory for the unremoved directory is leaked.
    
    Cleanup the directories under such failures.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 1b32234ab087 ("mm/damon/sysfs: support DAMOS watermarks")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: chongjiapeng <[email protected]>
    Cc: <[email protected]> # 5.18.x
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/damon/sysfs: cleanup attrs subdirs on context dir setup failure [+ + +]
Author: SeongJae Park <[email protected]>
Date:   Wed Dec 24 18:30:35 2025 -0800

    mm/damon/sysfs: cleanup attrs subdirs on context dir setup failure
    
    commit 9814cc832b88bd040fc2a1817c2b5469d0f7e862 upstream.
    
    When a context DAMON sysfs directory setup is failed after setup of attrs/
    directory, subdirectories of attrs/ directory are not cleaned up.  As a
    result, DAMON sysfs interface is nearly broken until the system reboots,
    and the memory for the unremoved directory is leaked.
    
    Cleanup the directories under such failures.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: c951cd3b8901 ("mm/damon: implement a minimal stub for sysfs-based DAMON interface")
    Signed-off-by: SeongJae Park <[email protected]>
    Cc: chongjiapeng <[email protected]>
    Cc: <[email protected]> # 5.18.x
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/page_alloc: make percpu_pagelist_high_fraction reads lock-free [+ + +]
Author: Aboorva Devarajan <[email protected]>
Date:   Mon Dec 1 11:30:09 2025 +0530

    mm/page_alloc: make percpu_pagelist_high_fraction reads lock-free
    
    commit b9efe36b5e3eb2e91aa3d706066428648af034fc upstream.
    
    When page isolation loops indefinitely during memory offline, reading
    /proc/sys/vm/percpu_pagelist_high_fraction blocks on pcp_batch_high_lock,
    causing hung task warnings.
    
    Make procfs reads lock-free since percpu_pagelist_high_fraction is a
    simple integer with naturally atomic reads, writers still serialize via
    the mutex.
    
    This prevents hung task warnings when reading the procfs file during
    long-running memory offline operations.
    
    [[email protected]: add comment, per Michal]
      Link: https://lkml.kernel.org/r/aS_y9AuJQFydLEXo@tiehlicka
    Link: https://lkml.kernel.org/r/[email protected]
    Signed-off-by: Aboorva Devarajan <[email protected]>
    Acked-by: Michal Hocko <[email protected]>
    Cc: Brendan Jackman <[email protected]>
    Cc: Johannes Weiner <[email protected]>
    Cc: Suren Baghdasaryan <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: Zi Yan <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mm/page_alloc: prevent pcp corruption with SMP=n [+ + +]
Author: Vlastimil Babka <[email protected]>
Date:   Wed Jan 21 07:03:39 2026 -0500

    mm/page_alloc: prevent pcp corruption with SMP=n
    
    [ Upstream commit 038a102535eb49e10e93eafac54352fcc5d78847 ]
    
    The kernel test robot has reported:
    
     BUG: spinlock trylock failure on UP on CPU#0, kcompactd0/28
      lock: 0xffff888807e35ef0, .magic: dead4ead, .owner: kcompactd0/28, .owner_cpu: 0
     CPU: 0 UID: 0 PID: 28 Comm: kcompactd0 Not tainted 6.18.0-rc5-00127-ga06157804399 #1 PREEMPT  8cc09ef94dcec767faa911515ce9e609c45db470
     Call Trace:
      <IRQ>
      __dump_stack (lib/dump_stack.c:95)
      dump_stack_lvl (lib/dump_stack.c:123)
      dump_stack (lib/dump_stack.c:130)
      spin_dump (kernel/locking/spinlock_debug.c:71)
      do_raw_spin_trylock (kernel/locking/spinlock_debug.c:?)
      _raw_spin_trylock (include/linux/spinlock_api_smp.h:89 kernel/locking/spinlock.c:138)
      __free_frozen_pages (mm/page_alloc.c:2973)
      ___free_pages (mm/page_alloc.c:5295)
      __free_pages (mm/page_alloc.c:5334)
      tlb_remove_table_rcu (include/linux/mm.h:? include/linux/mm.h:3122 include/asm-generic/tlb.h:220 mm/mmu_gather.c:227 mm/mmu_gather.c:290)
      ? __cfi_tlb_remove_table_rcu (mm/mmu_gather.c:289)
      ? rcu_core (kernel/rcu/tree.c:?)
      rcu_core (include/linux/rcupdate.h:341 kernel/rcu/tree.c:2607 kernel/rcu/tree.c:2861)
      rcu_core_si (kernel/rcu/tree.c:2879)
      handle_softirqs (arch/x86/include/asm/jump_label.h:36 include/trace/events/irq.h:142 kernel/softirq.c:623)
      __irq_exit_rcu (arch/x86/include/asm/jump_label.h:36 kernel/softirq.c:725)
      irq_exit_rcu (kernel/softirq.c:741)
      sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1052)
      </IRQ>
      <TASK>
     RIP: 0010:_raw_spin_unlock_irqrestore (arch/x86/include/asm/preempt.h:95 include/linux/spinlock_api_smp.h:152 kernel/locking/spinlock.c:194)
      free_pcppages_bulk (mm/page_alloc.c:1494)
      drain_pages_zone (include/linux/spinlock.h:391 mm/page_alloc.c:2632)
      __drain_all_pages (mm/page_alloc.c:2731)
      drain_all_pages (mm/page_alloc.c:2747)
      kcompactd (mm/compaction.c:3115)
      kthread (kernel/kthread.c:465)
      ? __cfi_kcompactd (mm/compaction.c:3166)
      ? __cfi_kthread (kernel/kthread.c:412)
      ret_from_fork (arch/x86/kernel/process.c:164)
      ? __cfi_kthread (kernel/kthread.c:412)
      ret_from_fork_asm (arch/x86/entry/entry_64.S:255)
      </TASK>
    
    Matthew has analyzed the report and identified that in drain_page_zone()
    we are in a section protected by spin_lock(&pcp->lock) and then get an
    interrupt that attempts spin_trylock() on the same lock.  The code is
    designed to work this way without disabling IRQs and occasionally fail the
    trylock with a fallback.  However, the SMP=n spinlock implementation
    assumes spin_trylock() will always succeed, and thus it's normally a
    no-op.  Here the enabled lock debugging catches the problem, but otherwise
    it could cause a corruption of the pcp structure.
    
    The problem has been introduced by commit 574907741599 ("mm/page_alloc:
    leave IRQs enabled for per-cpu page allocations").  The pcp locking scheme
    recognizes the need for disabling IRQs to prevent nesting spin_trylock()
    sections on SMP=n, but the need to prevent the nesting in spin_lock() has
    not been recognized.  Fix it by introducing local wrappers that change the
    spin_lock() to spin_lock_iqsave() with SMP=n and use them in all places
    that do spin_lock(&pcp->lock).
    
    [[email protected]: add pcp_ prefix to the spin_lock_irqsave wrappers, per Steven]
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 574907741599 ("mm/page_alloc: leave IRQs enabled for per-cpu page allocations")
    Signed-off-by: Vlastimil Babka <[email protected]>
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-lkp/[email protected]
    Analyzed-by: Matthew Wilcox <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]/
    Acked-by: Mel Gorman <[email protected]>
    Cc: Brendan Jackman <[email protected]>
    Cc: Johannes Weiner <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Cc: Sebastian Andrzej Siewior <[email protected]>
    Cc: Steven Rostedt <[email protected]>
    Cc: Suren Baghdasaryan <[email protected]>
    Cc: Zi Yan <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    [ drop changes to decay_pcp_high() and zone_pcp_update_cacheinfo() ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm/rmap: fix two comments related to huge_pmd_unshare() [+ + +]
Author: David Hildenbrand (Red Hat) <[email protected]>
Date:   Mon Jan 26 12:55:51 2026 -0500

    mm/rmap: fix two comments related to huge_pmd_unshare()
    
    [ Upstream commit a8682d500f691b6dfaa16ae1502d990aeb86e8be ]
    
    PMD page table unsharing no longer touches the refcount of a PMD page
    table.  Also, it is not about dropping the refcount of a "PMD page" but
    the "PMD page table".
    
    Let's just simplify by saying that the PMD page table was unmapped,
    consequently also unmapping the folio that was mapped into this page.
    
    This code should be deduplicated in the future.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 59d9094df3d7 ("mm: hugetlb: independent PMD page table shared count")
    Signed-off-by: David Hildenbrand (Red Hat) <[email protected]>
    Reviewed-by: Rik van Riel <[email protected]>
    Tested-by: Laurence Oberman <[email protected]>
    Reviewed-by: Lorenzo Stoakes <[email protected]>
    Acked-by: Oscar Salvador <[email protected]>
    Cc: Liu Shixin <[email protected]>
    Cc: Harry Yoo <[email protected]>
    Cc: Lance Yang <[email protected]>
    Cc: "Uschakow, Stanislav" <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mm: kmsan: fix poisoning of high-order non-compound pages [+ + +]
Author: Ryan Roberts <[email protected]>
Date:   Wed Jan 21 05:55:42 2026 -0500

    mm: kmsan: fix poisoning of high-order non-compound pages
    
    [ Upstream commit 4795d205d78690a46b60164f44b8bb7b3e800865 ]
    
    kmsan_free_page() is called by the page allocator's free_pages_prepare()
    during page freeing.  Its job is to poison all the memory covered by the
    page.  It can be called with an order-0 page, a compound high-order page
    or a non-compound high-order page.  But page_size() only works for order-0
    and compound pages.  For a non-compound high-order page it will
    incorrectly return PAGE_SIZE.
    
    The implication is that the tail pages of a high-order non-compound page
    do not get poisoned at free, so any invalid access while they are free
    could go unnoticed.  It looks like the pages will be poisoned again at
    allocation time, so that would bookend the window.
    
    Fix this by using the order parameter to calculate the size.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: b073d7f8aee4 ("mm: kmsan: maintain KMSAN metadata for page operations")
    Signed-off-by: Ryan Roberts <[email protected]>
    Reviewed-by: Alexander Potapenko <[email protected]>
    Tested-by: Alexander Potapenko <[email protected]>
    Cc: Dmitriy Vyukov <[email protected]>
    Cc: Dmitry Vyukov <[email protected]>
    Cc: Marco Elver <[email protected]>
    Cc: Ryan Roberts <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mmc: rtsx_pci_sdmmc: implement sdmmc_card_busy function [+ + +]
Author: Matthew Schwartz <[email protected]>
Date:   Mon Dec 29 12:45:26 2025 -0800

    mmc: rtsx_pci_sdmmc: implement sdmmc_card_busy function
    
    commit 122610220134b32c742cc056eaf64f7017ac8cd9 upstream.
    
    rtsx_pci_sdmmc does not have an sdmmc_card_busy function, so any voltage
    switches cause a kernel warning, "mmc0: cannot verify signal voltage
    switch."
    
    Copy the sdmmc_card_busy function from rtsx_pci_usb to rtsx_pci_sdmmc to
    fix this.
    
    Fixes: ff984e57d36e ("mmc: Add realtek pcie sdmmc host driver")
    Signed-off-by: Matthew Schwartz <[email protected]>
    Tested-by: Ricky WU <[email protected]>
    Reviewed-by: Ricky WU <[email protected]>
    Cc: [email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

mmc: sdhci-of-dwcmshc: Prevent illegal clock reduction in HS200/HS400 mode [+ + +]
Author: Shawn Lin <[email protected]>
Date:   Mon Dec 22 15:11:25 2025 +0800

    mmc: sdhci-of-dwcmshc: Prevent illegal clock reduction in HS200/HS400 mode
    
    commit 3009738a855cf938bbfc9078bec725031ae623a4 upstream.
    
    When operating in HS200 or HS400 timing modes, reducing the clock frequency
    below 52MHz will lead to link broken as the Rockchip DWC MSHC controller
    requires maintaining a minimum clock of 52MHz in these modes.
    
    Add a check to prevent illegal clock reduction through debugfs:
    
    root@debian:/# echo 50000000 > /sys/kernel/debug/mmc0/clock
    root@debian:/# [   30.090146] mmc0: running CQE recovery
    mmc0: cqhci: Failed to halt
    mmc0: cqhci: spurious TCN for tag 0
    WARNING: drivers/mmc/host/cqhci-core.c:797 at cqhci_irq+0x254/0x818, CPU#1: kworker/1:0H/24
    Modules linked in:
    CPU: 1 UID: 0 PID: 24 Comm: kworker/1:0H Not tainted 6.19.0-rc1-00001-g09db0998649d-dirty #204 PREEMPT
    Hardware name: Rockchip RK3588 EVB1 V10 Board (DT)
    Workqueue: kblockd blk_mq_run_work_fn
    pstate: 604000c9 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : cqhci_irq+0x254/0x818
    lr : cqhci_irq+0x254/0x818
    ...
    
    Fixes: c6f361cba51c ("mmc: sdhci-of-dwcmshc: add support for rk3588")
    Cc: Sebastian Reichel <[email protected]>
    Cc: Yifeng Zhao <[email protected]>
    Signed-off-by: Shawn Lin <[email protected]>
    Cc: [email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net/mlx5e: Restore destroying state bit after profile cleanup [+ + +]
Author: Saeed Mahameed <[email protected]>
Date:   Thu Jan 8 13:26:57 2026 -0800

    net/mlx5e: Restore destroying state bit after profile cleanup
    
    [ Upstream commit 5629f8859dca7ef74d7314b60de6a957f23166c0 ]
    
    Profile rollback can fail in mlx5e_netdev_change_profile() and we will
    end up with invalid mlx5e_priv memset to 0, we must maintain the
    'destroying' bit in order to gracefully shutdown even if the
    profile/priv are not valid.
    
    This patch maintains the previous state of the 'destroying' state of
    mlx5e_priv after priv cleanup, to allow the remove flow to cleanup
    common resources from mlx5_core to avoid FW fatal errors as seen below:
    
    $ devlink dev eswitch set pci/0000:00:03.0 mode switchdev
        Error: mlx5_core: Failed setting eswitch to offloads.
    dmesg: mlx5_core 0000:00:03.0 enp0s3np0: failed to rollback to orig profile, ...
    
    $ devlink dev reload pci/0000:00:03.0
    
    mlx5_core 0000:00:03.0: E-Switch: Disable: mode(LEGACY), nvfs(0), necvfs(0), active vports(0)
    mlx5_core 0000:00:03.0: poll_health:803:(pid 519): Fatal error 3 detected
    mlx5_core 0000:00:03.0: firmware version: 28.41.1000
    mlx5_core 0000:00:03.0: 0.000 Gb/s available PCIe bandwidth (Unknown x255 link)
    mlx5_core 0000:00:03.0: mlx5_function_enable:1200:(pid 519): enable hca failed
    mlx5_core 0000:00:03.0: mlx5_function_enable:1200:(pid 519): enable hca failed
    mlx5_core 0000:00:03.0: mlx5_health_try_recover:340:(pid 141): handling bad device here
    mlx5_core 0000:00:03.0: mlx5_handle_bad_state:285:(pid 141): Expected to see disabled NIC but it is full driver
    mlx5_core 0000:00:03.0: mlx5_error_sw_reset:236:(pid 141): start
    mlx5_core 0000:00:03.0: NIC IFC still 0 after 4000ms.
    
    Fixes: c4d7eb57687f ("net/mxl5e: Add change profile method")
    Signed-off-by: Saeed Mahameed <[email protected]>
    Reviewed-by: Tariq Toukan <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net/sched: act_ife: avoid possible NULL deref [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Wed Jan 21 13:37:24 2026 +0000

    net/sched: act_ife: avoid possible NULL deref
    
    [ Upstream commit 27880b0b0d35ad1c98863d09788254e36f874968 ]
    
    tcf_ife_encode() must make sure ife_encode() does not return NULL.
    
    syzbot reported:
    
    Oops: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] SMP KASAN NOPTI
    KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
     RIP: 0010:ife_tlv_meta_encode+0x41/0xa0 net/ife/ife.c:166
    CPU: 3 UID: 0 PID: 8990 Comm: syz.0.696 Not tainted syzkaller #0 PREEMPT(full)
    Call Trace:
     <TASK>
      ife_encode_meta_u32+0x153/0x180 net/sched/act_ife.c:101
      tcf_ife_encode net/sched/act_ife.c:841 [inline]
      tcf_ife_act+0x1022/0x1de0 net/sched/act_ife.c:877
      tc_act include/net/tc_wrapper.h:130 [inline]
      tcf_action_exec+0x1c0/0xa20 net/sched/act_api.c:1152
      tcf_exts_exec include/net/pkt_cls.h:349 [inline]
      mall_classify+0x1a0/0x2a0 net/sched/cls_matchall.c:42
      tc_classify include/net/tc_wrapper.h:197 [inline]
      __tcf_classify net/sched/cls_api.c:1764 [inline]
      tcf_classify+0x7f2/0x1380 net/sched/cls_api.c:1860
      multiq_classify net/sched/sch_multiq.c:39 [inline]
      multiq_enqueue+0xe0/0x510 net/sched/sch_multiq.c:66
      dev_qdisc_enqueue+0x45/0x250 net/core/dev.c:4147
      __dev_xmit_skb net/core/dev.c:4262 [inline]
      __dev_queue_xmit+0x2998/0x46c0 net/core/dev.c:4798
    
    Fixes: 295a6e06d21e ("net/sched: act_ife: Change to use ife module")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Yotam Gigi <[email protected]>
    Reviewed-by: Jamal Hadi Salim <[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: Enforce that teql can only be used as root qdisc [+ + +]
Author: Jamal Hadi Salim <[email protected]>
Date:   Wed Jan 14 11:02:41 2026 -0500

    net/sched: Enforce that teql can only be used as root qdisc
    
    [ Upstream commit 50da4b9d07a7a463e2cfb738f3ad4cff6b2c9c3b ]
    
    Design intent of teql is that it is only supposed to be used as root qdisc.
    We need to check for that constraint.
    
    Although not important, I will describe the scenario that unearthed this
    issue for the curious.
    
    GangMin Kim <[email protected]> managed to concot a scenario as follows:
    
    ROOT qdisc 1:0 (QFQ)
      ├── class 1:1 (weight=15, lmax=16384) netem with delay 6.4s
      └── class 1:2 (weight=1, lmax=1514) teql
    
    GangMin sends a packet which is enqueued to 1:1 (netem).
    Any invocation of dequeue by QFQ from this class will not return a packet
    until after 6.4s. In the meantime, a second packet is sent and it lands on
    1:2. teql's enqueue will return success and this will activate class 1:2.
    Main issue is that teql only updates the parent visible qlen (sch->q.qlen)
    at dequeue. Since QFQ will only call dequeue if peek succeeds (and teql's
    peek always returns NULL), dequeue will never be called and thus the qlen
    will remain as 0. With that in mind, when GangMin updates 1:2's lmax value,
    the qfq_change_class calls qfq_deact_rm_from_agg. Since the child qdisc's
    qlen was not incremented, qfq fails to deactivate the class, but still
    frees its pointers from the aggregate. So when the first packet is
    rescheduled after 6.4 seconds (netem's delay), a dangling pointer is
    accessed causing GangMin's causing a UAF.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: GangMin Kim <[email protected]>
    Tested-by: Victor Nogueira <[email protected]>
    Signed-off-by: Jamal Hadi Salim <[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: qfq: Use cl_is_active to determine whether class is active in qfq_rm_from_ag [+ + +]
Author: Jamal Hadi Salim <[email protected]>
Date:   Wed Jan 14 11:02:42 2026 -0500

    net/sched: qfq: Use cl_is_active to determine whether class is active in qfq_rm_from_ag
    
    [ Upstream commit d837fbee92453fbb829f950c8e7cf76207d73f33 ]
    
    This is more of a preventive patch to make the code more consistent and
    to prevent possible exploits that employ child qlen manipulations on qfq.
    use cl_is_active instead of relying on the child qdisc's qlen to determine
    class activation.
    
    Fixes: 462dbc9101acd ("pkt_sched: QFQ Plus: fair-queueing service at DRR cost")
    Signed-off-by: Jamal Hadi Salim <[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_qfq: do not free existing class in qfq_change_class() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Mon Jan 12 17:56:56 2026 +0000

    net/sched: sch_qfq: do not free existing class in qfq_change_class()
    
    [ Upstream commit 3879cffd9d07aa0377c4b8835c4f64b4fb24ac78 ]
    
    Fixes qfq_change_class() error case.
    
    cl->qdisc and cl should only be freed if a new class and qdisc
    were allocated, or we risk various UAF.
    
    Fixes: 462dbc9101ac ("pkt_sched: QFQ Plus: fair-queueing service at DRR cost")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/T/#u
    Signed-off-by: Eric Dumazet <[email protected]>
    Reviewed-by: Jamal Hadi Salim <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
net: bridge: annotate data-races around fdb->{updated,used} [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Thu Jan 8 09:38:06 2026 +0000

    net: bridge: annotate data-races around fdb->{updated,used}
    
    [ Upstream commit b25a0b4a2193407aa72a4cd1df66a7ed07dd4f1e ]
    
    fdb->updated and fdb->used are read and written locklessly.
    
    Add READ_ONCE()/WRITE_ONCE() annotations.
    
    Fixes: 31cbc39b6344 ("net: bridge: add option to allow activity notifications for any fdb entries")
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/netdev/[email protected]/
    Signed-off-by: Eric Dumazet <[email protected]>
    Acked-by: Nikolay Aleksandrov <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: bridge: Set BR_FDB_ADDED_BY_USER early in fdb_add_entry [+ + +]
Author: Johannes Nixdorf <[email protected]>
Date:   Mon Oct 16 15:27:20 2023 +0200

    net: bridge: Set BR_FDB_ADDED_BY_USER early in fdb_add_entry
    
    [ Upstream commit cbf51acbc5d50341290c79c97bda8cf46f5c4f22 ]
    
    In preparation of the following fdb limit for dynamically learned entries,
    allow fdb_create to detect that the entry was added by the user. This
    way it can skip applying the limit in this case.
    
    Reviewed-by: Ido Schimmel <[email protected]>
    Acked-by: Nikolay Aleksandrov <[email protected]>
    Signed-off-by: Johannes Nixdorf <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: b25a0b4a2193 ("net: bridge: annotate data-races around fdb->{updated,used}")
    Signed-off-by: Sasha Levin <[email protected]>

net: can: j1939: j1939_xtp_rx_rts_session_active(): deactivate session upon receiving the second rts [+ + +]
Author: Tetsuo Handa <[email protected]>
Date:   Wed Jan 14 00:28:47 2026 +0900

    net: can: j1939: j1939_xtp_rx_rts_session_active(): deactivate session upon receiving the second rts
    
    commit 1809c82aa073a11b7d335ae932d81ce51a588a4a upstream.
    
    Since j1939_session_deactivate_activate_next() in j1939_tp_rxtimer() is
    called only when the timer is enabled, we need to call
    j1939_session_deactivate_activate_next() if we cancelled the timer.
    Otherwise, refcount for j1939_session leaks, which will later appear as
    
    | unregister_netdevice: waiting for vcan0 to become free. Usage count = 2.
    
    problem.
    
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=881d65229ca4f9ae8c84
    Signed-off-by: Tetsuo Handa <[email protected]>
    Tested-by: Oleksij Rempel <[email protected]>
    Acked-by: Oleksij Rempel <[email protected]>
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Link: https://patch.msgid.link/[email protected]
    Cc: [email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: dsa: fix off-by-one in maximum bridge ID determination [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Tue Jan 20 23:10:39 2026 +0200

    net: dsa: fix off-by-one in maximum bridge ID determination
    
    [ Upstream commit dfca045cd4d0ea07ff4198ba392be3e718acaddc ]
    
    Prior to the blamed commit, the bridge_num range was from
    0 to ds->max_num_bridges - 1. After the commit, it is from
    1 to ds->max_num_bridges.
    
    So this check:
            if (bridge_num >= max)
                    return 0;
    must be updated to:
            if (bridge_num > max)
                    return 0;
    
    in order to allow the last bridge_num value (==max) to be used.
    
    This is easiest visible when a driver sets ds->max_num_bridges=1.
    The observed behaviour is that even the first created bridge triggers
    the netlink extack "Range of offloadable bridges exceeded" warning, and
    is handled in software rather than being offloaded.
    
    Fixes: 3f9bb0301d50 ("net: dsa: make dp->bridge_num one-based")
    Signed-off-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: hns3: fix data race in hns3_fetch_stats [+ + +]
Author: David Yang <[email protected]>
Date:   Tue Jan 20 00:07:37 2026 +0800

    net: hns3: fix data race in hns3_fetch_stats
    
    [ Upstream commit 748a81c8ceda1fdbdcd0af595947422e810442aa ]
    
    In hns3_fetch_stats(), ring statistics, protected by u64_stats_sync, are
    read and accumulated in ignorance of possible u64_stats_fetch_retry()
    events. These statistics are already accumulated by
    hns3_ring_stats_update(). Fix this by reading them into a temporary
    buffer first.
    
    Fixes: b20d7fe51e0d ("net: hns3: add some statitics info to tx process")
    Signed-off-by: David Yang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hns3: fix the HCLGE_FD_AD_NXT_KEY error setting issue [+ + +]
Author: Jijie Shao <[email protected]>
Date:   Mon Jan 19 21:28:40 2026 +0800

    net: hns3: fix the HCLGE_FD_AD_NXT_KEY error setting issue
    
    [ Upstream commit f87e034d16e43af984380a95c32c25201b7759a7 ]
    
    Use next_input_key instead of counter_id to set HCLGE_FD_AD_NXT_KEY.
    
    Fixes: 117328680288 ("net: hns3: Add input key and action config support for flow director")
    Signed-off-by: Jijie Shao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hns3: fix wrong GENMASK() for HCLGE_FD_AD_COUNTER_NUM_M [+ + +]
Author: Jijie Shao <[email protected]>
Date:   Mon Jan 19 21:28:39 2026 +0800

    net: hns3: fix wrong GENMASK() for HCLGE_FD_AD_COUNTER_NUM_M
    
    [ Upstream commit d57c67c956a1bad15115eba6e59d77a6dfeba01d ]
    
    HCLGE_FD_AD_COUNTER_NUM_M should be at GENMASK(19, 13),
    rather than at GENMASK(20, 13), because bit 20 is
    HCLGE_FD_AD_NXT_STEP_B.
    
    This patch corrects the wrong definition.
    
    Fixes: 117328680288 ("net: hns3: Add input key and action config support for flow director")
    Signed-off-by: Jijie Shao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: hv_netvsc: reject RSS hash key programming without RX indirection table [+ + +]
Author: Aditya Garg <[email protected]>
Date:   Mon Jan 12 02:01:33 2026 -0800

    net: hv_netvsc: reject RSS hash key programming without RX indirection table
    
    [ Upstream commit d23564955811da493f34412d7de60fa268c8cb50 ]
    
    RSS configuration requires a valid RX indirection table. When the device
    reports a single receive queue, rndis_filter_device_add() does not
    allocate an indirection table, accepting RSS hash key updates in this
    state leads to a hang.
    
    Fix this by gating netvsc_set_rxfh() on ndc->rx_table_sz and return
    -EOPNOTSUPP when the table is absent. This aligns set_rxfh with the device
    capabilities and prevents incorrect behavior.
    
    Fixes: 962f3fee83a4 ("netvsc: add ethtool ops to get/set RSS key")
    Signed-off-by: Aditya Garg <[email protected]>
    Reviewed-by: Dipayaan Roy <[email protected]>
    Reviewed-by: Haiyang Zhang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: openvswitch: fix data race in ovs_vport_get_upcall_stats [+ + +]
Author: David Yang <[email protected]>
Date:   Wed Jan 21 15:29:26 2026 +0800

    net: openvswitch: fix data race in ovs_vport_get_upcall_stats
    
    [ Upstream commit cc4816bdb08639e5cd9acb295a02d6f0f09736b4 ]
    
    In ovs_vport_get_upcall_stats(), some statistics protected by
    u64_stats_sync, are read and accumulated in ignorance of possible
    u64_stats_fetch_retry() events. These statistics are already accumulated
    by u64_stats_inc(). Fix this by reading them into temporary variables
    first.
    
    Fixes: 1933ea365aa7 ("net: openvswitch: Add support to count upcall packets")
    Signed-off-by: David Yang <[email protected]>
    Acked-by: Ilya Maximets <[email protected]>
    Reviewed-by: Eric Dumazet <[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: allow MDIO bus PM ops to start/stop state machine for phylink-controlled PHY [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Fri Jan 16 14:53:33 2026 +0800

    net: phy: allow MDIO bus PM ops to start/stop state machine for phylink-controlled PHY
    
    [ Upstream commit fc75ea20ffb452652f0d4033f38fe88d7cfdae35 ]
    
    DSA has 2 kinds of drivers:
    
    1. Those who call dsa_switch_suspend() and dsa_switch_resume() from
       their device PM ops: qca8k-8xxx, bcm_sf2, microchip ksz
    2. Those who don't: all others. The above methods should be optional.
    
    For type 1, dsa_switch_suspend() calls dsa_user_suspend() -> phylink_stop(),
    and dsa_switch_resume() calls dsa_user_resume() -> phylink_start().
    These seem good candidates for setting mac_managed_pm = true because
    that is essentially its definition [1], but that does not seem to be the
    biggest problem for now, and is not what this change focuses on.
    
    Talking strictly about the 2nd category of DSA drivers here (which
    do not have MAC managed PM, meaning that for their attached PHYs,
    mdio_bus_phy_suspend() and mdio_bus_phy_resume() should run in full),
    I have noticed that the following warning from mdio_bus_phy_resume() is
    triggered:
    
            WARN_ON(phydev->state != PHY_HALTED && phydev->state != PHY_READY &&
                    phydev->state != PHY_UP);
    
    because the PHY state machine is running.
    
    It's running as a result of a previous dsa_user_open() -> ... ->
    phylink_start() -> phy_start() having been initiated by the user.
    
    The previous mdio_bus_phy_suspend() was supposed to have called
    phy_stop_machine(), but it didn't. So this is why the PHY is in state
    PHY_NOLINK by the time mdio_bus_phy_resume() runs.
    
    mdio_bus_phy_suspend() did not call phy_stop_machine() because for
    phylink, the phydev->adjust_link function pointer is NULL. This seems a
    technicality introduced by commit fddd91016d16 ("phylib: fix PAL state
    machine restart on resume"). That commit was written before phylink
    existed, and was intended to avoid crashing with consumer drivers which
    don't use the PHY state machine - phylink always does, when using a PHY.
    But phylink itself has historically not been developed with
    suspend/resume in mind, and apparently not tested too much in that
    scenario, allowing this bug to exist unnoticed for so long. Plus, prior
    to the WARN_ON(), it would have likely been invisible.
    
    This issue is not in fact restricted to type 2 DSA drivers (according to
    the above ad-hoc classification), but can be extrapolated to any MAC
    driver with phylink and MDIO-bus-managed PHY PM ops. DSA is just where
    the issue was reported. Assuming mac_managed_pm is set correctly, a
    quick search indicates the following other drivers might be affected:
    
    $ grep -Zlr PHYLINK_NETDEV drivers/ | xargs -0 grep -L mac_managed_pm
    drivers/net/ethernet/atheros/ag71xx.c
    drivers/net/ethernet/microchip/sparx5/sparx5_main.c
    drivers/net/ethernet/microchip/lan966x/lan966x_main.c
    drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
    drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
    drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
    drivers/net/ethernet/freescale/ucc_geth.c
    drivers/net/ethernet/freescale/enetc/enetc_pf_common.c
    drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
    drivers/net/ethernet/marvell/mvneta.c
    drivers/net/ethernet/marvell/prestera/prestera_main.c
    drivers/net/ethernet/mediatek/mtk_eth_soc.c
    drivers/net/ethernet/altera/altera_tse_main.c
    drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
    drivers/net/ethernet/meta/fbnic/fbnic_phylink.c
    drivers/net/ethernet/tehuti/tn40_phy.c
    drivers/net/ethernet/mscc/ocelot_net.c
    
    Make the existing conditions dependent on the PHY device having a
    phydev->phy_link_change() implementation equal to the default
    phy_link_change() provided by phylib. Otherwise, we implicitly know that
    the phydev has the phylink-provided phylink_phy_change() callback, and
    when phylink is used, the PHY state machine always needs to be stopped/
    started on the suspend/resume path. The code is structured as such that
    if phydev->phy_link_change() is absent, it is a matter of time until the
    kernel will crash - no need to further complicate the test.
    
    Thus, for the situation where the PM is not managed by the MAC, we will
    make the MDIO bus PM ops treat identically the phylink-controlled PHYs
    with the phylib-controlled PHYs where an adjust_link() callback is
    supplied. In both cases, the MDIO bus PM ops should stop and restart the
    PHY state machine.
    
    [1] https://lore.kernel.org/netdev/[email protected]/
    
    Fixes: 744d23c71af3 ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
    Reported-by: Wei Fang <[email protected]>
    Tested-by: Wei Fang <[email protected]>
    Signed-off-by: Vladimir Oltean <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Rajani Kantha <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: phy: fix phy_uses_state_machine() [+ + +]
Author: Russell King (Oracle) <[email protected]>
Date:   Fri Jan 16 14:53:34 2026 +0800

    net: phy: fix phy_uses_state_machine()
    
    [ Upstream commit e0d1c55501d377163eb57feed863777ed1c973ad ]
    
    The blamed commit changed the conditions which phylib uses to stop
    and start the state machine in the suspend and resume paths, and
    while improving it, has caused two issues.
    
    The original code used this test:
    
            phydev->attached_dev && phydev->adjust_link
    
    and if true, the paths would handle the PHY state machine. This test
    evaluates true for normal drivers that are using phylib directly
    while the PHY is attached to the network device, but false in all
    other cases, which include the following cases:
    
    - when the PHY has never been attached to a network device.
    - when the PHY has been detached from a network device (as phy_detach()
       sets phydev->attached_dev to NULL, phy_disconnect() calls
       phy_detach() and additionally sets phydev->adjust_link NULL.)
    - when phylink is using the driver (as phydev->adjust_link is NULL.)
    
    Only the third case was incorrect, and the blamed commit attempted to
    fix this by changing this test to (simplified for brevity, see
    phy_uses_state_machine()):
    
            phydev->phy_link_change == phy_link_change ?
                    phydev->attached_dev && phydev->adjust_link : true
    
    However, this also incorrectly evaluates true in the first two cases.
    
    Fix the first case by ensuring that phy_uses_state_machine() returns
    false when phydev->phy_link_change is NULL.
    
    Fix the second case by ensuring that phydev->phy_link_change is set to
    NULL when phy_detach() is called.
    
    Reported-by: Xu Yang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Fixes: fc75ea20ffb4 ("net: phy: allow MDIO bus PM ops to start/stop state machine for phylink-controlled PHY")
    Signed-off-by: Russell King (Oracle) <[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: Rajani Kantha <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: phy: move phy_link_change() prior to mdio_bus_phy_may_suspend() [+ + +]
Author: Vladimir Oltean <[email protected]>
Date:   Fri Jan 16 14:53:32 2026 +0800

    net: phy: move phy_link_change() prior to mdio_bus_phy_may_suspend()
    
    [ Upstream commit f40a673d6b4a128fe95dd9b8c3ed02da50a6a862 ]
    
    In an upcoming change, mdio_bus_phy_may_suspend() will need to
    distinguish a phylib-based PHY client from a phylink PHY client.
    For that, it will need to compare the phydev->phy_link_change() function
    pointer with the eponymous phy_link_change() provided by phylib.
    
    To avoid forward function declarations, the default PHY link state
    change method should be moved upwards. There is no functional change
    associated with this patch, it is only to reduce the noise from a real
    bug fix.
    
    Signed-off-by: Vladimir Oltean <[email protected]>
    Reviewed-by: Russell King (Oracle) <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    [ Minor context change fixed ]
    Signed-off-by: Rajani Kantha <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

net: update netdev_lock_{type,name} [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Thu Jan 8 09:32:44 2026 +0000

    net: update netdev_lock_{type,name}
    
    [ Upstream commit eb74c19fe10872ee1f29a8f90ca5ce943921afe9 ]
    
    Add missing entries in netdev_lock_type[] and netdev_lock_name[] :
    
    CAN, MCTP, RAWIP, CAIF, IP6GRE, 6LOWPAN, NETLINK, VSOCKMON,
    IEEE802154_MONITOR.
    
    Also add a WARN_ONCE() in netdev_lock_pos() to help future bug hunting
    next time a protocol is added without updating these arrays.
    
    Fixes: 1a33e10e4a95 ("net: partially revert dynamic lockdep key changes")
    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: usb: dm9601: remove broken SR9700 support [+ + +]
Author: Ethan Nelson-Moore <[email protected]>
Date:   Mon Jan 12 22:39:24 2026 -0800

    net: usb: dm9601: remove broken SR9700 support
    
    [ Upstream commit 7d7dbafefbe74f5a25efc4807af093b857a7612e ]
    
    The SR9700 chip sends more than one packet in a USB transaction,
    like the DM962x chips can optionally do, but the dm9601 driver does not
    support this mode, and the hardware does not have the DM962x
    MODE_CTL register to disable it, so this driver drops packets on SR9700
    devices. The sr9700 driver correctly handles receiving more than one
    packet per transaction.
    
    While the dm9601 driver could be improved to handle this, the easiest
    way to fix this issue in the short term is to remove the SR9700 device
    ID from the dm9601 driver so the sr9700 driver is always used. This
    device ID should not have been in more than one driver to begin with.
    
    The "Fixes" commit was chosen so that the patch is automatically
    included in all kernels that have the sr9700 driver, even though the
    issue affects dm9601.
    
    Fixes: c9b37458e956 ("USB2NET : SR9700 : One chip USB 1.1 USB2NET SR9700Device Driver Support")
    Signed-off-by: Ethan Nelson-Moore <[email protected]>
    Acked-by: Peter Korsgaard <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netdevsim: fix a race issue related to the operation on bpf_bound_progs list [+ + +]
Author: Yun Lu <[email protected]>
Date:   Fri Jan 16 17:53:08 2026 +0800

    netdevsim: fix a race issue related to the operation on bpf_bound_progs list
    
    [ Upstream commit b97d5eedf4976cc94321243be83b39efe81a0e15 ]
    
    The netdevsim driver lacks a protection mechanism for operations on the
    bpf_bound_progs list. When the nsim_bpf_create_prog() performs
    list_add_tail, it is possible that nsim_bpf_destroy_prog() is
    simultaneously performs list_del. Concurrent operations on the list may
    lead to list corruption and trigger a kernel crash as follows:
    
    [  417.290971] kernel BUG at lib/list_debug.c:62!
    [  417.290983] invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
    [  417.290992] CPU: 10 PID: 168 Comm: kworker/10:1 Kdump: loaded Not tainted 6.19.0-rc5 #1
    [  417.291003] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [  417.291007] Workqueue: events bpf_prog_free_deferred
    [  417.291021] RIP: 0010:__list_del_entry_valid_or_report+0xa7/0xc0
    [  417.291034] Code: a8 ff 0f 0b 48 89 fe 48 89 ca 48 c7 c7 48 a1 eb ae e8 ed fb a8 ff 0f 0b 48 89 fe 48 89 c2 48 c7 c7 80 a1 eb ae e8 d9 fb a8 ff <0f> 0b 48 89 d1 48 c7 c7 d0 a1 eb ae 48 89 f2 48 89 c6 e8 c2 fb a8
    [  417.291040] RSP: 0018:ffffb16a40807df8 EFLAGS: 00010246
    [  417.291046] RAX: 000000000000006d RBX: ffff8e589866f500 RCX: 0000000000000000
    [  417.291051] RDX: 0000000000000000 RSI: ffff8e59f7b23180 RDI: ffff8e59f7b23180
    [  417.291055] RBP: ffffb16a412c9000 R08: 0000000000000000 R09: 0000000000000003
    [  417.291059] R10: ffffb16a40807c80 R11: ffffffffaf9edce8 R12: ffff8e594427ac20
    [  417.291063] R13: ffff8e59f7b44780 R14: ffff8e58800b7a05 R15: 0000000000000000
    [  417.291074] FS:  0000000000000000(0000) GS:ffff8e59f7b00000(0000) knlGS:0000000000000000
    [  417.291079] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  417.291083] CR2: 00007fc4083efe08 CR3: 00000001c3626006 CR4: 0000000000770ee0
    [  417.291088] PKRU: 55555554
    [  417.291091] Call Trace:
    [  417.291096]  <TASK>
    [  417.291103]  nsim_bpf_destroy_prog+0x31/0x80 [netdevsim]
    [  417.291154]  __bpf_prog_offload_destroy+0x2a/0x80
    [  417.291163]  bpf_prog_dev_bound_destroy+0x6f/0xb0
    [  417.291171]  bpf_prog_free_deferred+0x18e/0x1a0
    [  417.291178]  process_one_work+0x18a/0x3a0
    [  417.291188]  worker_thread+0x27b/0x3a0
    [  417.291197]  ? __pfx_worker_thread+0x10/0x10
    [  417.291207]  kthread+0xe5/0x120
    [  417.291214]  ? __pfx_kthread+0x10/0x10
    [  417.291221]  ret_from_fork+0x31/0x50
    [  417.291230]  ? __pfx_kthread+0x10/0x10
    [  417.291236]  ret_from_fork_asm+0x1a/0x30
    [  417.291246]  </TASK>
    
    Add a mutex lock, to prevent simultaneous addition and deletion operations
    on the list.
    
    Fixes: 31d3ad832948 ("netdevsim: add bpf offload support")
    Reported-by: Yinhao Hu <[email protected]>
    Reported-by: Kaiyan Mei <[email protected]>
    Signed-off-by: Yun Lu <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netrom: fix double-free in nr_route_frame() [+ + +]
Author: Jeongjun Park <[email protected]>
Date:   Mon Jan 19 15:33:59 2026 +0900

    netrom: fix double-free in nr_route_frame()
    
    commit ba1096c315283ee3292765f6aea4cca15816c4f7 upstream.
    
    In nr_route_frame(), old_skb is immediately freed without checking if
    nr_neigh->ax25 pointer is NULL. Therefore, if nr_neigh->ax25 is NULL,
    the caller function will free old_skb again, causing a double-free bug.
    
    Therefore, to prevent this, we need to modify it to check whether
    nr_neigh->ax25 is NULL before freeing old_skb.
    
    Cc: <[email protected]>
    Reported-by: [email protected]
    Closes: https://lore.kernel.org/all/[email protected]/
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Jeongjun Park <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
NFSD: fix race between nfsd registration and exports_proc [+ + +]
Author: Maninder Singh <[email protected]>
Date:   Wed Jan 21 12:16:18 2026 +0800

    NFSD: fix race between nfsd registration and exports_proc
    
    [ Upstream commit f7fb730cac9aafda8b9813b55d04e28a9664d17c ]
    
    As of now nfsd calls create_proc_exports_entry() at start of init_nfsd
    and cleanup by remove_proc_entry() at last of exit_nfsd.
    
    Which causes kernel OOPs if there is race between below 2 operations:
    (i) exportfs -r
    (ii) mount -t nfsd none /proc/fs/nfsd
    
    for 5.4 kernel ARM64:
    
    CPU 1:
    el1_irq+0xbc/0x180
    arch_counter_get_cntvct+0x14/0x18
    running_clock+0xc/0x18
    preempt_count_add+0x88/0x110
    prep_new_page+0xb0/0x220
    get_page_from_freelist+0x2d8/0x1778
    __alloc_pages_nodemask+0x15c/0xef0
    __vmalloc_node_range+0x28c/0x478
    __vmalloc_node_flags_caller+0x8c/0xb0
    kvmalloc_node+0x88/0xe0
    nfsd_init_net+0x6c/0x108 [nfsd]
    ops_init+0x44/0x170
    register_pernet_operations+0x114/0x270
    register_pernet_subsys+0x34/0x50
    init_nfsd+0xa8/0x718 [nfsd]
    do_one_initcall+0x54/0x2e0
    
    CPU 2 :
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000010
    
    PC is at : exports_net_open+0x50/0x68 [nfsd]
    
    Call trace:
    exports_net_open+0x50/0x68 [nfsd]
    exports_proc_open+0x2c/0x38 [nfsd]
    proc_reg_open+0xb8/0x198
    do_dentry_open+0x1c4/0x418
    vfs_open+0x38/0x48
    path_openat+0x28c/0xf18
    do_filp_open+0x70/0xe8
    do_sys_open+0x154/0x248
    
    Sometimes it crashes at exports_net_open() and sometimes cache_seq_next_rcu().
    
    and same is happening on latest 6.14 kernel as well:
    
    [    0.000000] Linux version 6.14.0-rc5-next-20250304-dirty
    ...
    [  285.455918] Unable to handle kernel paging request at virtual address 00001f4800001f48
    ...
    [  285.464902] pc : cache_seq_next_rcu+0x78/0xa4
    ...
    [  285.469695] Call trace:
    [  285.470083]  cache_seq_next_rcu+0x78/0xa4 (P)
    [  285.470488]  seq_read+0xe0/0x11c
    [  285.470675]  proc_reg_read+0x9c/0xf0
    [  285.470874]  vfs_read+0xc4/0x2fc
    [  285.471057]  ksys_read+0x6c/0xf4
    [  285.471231]  __arm64_sys_read+0x1c/0x28
    [  285.471428]  invoke_syscall+0x44/0x100
    [  285.471633]  el0_svc_common.constprop.0+0x40/0xe0
    [  285.471870]  do_el0_svc_compat+0x1c/0x34
    [  285.472073]  el0_svc_compat+0x2c/0x80
    [  285.472265]  el0t_32_sync_handler+0x90/0x140
    [  285.472473]  el0t_32_sync+0x19c/0x1a0
    [  285.472887] Code: f9400885 93407c23 937d7c27 11000421 (f86378a3)
    [  285.473422] ---[ end trace 0000000000000000 ]---
    
    It reproduced simply with below script:
    while [ 1 ]
    do
    /exportfs -r
    done &
    
    while [ 1 ]
    do
    insmod /nfsd.ko
    mount -t nfsd none /proc/fs/nfsd
    umount /proc/fs/nfsd
    rmmod nfsd
    done &
    
    So exporting interfaces to user space shall be done at last and
    cleanup at first place.
    
    With change there is no Kernel OOPs.
    
    Co-developed-by: Shubham Rana <[email protected]>
    Signed-off-by: Shubham Rana <[email protected]>
    Signed-off-by: Maninder Singh <[email protected]>
    Reviewed-by: Jeff Layton <[email protected]>
    Cc: [email protected]
    Signed-off-by: Chuck Lever <[email protected]>
    [ The context change is due to the commit bd9d6a3efa97
    ("NFSD: add rpc_status netlink support")
    and the proper adoption is done. ]
    Signed-off-by: Rahul Sharma <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
null_blk: fix kmemleak by releasing references to fault configfs items [+ + +]
Author: Nilay Shroff <[email protected]>
Date:   Tue Jan 13 12:27:22 2026 +0530

    null_blk: fix kmemleak by releasing references to fault configfs items
    
    commit 40b94ec7edbbb867c4e26a1a43d2b898f04b93c5 upstream.
    
    When CONFIG_BLK_DEV_NULL_BLK_FAULT_INJECTION is enabled, the null-blk
    driver sets up fault injection support by creating the timeout_inject,
    requeue_inject, and init_hctx_fault_inject configfs items as children
    of the top-level nullbX configfs group.
    
    However, when the nullbX device is removed, the references taken to
    these fault-config configfs items are not released. As a result,
    kmemleak reports a memory leak, for example:
    
    unreferenced object 0xc00000021ff25c40 (size 32):
      comm "mkdir", pid 10665, jiffies 4322121578
      hex dump (first 32 bytes):
        69 6e 69 74 5f 68 63 74 78 5f 66 61 75 6c 74 5f  init_hctx_fault_
        69 6e 6a 65 63 74 00 88 00 00 00 00 00 00 00 00  inject..........
      backtrace (crc 1a018c86):
        __kmalloc_node_track_caller_noprof+0x494/0xbd8
        kvasprintf+0x74/0xf4
        config_item_set_name+0xf0/0x104
        config_group_init_type_name+0x48/0xfc
        fault_config_init+0x48/0xf0
        0xc0080000180559e4
        configfs_mkdir+0x304/0x814
        vfs_mkdir+0x49c/0x604
        do_mkdirat+0x314/0x3d0
        sys_mkdir+0xa0/0xd8
        system_call_exception+0x1b0/0x4f0
        system_call_vectored_common+0x15c/0x2ec
    
    Fix this by explicitly releasing the references to the fault-config
    configfs items when dropping the reference to the top-level nullbX
    configfs group.
    
    Cc: [email protected]
    Reviewed-by: Chaitanya Kulkarni <[email protected]>
    Fixes: bb4c19e030f4 ("block: null_blk: make fault-injection dynamically configurable per device")
    Signed-off-by: Nilay Shroff <[email protected]>
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nvme-fc: rename free_ctrl callback to match name pattern [+ + +]
Author: Daniel Wagner <[email protected]>
Date:   Tue Jan 20 21:52:26 2026 -0500

    nvme-fc: rename free_ctrl callback to match name pattern
    
    [ Upstream commit 205fb5fa6fde1b5b426015eb1ff69f2ff25ef5bb ]
    
    Rename nvme_fc_nvme_ctrl_freed to nvme_fc_free_ctrl to match the name
    pattern for the callback.
    
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Reviewed-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Daniel Wagner <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Stable-dep-of: 0edb475ac0a7 ("nvme: fix PCIe subsystem reset controller state transition")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nvme-pci: disable secondary temp for Wodposit WPBSNM8 [+ + +]
Author: Ilikara Zheng <[email protected]>
Date:   Mon Dec 8 21:23:40 2025 +0800

    nvme-pci: disable secondary temp for Wodposit WPBSNM8
    
    commit 340f4fc5508c2905a1f30de229e2a4b299d55735 upstream.
    
    Secondary temperature thresholds (temp2_{min,max}) were not reported
    properly on this NVMe SSD. This resulted in an error while attempting to
    read these values with sensors(1):
    
      ERROR: Can't get value of subfeature temp2_min: I/O error
      ERROR: Can't get value of subfeature temp2_max: I/O error
    
    Add the device to the nvme_id_table with the
    NVME_QUIRK_NO_SECONDARY_TEMP_THRESH flag to suppress access to all non-
    composite temperature thresholds.
    
    Cc: [email protected]
    Tested-by: Wu Haotian <[email protected]>
    Signed-off-by: Ilikara Zheng <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

nvme-pci: do not directly handle subsys reset fallout [+ + +]
Author: Keith Busch <[email protected]>
Date:   Tue Jan 20 21:52:27 2026 -0500

    nvme-pci: do not directly handle subsys reset fallout
    
    [ Upstream commit 210b1f6576e8b367907e7ff51ef425062e1468e4 ]
    
    Scheduling reset_work after a nvme subsystem reset is expected to fail
    on pcie, but this also prevents potential handling the platform's pcie
    services may provide that might successfully recovering the link without
    re-enumeration. Such examples include AER, DPC, and power's EEH.
    
    Provide a pci specific operation that safely initiates a subsystem
    reset, and instead of scheduling reset work, read back the status
    register to trigger a pcie read error.
    
    Since this only affects pci, the other fabrics drivers subscribe to a
    generic nvmf subsystem reset that is exactly the same as before. The
    loop fabric doesn't use it because nvmet doesn't support setting that
    property anyway.
    
    And since we're using the magic NSSR value in two places now, provide a
    symbolic define for it.
    
    Reported-by: Nilay Shroff <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Stable-dep-of: 0edb475ac0a7 ("nvme: fix PCIe subsystem reset controller state transition")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nvme-tcp: fix NULL pointer dereferences in nvmet_tcp_build_pdu_iovec [+ + +]
Author: Shivam Kumar <[email protected]>
Date:   Sat Dec 13 13:57:48 2025 -0500

    nvme-tcp: fix NULL pointer dereferences in nvmet_tcp_build_pdu_iovec
    
    [ Upstream commit 32b63acd78f577b332d976aa06b56e70d054cbba ]
    
    Commit efa56305908b ("nvmet-tcp: Fix a kernel panic when host sends an invalid H2C PDU length")
    added ttag bounds checking and data_offset
    validation in nvmet_tcp_handle_h2c_data_pdu(), but it did not validate
    whether the command's data structures (cmd->req.sg and cmd->iov) have
    been properly initialized before processing H2C_DATA PDUs.
    
    The nvmet_tcp_build_pdu_iovec() function dereferences these pointers
    without NULL checks. This can be triggered by sending H2C_DATA PDU
    immediately after the ICREQ/ICRESP handshake, before
    sending a CONNECT command or NVMe write command.
    
    Attack vectors that trigger NULL pointer dereferences:
    1. H2C_DATA PDU sent before CONNECT → both pointers NULL
    2. H2C_DATA PDU for READ command → cmd->req.sg allocated, cmd->iov NULL
    3. H2C_DATA PDU for uninitialized command slot → both pointers NULL
    
    The fix validates both cmd->req.sg and cmd->iov before calling
    nvmet_tcp_build_pdu_iovec(). Both checks are required because:
    - Uninitialized commands: both NULL
    - READ commands: cmd->req.sg allocated, cmd->iov NULL
    - WRITE commands: both allocated
    
    Fixes: efa56305908b ("nvmet-tcp: Fix a kernel panic when host sends an invalid H2C PDU length")
    Reviewed-by: Sagi Grimberg <[email protected]>
    Signed-off-by: Shivam Kumar <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvme: fix PCIe subsystem reset controller state transition [+ + +]
Author: Nilay Shroff <[email protected]>
Date:   Tue Jan 20 21:52:28 2026 -0500

    nvme: fix PCIe subsystem reset controller state transition
    
    [ Upstream commit 0edb475ac0a7d153318a24d4dca175a270a5cc4f ]
    
    The commit d2fe192348f9 (“nvme: only allow entering LIVE from CONNECTING
    state”) disallows controller state transitions directly from RESETTING
    to LIVE. However, the NVMe PCIe subsystem reset path relies on this
    transition to recover the controller on PowerPC (PPC) systems.
    
    On PPC systems, issuing a subsystem reset causes a temporary loss of
    communication with the NVMe adapter. A subsequent PCIe MMIO read then
    triggers EEH recovery, which restores the PCIe link and brings the
    controller back online. For EEH recovery to proceed correctly, the
    controller must transition back to the LIVE state.
    
    Due to the changes introduced by commit d2fe192348f9 (“nvme: only allow
    entering LIVE from CONNECTING state”), the controller can no longer
    transition directly from RESETTING to LIVE. As a result, EEH recovery
    exits prematurely, leaving the controller stuck in the RESETTING state.
    
    Fix this by explicitly transitioning the controller state from RESETTING
    to CONNECTING and then to LIVE. This satisfies the updated state
    transition rules and allows the controller to be successfully recovered
    on PPC systems following a PCIe subsystem reset.
    
    Cc: [email protected]
    Fixes: d2fe192348f9 ("nvme: only allow entering LIVE from CONNECTING state")
    Reviewed-by: Daniel Wagner <[email protected]>
    Signed-off-by: Nilay Shroff <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nvmet-tcp: remove boilerplate code [+ + +]
Author: Maurizio Lombardi <[email protected]>
Date:   Fri Dec 22 16:17:50 2023 +0100

    nvmet-tcp: remove boilerplate code
    
    [ Upstream commit 75011bd0f9c55db523242f9f9a0b0b826165f14b ]
    
    Simplify the nvmet_tcp_handle_h2c_data_pdu() function by removing
    boilerplate code.
    
    Signed-off-by: Maurizio Lombardi <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Stable-dep-of: 32b63acd78f5 ("nvme-tcp: fix NULL pointer dereferences in nvmet_tcp_build_pdu_iovec")
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2-af: Fix error handling [+ + +]
Author: Ratheesh Kannoth <[email protected]>
Date:   Wed Jan 21 09:09:34 2026 +0530

    octeontx2-af: Fix error handling
    
    [ Upstream commit 19e4175e997a5b85eab97d522f00cc99abd1873c ]
    
    This commit adds error handling and rollback logic to
    rvu_mbox_handler_attach_resources() to properly clean up partially
    attached resources when rvu_attach_block() fails.
    
    Fixes: 746ea74241fa0 ("octeontx2-af: Add RVU block LF provisioning support")
    Signed-off-by: Ratheesh Kannoth <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2: cn10k: fix RX flowid TCAM mask handling [+ + +]
Author: Alok Tiwari <[email protected]>
Date:   Fri Jan 16 08:47:12 2026 -0800

    octeontx2: cn10k: fix RX flowid TCAM mask handling
    
    [ Upstream commit ab9b218a1521133a4410722907fa7189566be9bc ]
    
    The RX flowid programming initializes the TCAM mask to all ones, but
    then overwrites it when clearing the MAC DA mask bits. This results
    in losing the intended initialization and may affect other match fields.
    
    Update the code to clear the MAC DA bits using an AND operation, making
    the handling of mask[0] consistent with mask[1], where the field-specific
    bits are cleared after initializing the mask to ~0ULL.
    
    Fixes: 57d00d4364f3 ("octeontx2-pf: mcs: Match macsec ethertype along with DMAC")
    Signed-off-by: Alok Tiwari <[email protected]>
    Reviewed-by: Subbaraya Sundeep <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

octeontx2: Fix otx2_dma_map_page() error return code [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Wed Jan 14 13:31:06 2026 +0100

    octeontx2: Fix otx2_dma_map_page() error return code
    
    commit d998b0e5afffa90d0f03770bad31083767079858 upstream.
    
    0 is a valid DMA address [1] so using it as the error value can lead to
    errors.  The error value of dma_map_XXX() functions is DMA_MAPPING_ERROR
    which is ~0.  The callers of otx2_dma_map_page() use dma_mapping_error()
    to test the return value of otx2_dma_map_page(). This means that they
    would not detect an error in otx2_dma_map_page().
    
    Make otx2_dma_map_page() return the raw value of dma_map_page_attrs().
    
    [1] https://lore.kernel.org/all/[email protected]
    
    Fixes: caa2da34fd25 ("octeontx2-pf: Initialize and config queues")
    Cc: <[email protected]>
    Signed-off-by: Thomas Fourier <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
of: fix reference count leak in of_alias_scan() [+ + +]
Author: Weigang He <[email protected]>
Date:   Sat Jan 17 09:12:38 2026 +0000

    of: fix reference count leak in of_alias_scan()
    
    commit 81122fba08fa3ccafab6ed272a5c6f2203923a7e upstream.
    
    of_find_node_by_path() returns a device_node with its refcount
    incremented. When kstrtoint() fails or dt_alloc() fails, the function
    continues to the next iteration without calling of_node_put(), causing
    a reference count leak.
    
    Add of_node_put(np) before continue on both error paths to properly
    release the device_node reference.
    
    Fixes: 611cad720148 ("dt: add of_alias_scan and of_alias_get_id")
    Cc: [email protected]
    Signed-off-by: Weigang He <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

of: platform: Use default match table for /firmware [+ + +]
Author: Rob Herring (Arm) <[email protected]>
Date:   Tue Jan 13 19:51:58 2026 -0600

    of: platform: Use default match table for /firmware
    
    commit 48e6a9c4a20870e09f85ff1a3628275d6bce31c0 upstream.
    
    Calling of_platform_populate() without a match table will only populate
    the immediate child nodes under /firmware. This is usually fine, but in
    the case of something like a "simple-mfd" node such as
    "raspberrypi,bcm2835-firmware", those child nodes will not be populated.
    And subsequent calls won't work either because the /firmware node is
    marked as processed already.
    
    Switch the call to of_platform_default_populate() to solve this problem.
    It should be a nop for existing cases.
    
    Fixes: 3aa0582fdb82 ("of: platform: populate /firmware/ node from of_platform_default_populate_init()")
    Cc: [email protected]
    Reviewed-by: Sudeep Holla <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
perf/x86/intel: Do not enable BTS for guests [+ + +]
Author: Fernand Sieber <[email protected]>
Date:   Thu Dec 11 20:36:04 2025 +0200

    perf/x86/intel: Do not enable BTS for guests
    
    commit 91dcfae0ff2b9b9ab03c1ec95babaceefbffb9f4 upstream.
    
    By default when users program perf to sample branch instructions
    (PERF_COUNT_HW_BRANCH_INSTRUCTIONS) with a sample period of 1, perf
    interprets this as a special case and enables BTS (Branch Trace Store)
    as an optimization to avoid taking an interrupt on every branch.
    
    Since BTS doesn't virtualize, this optimization doesn't make sense when
    the request originates from a guest. Add an additional check that
    prevents this optimization for virtualized events (exclude_host).
    
    Reported-by: Jan H. Schönherr <[email protected]>
    Suggested-by: Peter Zijlstra <[email protected]>
    Signed-off-by: Fernand Sieber <[email protected]>
    Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
    Cc: <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
phy: broadcom: ns-usb3: Fix Wvoid-pointer-to-enum-cast warning (again) [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Wed Dec 24 12:55:34 2025 +0100

    phy: broadcom: ns-usb3: Fix Wvoid-pointer-to-enum-cast warning (again)
    
    [ Upstream commit fb21116099bbea1fc59efa9207e63c4be390ab72 ]
    
    "family" is an enum, thus cast of pointer on 64-bit compile test with
    clang W=1 causes:
    
      phy-bcm-ns-usb3.c:206:17: error: cast to smaller integer type 'enum bcm_ns_family' from 'const void *' [-Werror,-Wvoid-pointer-to-enum-cast]
    
    This was already fixed in commit bd6e74a2f0a0 ("phy: broadcom: ns-usb3:
    fix Wvoid-pointer-to-enum-cast warning") but then got bad in commit
    21bf6fc47a1e ("phy: Use device_get_match_data()").
    
    Note that after various discussions the preferred cast is via "unsigned
    long", not "uintptr_t".
    
    Fixes: 21bf6fc47a1e ("phy: Use device_get_match_data()")
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: drop probe registration printks [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Fri May 23 10:51:12 2025 +0200

    phy: drop probe registration printks
    
    [ Upstream commit 95463cbb4fe6489921fb8c72890113dca54ce83f ]
    
    Drivers should generally be quiet on successful probe, but this is not
    followed by some PHY drivers, for example:
    
            snps-eusb2-hsphy 88e1000.phy: Registered Snps-eUSB2 phy
            qcom-eusb2-repeater c432000.spmi:pmic@7:phy@fd00: Registered Qcom-eUSB2 repeater
            qcom-eusb2-repeater c432000.spmi:pmic@a:phy@fd00: Registered Qcom-eUSB2 repeater
            qcom-eusb2-repeater c432000.spmi:pmic@b:phy@fd00: Registered Qcom-eUSB2 repeater
            snps-eusb2-hsphy fd3000.phy: Registered Snps-eUSB2 phy
            snps-eusb2-hsphy fd9000.phy: Registered Snps-eUSB2 phy
            snps-eusb2-hsphy fde000.phy: Registered Snps-eUSB2 phy
            snps-eusb2-hsphy 88e0000.phy: Registered Snps-eUSB2 phy
            snps-eusb2-hsphy 88e2000.phy: Registered Snps-eUSB2 phy
    
    Drop (or demote to debug level) unnecessary registration info messages
    to make boot logs a little less noisy.
    
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 1ca52c0983c3 ("phy: qcom-qusb2: Fix NULL pointer dereference on early suspend")
    Signed-off-by: Sasha Levin <[email protected]>

phy: freescale: imx8m-pcie: assert phy reset during power on [+ + +]
Author: Rafael Beims <[email protected]>
Date:   Tue Dec 23 12:02:54 2025 -0300

    phy: freescale: imx8m-pcie: assert phy reset during power on
    
    commit f2ec4723defbc66a50e0abafa830ae9f8bceb0d7 upstream.
    
    After U-Boot initializes PCIe with "pcie enum", Linux fails to detect
    an NVMe disk on some boot cycles with:
    
      phy phy-32f00000.pcie-phy.0: phy poweron failed --> -110
    
    Discussion with NXP identified that the iMX8MP PCIe PHY PLL may fail to
    lock when re-initialized without a reset cycle [1].
    
    The issue reproduces on 7% of tested hardware platforms, with a 30-40%
    failure rate per affected device across boot cycles.
    
    Insert a reset cycle in the power-on routine to ensure the PHY is
    initialized from a known state.
    
    [1] https://community.nxp.com/t5/i-MX-Processors/iMX8MP-PCIe-initialization-in-U-Boot/m-p/2248437#M242401
    
    Signed-off-by: Rafael Beims <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: fsl-imx8mq-usb: Clear the PCS_TX_SWING_FULL field before using it [+ + +]
Author: Stefano Radaelli <[email protected]>
Date:   Fri Dec 19 17:09:12 2025 +0100

    phy: fsl-imx8mq-usb: Clear the PCS_TX_SWING_FULL field before using it
    
    [ Upstream commit 8becf9179a4b45104a1701010ed666b55bf4b3a6 ]
    
    Clear the PCS_TX_SWING_FULL field mask before setting the new value
    in PHY_CTRL5 register. Without clearing the mask first, the OR operation
    could leave previously set bits, resulting in incorrect register
    configuration.
    
    Fixes: 63c85ad0cd81 ("phy: fsl-imx8mp-usb: add support for phy tuning")
    Suggested-by: Leonid Segal <[email protected]>
    Acked-by: Pierluigi Passaro <[email protected]>
    Signed-off-by: Stefano Radaelli <[email protected]>
    Reviewed-by: Xu Yang <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Reviewed-by: Fabio Estevam <[email protected]>
    Reviewed-by: Ahmad Fatoum <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: phy-rockchip-inno-usb2: Use dev_err_probe() in the probe path [+ + +]
Author: Dragan Simic <[email protected]>
Date:   Tue Jan 20 20:49:10 2026 -0500

    phy: phy-rockchip-inno-usb2: Use dev_err_probe() in the probe path
    
    [ Upstream commit 40452520850683f6771094ca218ff206d1fcb022 ]
    
    Improve error handling in the probe path by using function dev_err_probe()
    instead of function dev_err(), where appropriate.
    
    Signed-off-by: Dragan Simic <[email protected]>
    Reviewed-by: Heiko Stuebner <[email protected]>
    Link: https://lore.kernel.org/r/d4ccd9fc278fb46ea868406bf77811ee507f0e4e.1725524803.git.dsimic@manjaro.org
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: e07dea3de508 ("phy: rockchip: inno-usb2: Fix a double free bug in rockchip_usb2phy_probe()")
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: phy-snps-eusb2: refactor constructs names [+ + +]
Author: Ivaylo Ivanov <[email protected]>
Date:   Sun May 4 17:45:21 2025 +0300

    phy: phy-snps-eusb2: refactor constructs names
    
    [ Upstream commit 93dbe9b5b3a265c7e5466c7b6ada439b01577de5 ]
    
    As the driver now resides outside the phy subdirectory under a different
    name, refactor all definitions, structures and functions to explicitly
    specify what code is Qualcomm-specific and what is not.
    
    Signed-off-by: Ivaylo Ivanov <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Stable-dep-of: 1ca52c0983c3 ("phy: qcom-qusb2: Fix NULL pointer dereference on early suspend")
    Signed-off-by: Sasha Levin <[email protected]>

phy: qcom-qusb2: Fix NULL pointer dereference on early suspend [+ + +]
Author: Loic Poulain <[email protected]>
Date:   Fri Dec 19 09:56:40 2025 +0100

    phy: qcom-qusb2: Fix NULL pointer dereference on early suspend
    
    [ Upstream commit 1ca52c0983c34fca506921791202ed5bdafd5306 ]
    
    Enabling runtime PM before attaching the QPHY instance as driver data
    can lead to a NULL pointer dereference in runtime PM callbacks that
    expect valid driver data. There is a small window where the suspend
    callback may run after PM runtime enabling and before runtime forbid.
    This causes a sporadic crash during boot:
    
    ```
    Unable to handle kernel NULL pointer dereference at virtual address 00000000000000a1
    [...]
    CPU: 0 UID: 0 PID: 11 Comm: kworker/0:1 Not tainted 6.16.7+ #116 PREEMPT
    Workqueue: pm pm_runtime_work
    pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : qusb2_phy_runtime_suspend+0x14/0x1e0 [phy_qcom_qusb2]
    lr : pm_generic_runtime_suspend+0x2c/0x44
    [...]
    ```
    
    Attach the QPHY instance as driver data before enabling runtime PM to
    prevent NULL pointer dereference in runtime PM callbacks.
    
    Reorder pm_runtime_enable() and pm_runtime_forbid() to prevent a
    short window where an unnecessary runtime suspend can occur.
    
    Use the devres-managed version to ensure PM runtime is symmetrically
    disabled during driver removal for proper cleanup.
    
    Fixes: 891a96f65ac3 ("phy: qcom-qusb2: Add support for runtime PM")
    Signed-off-by: Loic Poulain <[email protected]>
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Reviewed-by: Abel Vesa <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: rockchip: inno-usb2: Fix a double free bug in rockchip_usb2phy_probe() [+ + +]
Author: Wentao Liang <[email protected]>
Date:   Tue Jan 20 20:49:11 2026 -0500

    phy: rockchip: inno-usb2: Fix a double free bug in rockchip_usb2phy_probe()
    
    [ Upstream commit e07dea3de508cd6950c937cec42de7603190e1ca ]
    
    The for_each_available_child_of_node() calls of_node_put() to
    release child_np in each success loop. After breaking from the
    loop with the child_np has been released, the code will jump to
    the put_child label and will call the of_node_put() again if the
    devm_request_threaded_irq() fails. These cause a double free bug.
    
    Fix by returning directly to avoid the duplicate of_node_put().
    
    Fixes: ed2b5a8e6b98 ("phy: phy-rockchip-inno-usb2: support muxed interrupts")
    Cc: [email protected]
    Signed-off-by: Wentao Liang <[email protected]>
    Reviewed-by: Neil Armstrong <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: rockchip: inno-usb2: fix communication disruption in gadget mode [+ + +]
Author: Luca Ceresoli <[email protected]>
Date:   Thu Nov 27 11:26:17 2025 +0100

    phy: rockchip: inno-usb2: fix communication disruption in gadget mode
    
    commit 7d8f725b79e35fa47e42c88716aad8711e1168d8 upstream.
    
    When the OTG USB port is used to power to SoC, configured as peripheral and
    used in gadget mode, communication stops without notice about 6 seconds
    after the gadget is configured and enumerated.
    
    The problem was observed on a Radxa Rock Pi S board, which can only be
    powered by the only USB-C connector. That connector is the only one usable
    in gadget mode. This implies the USB cable is connected from before boot
    and never disconnects while the kernel runs.
    
    The related code flow in the PHY driver code can be summarized as:
    
     * the first time chg_detect_work starts (6 seconds after gadget is
       configured and enumerated)
       -> rockchip_chg_detect_work():
           if chg_state is UNDEFINED:
              property_enable(base, &rphy->phy_cfg->chg_det.opmode, false); [Y]
    
     * rockchip_chg_detect_work() changes state and re-triggers itself a few
       times until it reaches the DETECTED state:
       -> rockchip_chg_detect_work():
           if chg_state is DETECTED:
              property_enable(base, &rphy->phy_cfg->chg_det.opmode, true); [Z]
    
    At [Y] all existing communications stop. E.g. using a CDC serial gadget,
    the /dev/tty* devices are still present on both host and device, but no
    data is transferred anymore. The later call with a 'true' argument at [Z]
    does not restore it.
    
    Due to the lack of documentation, what chg_det.opmode does exactly is not
    clear, however by code inspection it seems reasonable that is disables
    something needed to keep the communication working, and testing proves that
    disabling these lines lets gadget mode keep working. So prevent changes to
    chg_det.opmode when there is a cable connected (VBUS present).
    
    Fixes: 98898f3bc83c ("phy: rockchip-inno-usb2: support otg-port for rk3399")
    Cc: [email protected]
    Closes: https://lore.kernel.org/lkml/20250414185458.7767aabc@booty/
    Signed-off-by: Luca Ceresoli <[email protected]>
    Reviewed-by: Théo Lebrun <[email protected]>
    Link: https://patch.msgid.link/20251127-rk3308-fix-usb-gadget-phy-disconnect-v2-2-dac8a02cd2ca@bootlin.com
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: rockchip: inno-usb2: fix disconnection in gadget mode [+ + +]
Author: Louis Chauvet <[email protected]>
Date:   Thu Nov 27 11:26:16 2025 +0100

    phy: rockchip: inno-usb2: fix disconnection in gadget mode
    
    commit 028e8ca7b20fb7324f3e5db34ba8bd366d9d3acc upstream.
    
    When the OTG USB port is used to power the SoC, configured as peripheral
    and used in gadget mode, there is a disconnection about 6 seconds after the
    gadget is configured and enumerated.
    
    The problem was observed on a Radxa Rock Pi S board, which can only be
    powered by the only USB-C connector. That connector is the only one usable
    in gadget mode. This implies the USB cable is connected from before boot
    and never disconnects while the kernel runs.
    
    The problem happens because of the PHY driver code flow, summarized as:
    
     * UDC start code (triggered via configfs at any time after boot)
       -> phy_init
           -> rockchip_usb2phy_init
               -> schedule_delayed_work(otg_sm_work [A], 6 sec)
       -> phy_power_on
           -> rockchip_usb2phy_power_on
               -> enable clock
               -> rockchip_usb2phy_reset
    
     * Now the gadget interface is up and running.
    
     * 6 seconds later otg_sm_work starts [A]
       -> rockchip_usb2phy_otg_sm_work():
           if (B_IDLE state && VBUS present && ...):
               schedule_delayed_work(&rport->chg_work [B], 0);
    
     * immediately the chg_detect_work starts [B]
       -> rockchip_chg_detect_work():
           if chg_state is UNDEFINED:
               if (!rport->suspended):
                   rockchip_usb2phy_power_off() <--- [X]
    
    At [X], the PHY is powered off, causing a disconnection. This quickly
    triggers a new connection and following re-enumeration, but any connection
    that had been established during the 6 seconds is broken.
    
    The code already checks for !rport->suspended (which, somewhat
    counter-intuitively, means the PHY is powered on), so add a guard for VBUS
    as well to avoid a disconnection when a cable is connected.
    
    Fixes: 98898f3bc83c ("phy: rockchip-inno-usb2: support otg-port for rk3399")
    Cc: [email protected]
    Closes: https://lore.kernel.org/lkml/20250414185458.7767aabc@booty/
    Signed-off-by: Louis Chauvet <[email protected]>
    Co-developed-by: Luca Ceresoli <[email protected]>
    Signed-off-by: Luca Ceresoli <[email protected]>
    Reviewed-by: Théo Lebrun <[email protected]>
    Link: https://patch.msgid.link/20251127-rk3308-fix-usb-gadget-phy-disconnect-v2-1-dac8a02cd2ca@bootlin.com
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

phy: stm32-usphyc: Fix off by one in probe() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Tue Dec 9 09:53:36 2025 +0300

    phy: stm32-usphyc: Fix off by one in probe()
    
    [ Upstream commit cabd25b57216ddc132efbcc31f972baa03aad15a ]
    
    The "index" variable is used as an index into the usbphyc->phys[] array
    which has usbphyc->nphys elements.  So if it is equal to usbphyc->nphys
    then it is one element out of bounds.  The "index" comes from the
    device tree so it's data that we trust and it's unlikely to be wrong,
    however it's obviously still worth fixing the bug.  Change the > to >=.
    
    Fixes: 94c358da3a05 ("phy: stm32: add support for STM32 USB PHY Controller (USBPHYC)")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Amelie Delaunay <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

phy: tegra: xusb: Explicitly configure HS_DISCON_LEVEL to 0x7 [+ + +]
Author: Wayne Chang <[email protected]>
Date:   Fri Dec 12 11:21:16 2025 +0800

    phy: tegra: xusb: Explicitly configure HS_DISCON_LEVEL to 0x7
    
    commit b246caa68037aa495390a60d080acaeb84f45fff upstream.
    
    The USB2 Bias Pad Control register manages analog parameters for signal
    detection. Previously, the HS_DISCON_LEVEL relied on hardware reset
    values, which may lead to the detection failure.
    
    Explicitly configure HS_DISCON_LEVEL to 0x7. This ensures the disconnect
    threshold is sufficient to guarantee reliable detection.
    
    Fixes: bbf711682cd5 ("phy: tegra: xusb: Add Tegra186 support")
    Cc: [email protected]
    Signed-off-by: Wayne Chang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Vinod Koul <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
platform/x86: hp-bioscfg: Fix automatic module loading [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Thu Jan 15 14:31:12 2026 -0600

    platform/x86: hp-bioscfg: Fix automatic module loading
    
    commit 467d4afc6caa64b84a6db1634f8091e931f4a7cb upstream.
    
    hp-bioscfg has a MODULE_DEVICE_TABLE with a GUID in it that looks
    plausible, but the module doesn't automatically load on applicable
    systems.
    
    This is because the GUID has some lower case characters and so it
    doesn't match the modalias during boot. Update the GUIDs to be all
    uppercase.
    
    Cc: [email protected]
    Fixes: 5f94f181ca25 ("platform/x86: hp-bioscfg: bioscfg-h")
    Signed-off-by: Mario Limonciello <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

platform/x86: hp-bioscfg: Fix kernel panic in GET_INSTANCE_ID macro [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Thu Jan 15 14:31:11 2026 -0600

    platform/x86: hp-bioscfg: Fix kernel panic in GET_INSTANCE_ID macro
    
    commit 25150715e0b049b99df664daf05dab12f41c3e13 upstream.
    
    The GET_INSTANCE_ID macro that caused a kernel panic when accessing sysfs
    attributes:
    
    1. Off-by-one error: The loop condition used '<=' instead of '<',
       causing access beyond array bounds. Since array indices are 0-based
       and go from 0 to instances_count-1, the loop should use '<'.
    
    2. Missing NULL check: The code dereferenced attr_name_kobj->name
       without checking if attr_name_kobj was NULL, causing a null pointer
       dereference in min_length_show() and other attribute show functions.
    
    The panic occurred when fwupd tried to read BIOS configuration attributes:
    
      Oops: general protection fault [#1] SMP KASAN NOPTI
      KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
      RIP: 0010:min_length_show+0xcf/0x1d0 [hp_bioscfg]
    
    Add a NULL check for attr_name_kobj before dereferencing and corrects
    the loop boundary to match the pattern used elsewhere in the driver.
    
    Cc: [email protected]
    Fixes: 5f94f181ca25 ("platform/x86: hp-bioscfg: bioscfg-h")
    Signed-off-by: Mario Limonciello <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

platform/x86: hp-bioscfg: Fix kobject warnings for empty attribute names [+ + +]
Author: Mario Limonciello <[email protected]>
Date:   Thu Jan 15 14:31:10 2026 -0600

    platform/x86: hp-bioscfg: Fix kobject warnings for empty attribute names
    
    commit fdee1b09721605f532352628d0a24623e7062efb upstream.
    
    The hp-bioscfg driver attempts to register kobjects with empty names when
    the HP BIOS returns attributes with empty name strings. This causes
    multiple kernel warnings:
    
      kobject: (00000000135fb5e6): attempted to be registered with empty name!
      WARNING: CPU: 14 PID: 3336 at lib/kobject.c:219 kobject_add_internal+0x2eb/0x310
    
    Add validation in hp_init_bios_buffer_attribute() to check if the
    attribute name is empty after parsing it from the WMI buffer. If empty,
    log a debug message and skip registration of that attribute, allowing the
    module to continue processing other valid attributes.
    
    Cc: [email protected]
    Fixes: a34fc329b189 ("platform/x86: hp-bioscfg: bioscfg")
    Signed-off-by: Mario Limonciello <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Ilpo Järvinen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
pmdomain: imx8m-blk-ctrl: Remove separate rst and clk mask for 8mq vpu [+ + +]
Author: Ming Qian <[email protected]>
Date:   Fri Dec 5 09:54:25 2025 +0800

    pmdomain: imx8m-blk-ctrl: Remove separate rst and clk mask for 8mq vpu
    
    commit 3de49966499634454fd59e0e6fecd50baab7febd upstream.
    
    For i.MX8MQ platform, the ADB in the VPUMIX domain has no separate reset
    and clock enable bits, but is ungated and reset together with the VPUs.
    So we can't reset G1 or G2 separately, it may led to the system hang.
    Remove rst_mask and clk_mask of imx8mq_vpu_blk_ctl_domain_data.
    Let imx8mq_vpu_power_notifier() do really vpu reset.
    
    Fixes: 608d7c325e85 ("soc: imx: imx8m-blk-ctrl: add i.MX8MQ VPU blk-ctrl")
    Signed-off-by: Ming Qian <[email protected]>
    Reviewed-by: Benjamin Gaignard <[email protected]>
    Reviewed-by: Peng Fan <[email protected]>
    Reviewed-by: Frank Li <[email protected]>
    Cc: [email protected]
    Signed-off-by: Ulf Hansson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

pmdomain: qcom: rpmhpd: Add MXC to SC8280XP [+ + +]
Author: Konrad Dybcio <[email protected]>
Date:   Tue Dec 2 18:36:21 2025 +0100

    pmdomain: qcom: rpmhpd: Add MXC to SC8280XP
    
    [ Upstream commit 5bc3e720e725cd5fa34875fa1e5434d565858067 ]
    
    This was apparently accounted for in dt-bindings, but never made its
    way into the driver.
    
    Fix it for SC8280XP and its VDD_GFX-less cousin, SA8540P.
    
    Fixes: f68f1cb3437d ("soc: qcom: rpmhpd: add sc8280xp & sa8540p rpmh power-domains")
    Reviewed-by: Dmitry Baryshkov <[email protected]>
    Signed-off-by: Konrad Dybcio <[email protected]>
    Reviewed-by: Ulf Hansson <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bjorn Andersson <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
pnfs/flexfiles: Fix memory leak in nfs4_ff_alloc_deviceid_node() [+ + +]
Author: Zilin Guan <[email protected]>
Date:   Thu Dec 25 07:41:03 2025 +0000

    pnfs/flexfiles: Fix memory leak in nfs4_ff_alloc_deviceid_node()
    
    [ Upstream commit 0c728083654f0066f5e10a1d2b0bd0907af19a58 ]
    
    In nfs4_ff_alloc_deviceid_node(), if the allocation for ds_versions fails,
    the function jumps to the out_scratch label without freeing the already
    allocated dsaddrs list, leading to a memory leak.
    
    Fix this by jumping to the out_err_drain_dsaddrs label, which properly
    frees the dsaddrs list before cleaning up other resources.
    
    Fixes: d67ae825a59d6 ("pnfs/flexfiles: Add the FlexFile Layout Driver")
    Signed-off-by: Zilin Guan <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
posix-clock: introduce posix_clock_context concept [+ + +]
Author: Xabier Marquiegui <[email protected]>
Date:   Thu Oct 12 00:39:53 2023 +0200

    posix-clock: introduce posix_clock_context concept
    
    [ Upstream commit 60c6946675fc06dd2fd2b7a4b6fd1c1f046f1056 ]
    
    Add the necessary structure to support custom private-data per
    posix-clock user.
    
    The previous implementation of posix-clock assumed all file open
    instances need access to the same clock structure on private_data.
    
    The need for individual data structures per file open instance has been
    identified when developing support for multiple timestamp event queue
    users for ptp_clock.
    
    Signed-off-by: Xabier Marquiegui <[email protected]>
    Suggested-by: Richard Cochran <[email protected]>
    Suggested-by: Vinicius Costa Gomes <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: e859d375d169 ("posix-clock: Store file pointer in struct posix_clock_context")
    Signed-off-by: Sasha Levin <[email protected]>

posix-clock: Store file pointer in struct posix_clock_context [+ + +]
Author: Wojtek Wasko <[email protected]>
Date:   Mon Mar 3 18:13:43 2025 +0200

    posix-clock: Store file pointer in struct posix_clock_context
    
    [ Upstream commit e859d375d1694488015e6804bfeea527a0b25b9f ]
    
    File descriptor based pc_clock_*() operations of dynamic posix clocks
    have access to the file pointer and implement permission checks in the
    generic code before invoking the relevant dynamic clock callback.
    
    Character device operations (open, read, poll, ioctl) do not implement a
    generic permission control and the dynamic clock callbacks have no
    access to the file pointer to implement them.
    
    Extend struct posix_clock_context with a struct file pointer and
    initialize it in posix_clock_open(), so that all dynamic clock callbacks
    can access it.
    
    Acked-by: Richard Cochran <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Reviewed-by: Thomas Gleixner <[email protected]>
    Signed-off-by: Wojtek Wasko <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ptp: Add PHC file mode checks. Allow RO adjtime() without FMODE_WRITE. [+ + +]
Author: Wojtek Wasko <[email protected]>
Date:   Mon Mar 3 18:13:44 2025 +0200

    ptp: Add PHC file mode checks. Allow RO adjtime() without FMODE_WRITE.
    
    [ Upstream commit b4e53b15c04e3852949003752f48f7a14ae39e86 ]
    
    Many devices implement highly accurate clocks, which the kernel manages
    as PTP Hardware Clocks (PHCs). Userspace applications rely on these
    clocks to timestamp events, trace workload execution, correlate
    timescales across devices, and keep various clocks in sync.
    
    The kernel’s current implementation of PTP clocks does not enforce file
    permissions checks for most device operations except for POSIX clock
    operations, where file mode is verified in the POSIX layer before
    forwarding the call to the PTP subsystem. Consequently, it is common
    practice to not give unprivileged userspace applications any access to
    PTP clocks whatsoever by giving the PTP chardevs 600 permissions. An
    example of users running into this limitation is documented in [1].
    Additionally, POSIX layer requires WRITE permission even for readonly
    adjtime() calls which are used in PTP layer to return current frequency
    offset applied to the PHC.
    
    Add permission checks for functions that modify the state of a PTP
    device. Continue enforcing permission checks for POSIX clock operations
    (settime, adjtime) in the POSIX layer. Only require WRITE access for
    dynamic clocks adjtime() if any flags are set in the modes field.
    
    [1] https://lists.nwtime.org/sympa/arc/linuxptp-users/2024-01/msg00036.html
    
    Changes in v4:
    - Require FMODE_WRITE in ajtime() only for calls modifying the clock in
      any way.
    
    Acked-by: Richard Cochran <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Signed-off-by: Wojtek Wasko <[email protected]>
    Reviewed-by: Thomas Gleixner <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ptp: add testptp mask test [+ + +]
Author: Xabier Marquiegui <[email protected]>
Date:   Thu Oct 12 00:39:58 2023 +0200

    ptp: add testptp mask test
    
    [ Upstream commit 26285e689c6cd2cf3849568c83b2ebe53f467143 ]
    
    Add option to test timestamp event queue mask manipulation in testptp.
    
    Option -F allows the user to specify a single channel that will be
    applied on the mask filter via IOCTL.
    
    The test program will maintain the file open until user input is
    received.
    
    This allows checking the effect of the IOCTL in debugfs.
    
    eg:
    
    Console 1:
    ```
    Channel 12 exclusively enabled. Check on debugfs.
    Press any key to continue
    ```
    
    Console 2:
    ```
    0x00000000 0x00000001 0x00000000 0x00000000 0x00000000 0x00000000
    0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
    0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
    0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
    0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
    0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
    0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
    0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
    0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
    0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
    0x00000000 0x00000000 0x00000000 0x00000000
    ```
    
    Signed-off-by: Xabier Marquiegui <[email protected]>
    Suggested-by: Richard Cochran <[email protected]>
    Suggested-by: Vinicius Costa Gomes <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Stable-dep-of: 76868642e427 ("testptp: Add option to open PHC in readonly mode")
    Signed-off-by: Sasha Levin <[email protected]>

 
regmap: Fix race condition in hwspinlock irqsave routine [+ + +]
Author: Cheng-Yu Lee <[email protected]>
Date:   Fri Jan 9 11:26:33 2026 +0800

    regmap: Fix race condition in hwspinlock irqsave routine
    
    [ Upstream commit 4b58aac989c1e3fafb1c68a733811859df388250 ]
    
    Previously, the address of the shared member '&map->spinlock_flags' was
    passed directly to 'hwspin_lock_timeout_irqsave'. This creates a race
    condition where multiple contexts contending for the lock could overwrite
    the shared flags variable, potentially corrupting the state for the
    current lock owner.
    
    Fix this by using a local stack variable 'flags' to store the IRQ state
    temporarily.
    
    Fixes: 8698b9364710 ("regmap: Add hardware spinlock support")
    Signed-off-by: Cheng-Yu Lee <[email protected]>
    Co-developed-by: Yu-Chun Lin <[email protected]>
    Signed-off-by: Yu-Chun Lin <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Revert "gfs2: Fix use of bio_chain" [+ + +]
Author: Andreas Gruenbacher <[email protected]>
Date:   Mon Jan 12 11:47:35 2026 +0100

    Revert "gfs2: Fix use of bio_chain"
    
    commit 469d71512d135907bf5ea0972dfab8c420f57848 upstream.
    
    This reverts commit 8a157e0a0aa5143b5d94201508c0ca1bb8cfb941.
    
    That commit incorrectly assumed that the bio_chain() arguments were
    swapped in gfs2.  However, gfs2 intentionally constructs bio chains so
    that the first bio's bi_end_io callback is invoked when all bios in the
    chain have completed, unlike bio chains where the last bio's callback is
    invoked.
    
    Fixes: 8a157e0a0aa5 ("gfs2: Fix use of bio_chain")
    Cc: [email protected]
    Signed-off-by: Andreas Gruenbacher <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
Revert "nfc/nci: Add the inconsistency check between the input data length and count" [+ + +]
Author: Thadeu Lima de Souza Cascardo <[email protected]>
Date:   Tue Jan 13 17:24:58 2026 -0300

    Revert "nfc/nci: Add the inconsistency check between the input data length and count"
    
    commit f40ddcc0c0ca1a0122a7f4440b429f97d5832bdf upstream.
    
    This reverts commit 068648aab72c9ba7b0597354ef4d81ffaac7b979.
    
    NFC packets may have NUL-bytes. Checking for string length is not a correct
    assumption here. As long as there is a check for the length copied from
    copy_from_user, all should be fine.
    
    The fix only prevented the syzbot reproducer from triggering the bug
    because the packet is not enqueued anymore and the code that triggers the
    bug is not exercised.
    
    The fix even broke
    testing/selftests/nci/nci_dev, making all tests there fail. After the
    revert, 6 out of 8 tests pass.
    
    Fixes: 068648aab72c ("nfc/nci: Add the inconsistency check between the input data length and count")
    Cc: [email protected]
    Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
riscv: clocksource: Fix stimecmp update hazard on RV32 [+ + +]
Author: Naohiko Shimizu <[email protected]>
Date:   Sun Jan 4 22:59:36 2026 +0900

    riscv: clocksource: Fix stimecmp update hazard on RV32
    
    [ Upstream commit eaa9bb1d39d59e7c17b06cec12622b7c586ab629 ]
    
    On RV32, updating the 64-bit stimecmp (or vstimecmp) CSR requires two
    separate 32-bit writes. A race condition exists if the timer triggers
    during these two writes.
    
    The RISC-V Privileged Specification (e.g., Section 3.2.1 for mtimecmp)
    recommends a specific 3-step sequence to avoid spurious interrupts
    when updating 64-bit comparison registers on 32-bit systems:
    
    1. Set the low-order bits (stimecmp) to all ones (ULONG_MAX).
    2. Set the high-order bits (stimecmph) to the desired value.
    3. Set the low-order bits (stimecmp) to the desired value.
    
    Current implementation writes the LSB first without ensuring a future
    value, which may lead to a transient state where the 64-bit comparison
    is incorrectly evaluated as "expired" by the hardware. This results in
    spurious timer interrupts.
    
    This patch adopts the spec-recommended 3-step sequence to ensure the
    intermediate 64-bit state is never smaller than the current time.
    
    Fixes: 9f7a8ff6391f ("RISC-V: Prefer sstc extension if available")
    Signed-off-by: Naohiko Shimizu <[email protected]>
    Reviewed-by: Anup Patel <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paul Walmsley <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: core: Fix error handler encryption support [+ + +]
Author: Brian Kao <[email protected]>
Date:   Thu Dec 18 03:17:23 2025 +0000

    scsi: core: Fix error handler encryption support
    
    commit 9a49157deeb23581fc5c8189b486340d7343264a upstream.
    
    Some low-level drivers (LLD) access block layer crypto fields, such as
    rq->crypt_keyslot and rq->crypt_ctx within `struct request`, to
    configure hardware for inline encryption.  However, SCSI Error Handling
    (EH) commands (e.g., TEST UNIT READY, START STOP UNIT) should not
    involve any encryption setup.
    
    To prevent drivers from erroneously applying crypto settings during EH,
    this patch saves the original values of rq->crypt_keyslot and
    rq->crypt_ctx before an EH command is prepared via scsi_eh_prep_cmnd().
    These fields in the 'struct request' are then set to NULL.  The original
    values are restored in scsi_eh_restore_cmnd() after the EH command
    completes.
    
    This ensures that the block layer crypto context does not leak into EH
    command execution.
    
    Signed-off-by: Brian Kao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Cc: [email protected]
    Reviewed-by: Bart Van Assche <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

scsi: core: Wake up the error handler when final completions race against each other [+ + +]
Author: David Jeffery <[email protected]>
Date:   Tue Jan 13 11:08:13 2026 -0500

    scsi: core: Wake up the error handler when final completions race against each other
    
    [ Upstream commit fe2f8ad6f0999db3b318359a01ee0108c703a8c3 ]
    
    The fragile ordering between marking commands completed or failed so
    that the error handler only wakes when the last running command
    completes or times out has race conditions. These race conditions can
    cause the SCSI layer to fail to wake the error handler, leaving I/O
    through the SCSI host stuck as the error state cannot advance.
    
    First, there is an memory ordering issue within scsi_dec_host_busy().
    The write which clears SCMD_STATE_INFLIGHT may be reordered with reads
    counting in scsi_host_busy(). While the local CPU will see its own
    write, reordering can allow other CPUs in scsi_dec_host_busy() or
    scsi_eh_inc_host_failed() to see a raised busy count, causing no CPU to
    see a host busy equal to the host_failed count.
    
    This race condition can be prevented with a memory barrier on the error
    path to force the write to be visible before counting host busy
    commands.
    
    Second, there is a general ordering issue with scsi_eh_inc_host_failed(). By
    counting busy commands before incrementing host_failed, it can race with a
    final command in scsi_dec_host_busy(), such that scsi_dec_host_busy() does
    not see host_failed incremented but scsi_eh_inc_host_failed() counts busy
    commands before SCMD_STATE_INFLIGHT is cleared by scsi_dec_host_busy(),
    resulting in neither waking the error handler task.
    
    This needs the call to scsi_host_busy() to be moved after host_failed is
    incremented to close the race condition.
    
    Fixes: 6eb045e092ef ("scsi: core: avoid host-wide host_busy counter for scsi_mq")
    Signed-off-by: David Jeffery <[email protected]>
    Reviewed-by: Bart Van Assche <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: qla2xxx: Sanitize payload size to prevent member overflow [+ + +]
Author: Jiasheng Jiang <[email protected]>
Date:   Tue Jan 6 20:53:44 2026 +0000

    scsi: qla2xxx: Sanitize payload size to prevent member overflow
    
    [ Upstream commit 19bc5f2a6962dfaa0e32d0e0bc2271993d85d414 ]
    
    In qla27xx_copy_fpin_pkt() and qla27xx_copy_multiple_pkt(), the frame_size
    reported by firmware is used to calculate the copy length into
    item->iocb. However, the iocb member is defined as a fixed-size 64-byte
    array within struct purex_item.
    
    If the reported frame_size exceeds 64 bytes, subsequent memcpy calls will
    overflow the iocb member boundary. While extra memory might be allocated,
    this cross-member write is unsafe and triggers warnings under
    CONFIG_FORTIFY_SOURCE.
    
    Fix this by capping total_bytes to the size of the iocb member (64 bytes)
    before allocation and copying. This ensures all copies remain within the
    bounds of the destination structure member.
    
    Fixes: 875386b98857 ("scsi: qla2xxx: Add Unsolicited LS Request and Response Support for NVMe")
    Signed-off-by: Jiasheng Jiang <[email protected]>
    Reviewed-by: Himanshu Madhani <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: storvsc: Process unsupported MODE_SENSE_10 [+ + +]
Author: Long Li <[email protected]>
Date:   Fri Jan 16 17:03:02 2026 -0800

    scsi: storvsc: Process unsupported MODE_SENSE_10
    
    commit 9eacec5d18f98f89be520eeeef4b377acee3e4b8 upstream.
    
    The Hyper-V host does not support MODE_SENSE_10 and MODE_SENSE.  The
    driver handles MODE_SENSE as unsupported command, but not for
    MODE_SENSE_10. Add MODE_SENSE_10 to the same handling logic and return
    correct code to SCSI layer.
    
    Fixes: 89ae7d709357 ("Staging: hv: storvsc: Move the storage driver out of the staging area")
    Cc: [email protected]
    Signed-off-by: Long Li <[email protected]>
    Reviewed-by: Michael Kelley <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

scsi: xen: scsiback: Fix potential memory leak in scsiback_remove() [+ + +]
Author: Abdun Nihaal <[email protected]>
Date:   Tue Dec 23 12:00:11 2025 +0530

    scsi: xen: scsiback: Fix potential memory leak in scsiback_remove()
    
    commit 901a5f309daba412e2a30364d7ec1492fa11c32c upstream.
    
    Memory allocated for struct vscsiblk_info in scsiback_probe() is not
    freed in scsiback_remove() leading to potential memory leaks on remove,
    as well as in the scsiback_probe() error paths. Fix that by freeing it
    in scsiback_remove().
    
    Cc: [email protected]
    Fixes: d9d660f6e562 ("xen-scsiback: Add Xen PV SCSI backend driver")
    Signed-off-by: Abdun Nihaal <[email protected]>
    Reviewed-by: Juergen Gross <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
sctp: move SCTP_CMD_ASSOC_SHKEY right after SCTP_CMD_PEER_INIT [+ + +]
Author: Xin Long <[email protected]>
Date:   Tue Jan 13 12:10:26 2026 -0500

    sctp: move SCTP_CMD_ASSOC_SHKEY right after SCTP_CMD_PEER_INIT
    
    [ Upstream commit a80c9d945aef55b23b54838334345f20251dad83 ]
    
    A null-ptr-deref was reported in the SCTP transmit path when SCTP-AUTH key
    initialization fails:
    
      ==================================================================
      KASAN: null-ptr-deref in range [0x0000000000000018-0x000000000000001f]
      CPU: 0 PID: 16 Comm: ksoftirqd/0 Tainted: G W 6.6.0 #2
      RIP: 0010:sctp_packet_bundle_auth net/sctp/output.c:264 [inline]
      RIP: 0010:sctp_packet_append_chunk+0xb36/0x1260 net/sctp/output.c:401
      Call Trace:
    
      sctp_packet_transmit_chunk+0x31/0x250 net/sctp/output.c:189
      sctp_outq_flush_data+0xa29/0x26d0 net/sctp/outqueue.c:1111
      sctp_outq_flush+0xc80/0x1240 net/sctp/outqueue.c:1217
      sctp_cmd_interpreter.isra.0+0x19a5/0x62c0 net/sctp/sm_sideeffect.c:1787
      sctp_side_effects net/sctp/sm_sideeffect.c:1198 [inline]
      sctp_do_sm+0x1a3/0x670 net/sctp/sm_sideeffect.c:1169
      sctp_assoc_bh_rcv+0x33e/0x640 net/sctp/associola.c:1052
      sctp_inq_push+0x1dd/0x280 net/sctp/inqueue.c:88
      sctp_rcv+0x11ae/0x3100 net/sctp/input.c:243
      sctp6_rcv+0x3d/0x60 net/sctp/ipv6.c:1127
    
    The issue is triggered when sctp_auth_asoc_init_active_key() fails in
    sctp_sf_do_5_1C_ack() while processing an INIT_ACK. In this case, the
    command sequence is currently:
    
    - SCTP_CMD_PEER_INIT
    - SCTP_CMD_TIMER_STOP (T1_INIT)
    - SCTP_CMD_TIMER_START (T1_COOKIE)
    - SCTP_CMD_NEW_STATE (COOKIE_ECHOED)
    - SCTP_CMD_ASSOC_SHKEY
    - SCTP_CMD_GEN_COOKIE_ECHO
    
    If SCTP_CMD_ASSOC_SHKEY fails, asoc->shkey remains NULL, while
    asoc->peer.auth_capable and asoc->peer.peer_chunks have already been set by
    SCTP_CMD_PEER_INIT. This allows a DATA chunk with auth = 1 and shkey = NULL
    to be queued by sctp_datamsg_from_user().
    
    Since command interpretation stops on failure, no COOKIE_ECHO should been
    sent via SCTP_CMD_GEN_COOKIE_ECHO. However, the T1_COOKIE timer has already
    been started, and it may enqueue a COOKIE_ECHO into the outqueue later. As
    a result, the DATA chunk can be transmitted together with the COOKIE_ECHO
    in sctp_outq_flush_data(), leading to the observed issue.
    
    Similar to the other places where it calls sctp_auth_asoc_init_active_key()
    right after sctp_process_init(), this patch moves the SCTP_CMD_ASSOC_SHKEY
    immediately after SCTP_CMD_PEER_INIT, before stopping T1_INIT and starting
    T1_COOKIE. This ensures that if shared key generation fails, authenticated
    DATA cannot be sent. It also allows the T1_INIT timer to retransmit INIT,
    giving the client another chance to process INIT_ACK and retry key setup.
    
    Fixes: 730fc3d05cd4 ("[SCTP]: Implete SCTP-AUTH parameter processing")
    Reported-by: Zhen Chen <[email protected]>
    Tested-by: Zhen Chen <[email protected]>
    Signed-off-by: Xin Long <[email protected]>
    Link: https://patch.msgid.link/44881224b375aa8853f5e19b4055a1a56d895813.1768324226.git.lucien.xin@gmail.com
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftest/ptp: update ptp selftest to exercise the gettimex options [+ + +]
Author: Mahesh Bandewar <[email protected]>
Date:   Thu Oct 3 03:15:06 2024 -0700

    selftest/ptp: update ptp selftest to exercise the gettimex options
    
    [ Upstream commit 3d07b691ee707c00afaf365440975e81bb96cd9b ]
    
    With the inclusion of commit c259acab839e ("ptp/ioctl: support
    MONOTONIC{,_RAW} timestamps for PTP_SYS_OFFSET_EXTENDED") clock_gettime()
    now allows retrieval of pre/post timestamps for CLOCK_MONOTONIC and
    CLOCK_MONOTONIC_RAW timebases along with the previously supported
    CLOCK_REALTIME.
    
    This patch adds a command line option 'y' to the testptp program to
    choose one of the allowed timebases [realtime aka system, monotonic,
    and monotonic-raw).
    
    Signed-off-by: Mahesh Bandewar <[email protected]>
    Cc: Shuah Khan <[email protected]>
    Acked-by: Richard Cochran <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 76868642e427 ("testptp: Add option to open PHC in readonly mode")
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/bpf: Check for timeout in perf_link test [+ + +]
Author: Ihor Solodrai <[email protected]>
Date:   Fri Oct 11 15:31:07 2024 +0000

    selftests/bpf: Check for timeout in perf_link test
    
    commit e6c209da7e0e9aaf955a7b59e91ed78c2b6c96fb upstream.
    
    Recently perf_link test started unreliably failing on libbpf CI:
      * https://github.com/libbpf/libbpf/actions/runs/11260672407/job/31312405473
      * https://github.com/libbpf/libbpf/actions/runs/11260992334/job/31315514626
      * https://github.com/libbpf/libbpf/actions/runs/11263162459/job/31320458251
    
    Part of the test is running a dummy loop for a while and then checking
    for a counter incremented by the test program.
    
    Instead of waiting for an arbitrary number of loop iterations once,
    check for the test counter in a loop and use get_time_ns() helper to
    enforce a 100ms timeout.
    
    v1: https://lore.kernel.org/bpf/zuRd072x9tumn2iN4wDNs5av0nu5nekMNV4PkR-YwCT10eFFTrUtZBRkLWFbrcCe7guvLStGQlhibo8qWojCO7i2-NGajes5GYIyynexD-w=@pm.me/
    
    Signed-off-by: Ihor Solodrai <[email protected]>
    Signed-off-by: Andrii Nakryiko <[email protected]>
    Link: https://lore.kernel.org/bpf/[email protected]
    Signed-off-by: Shung-Hsi Yu <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
selftests/net: convert fib-onlink-tests.sh to run it in unique namespace [+ + +]
Author: Hangbin Liu <[email protected]>
Date:   Wed Dec 13 14:08:53 2023 +0800

    selftests/net: convert fib-onlink-tests.sh to run it in unique namespace
    
    [ Upstream commit 3a06833b2adc0a902f2469ad4ce41ccd64f1f3ab ]
    
    Remove PEER_CMD, which is not used in this test
    
    Here is the test result after conversion.
    
     ]# ./fib-onlink-tests.sh
     Error: ipv4: FIB table does not exist.
     Flush terminated
     Error: ipv6: FIB table does not exist.
     Flush terminated
    
     ########################################
     Configuring interfaces
    
       ...
    
         TEST: Gateway resolves to wrong nexthop device - VRF      [ OK ]
    
     Tests passed:  38
     Tests failed:   0
    
    Acked-by: David Ahern <[email protected]>
    Signed-off-by: Hangbin Liu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Stable-dep-of: 4f5f148dd7c0 ("selftests: net: fib-onlink-tests: Convert to use namespaces by default")
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests: drv-net: fix RPS mask handling for high CPU numbers [+ + +]
Author: Gal Pressman <[email protected]>
Date:   Mon Jan 12 19:37:15 2026 +0200

    selftests: drv-net: fix RPS mask handling for high CPU numbers
    
    [ Upstream commit cf055f8c000445aa688c53a706ef4f580818eedb ]
    
    The RPS bitmask bounds check uses ~(RPS_MAX_CPUS - 1) which equals ~15 =
    0xfff0, only allowing CPUs 0-3.
    
    Change the mask to ~((1UL << RPS_MAX_CPUS) - 1) = ~0xffff to allow CPUs
    0-15.
    
    Fixes: 5ebfb4cc3048 ("selftests/net: toeplitz test")
    Reviewed-by: Nimrod Oren <[email protected]>
    Signed-off-by: Gal Pressman <[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]>

selftests: net: amt: wait longer for connection before sending packets [+ + +]
Author: Taehee Yoo <[email protected]>
Date:   Tue Jan 20 13:39:30 2026 +0000

    selftests: net: amt: wait longer for connection before sending packets
    
    [ Upstream commit 04708606fd7bdc34b69089a4ff848ff36d7088f9 ]
    
    Both send_mcast4() and send_mcast6() use sleep 2 to wait for the tunnel
    connection between the gateway and the relay, and for the listener
    socket to be created in the LISTENER namespace.
    
    However, tests sometimes fail because packets are sent before the
    connection is fully established.
    
    Increase the waiting time to make the tests more reliable, and use
    wait_local_port_listen() to explicitly wait for the listener socket.
    
    Fixes: c08e8baea78e ("selftests: add amt interface selftest script")
    Signed-off-by: Taehee Yoo <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

selftests: net: fib-onlink-tests: Convert to use namespaces by default [+ + +]
Author: Ricardo B. Marlière <[email protected]>
Date:   Tue Jan 13 12:37:44 2026 -0300

    selftests: net: fib-onlink-tests: Convert to use namespaces by default
    
    [ Upstream commit 4f5f148dd7c0459229d2ab9a769b2e820f9ee6a2 ]
    
    Currently, the test breaks if the SUT already has a default route
    configured for IPv6. Fix by avoiding the use of the default namespace.
    
    Fixes: 4ed591c8ab44 ("net/ipv6: Allow onlink routes to have a device mismatch if it is the default route")
    Suggested-by: Fernando Fernandez Mancera <[email protected]>
    Signed-off-by: Ricardo B. Marlière <[email protected]>
    Reviewed-by: Ido Schimmel <[email protected]>
    Reviewed-by: Fernando Fernandez Mancera <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
serial: 8250_pci: Fix broken RS485 for F81504/508/512 [+ + +]
Author: Marnix Rijnart <[email protected]>
Date:   Mon Jan 12 01:08:23 2026 +0100

    serial: 8250_pci: Fix broken RS485 for F81504/508/512
    
    commit 27aff0a56b3c77ea1a73641c9b3c4172a8f7238f upstream.
    
    Fintek F81504/508/512 can support both RTS_ON_SEND and RTS_AFTER_SEND,
    but pci_fintek_rs485_supported only announces the former.
    
    This makes it impossible to unset SER_RS485_RTS_ON_SEND from
    userspace because of uart_sanitize_serial_rs485(). Some devices
    with these chips need RTS low on TX, so they are effectively broken.
    
    Fix this by announcing the support for SER_RS485_RTS_AFTER_SEND,
    similar to commit 068d35a7be65 ("serial: sc16is7xx: announce support
    for SER_RS485_RTS_ON_SEND").
    
    Fixes: 4afeced55baa ("serial: core: fix sanitizing check for RTS settings")
    Cc: stable <[email protected]>
    Signed-off-by: Marnix Rijnart <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
slimbus: core: fix device reference leak on report present [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Wed Nov 26 15:53:26 2025 +0100

    slimbus: core: fix device reference leak on report present
    
    commit 9391380eb91ea5ac792aae9273535c8da5b9aa01 upstream.
    
    Slimbus devices can be allocated dynamically upon reception of
    report-present messages.
    
    Make sure to drop the reference taken when looking up already registered
    devices.
    
    Note that this requires taking an extra reference in case the device has
    not yet been registered and has to be allocated.
    
    Fixes: 46a2bb5a7f7e ("slimbus: core: Add slim controllers support")
    Cc: [email protected]      # 4.16
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

slimbus: core: fix runtime PM imbalance on report present [+ + +]
Author: Johan Hovold <[email protected]>
Date:   Wed Nov 26 15:53:25 2025 +0100

    slimbus: core: fix runtime PM imbalance on report present
    
    commit 0eb4ff6596114aabba1070a66afa2c2f5593739f upstream.
    
    Make sure to balance the runtime PM usage count in case slimbus device
    or address allocation fails on report present, which would otherwise
    prevent the controller from suspending.
    
    Fixes: 4b14e62ad3c9 ("slimbus: Add support for 'clock-pause' feature")
    Cc: [email protected]      # 4.16
    Signed-off-by: Johan Hovold <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
spi: spi-sprd-adi: Fix double free in probe error path [+ + +]
Author: Felix Gu <[email protected]>
Date:   Fri Jan 9 20:49:53 2026 +0800

    spi: spi-sprd-adi: Fix double free in probe error path
    
    [ Upstream commit 383d4f5cffcc8df930d95b06518a9d25a6d74aac ]
    
    The driver currently uses spi_alloc_host() to allocate the controller
    but registers it using devm_spi_register_controller().
    
    If devm_register_restart_handler() fails, the code jumps to the
    put_ctlr label and calls spi_controller_put(). However, since the
    controller was registered via a devm function, the device core will
    automatically call spi_controller_put() again when the probe fails.
    This results in a double-free of the spi_controller structure.
    
    Fix this by switching to devm_spi_alloc_host() and removing the
    manual spi_controller_put() call.
    
    Fixes: ac17750 ("spi: sprd: Add the support of restarting the system")
    Signed-off-by: Felix Gu <[email protected]>
    Reviewed-by: Baolin Wang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: sprd-adi: switch to use spi_alloc_host() [+ + +]
Author: Yang Yingliang <[email protected]>
Date:   Tue Nov 28 17:30:06 2023 +0800

    spi: sprd-adi: switch to use spi_alloc_host()
    
    [ Upstream commit 0a3d087d09a8f52c02d0014bad63be99c53c4812 ]
    
    Switch to use modern name function spi_alloc_host().
    
    No functional changed.
    
    Signed-off-by: Yang Yingliang <[email protected]>
    Link: https://msgid.link/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: 383d4f5cffcc ("spi: spi-sprd-adi: Fix double free in probe error path")
    Signed-off-by: Sasha Levin <[email protected]>

spi: sprd: adi: Use devm_register_restart_handler() [+ + +]
Author: Andrew Davis <[email protected]>
Date:   Fri Nov 17 10:10:05 2023 -0600

    spi: sprd: adi: Use devm_register_restart_handler()
    
    [ Upstream commit 8e6a43961f24cf841d3c0d199521d0b284d948b9 ]
    
    Use device life-cycle managed register function to simplify probe error
    path and eliminate need for explicit remove function.
    
    Signed-off-by: Andrew Davis <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Stable-dep-of: 383d4f5cffcc ("spi: spi-sprd-adi: Fix double free in probe error path")
    Signed-off-by: Sasha Levin <[email protected]>

 
tcpm: allow looking for role_sw device in the main node [+ + +]
Author: Arnaud Ferraris <[email protected]>
Date:   Mon Jan 5 09:43:23 2026 +0100

    tcpm: allow looking for role_sw device in the main node
    
    commit 1366cd228b0c67b60a2c0c26ef37fe9f7cfedb7f upstream.
    
    If ports are defined in the tcpc main node, fwnode_usb_role_switch_get()
    returns an error, meaning usb_role_switch_get() (which would succeed)
    never gets a chance to run as port->role_sw isn't NULL, causing a
    regression on devices where this is the case.
    
    Fix this by turning the NULL check into IS_ERR_OR_NULL(), so
    usb_role_switch_get() can actually run and the device get properly probed.
    
    Fixes: 2d8713f807a4 ("tcpm: switch check for role_sw device with fw_node")
    Cc: stable <[email protected]>
    Reviewed-by: Heikki Krogerus <[email protected]>
    Reviewed-by: Dragan Simic <[email protected]>
    Signed-off-by: Arnaud Ferraris <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
testptp: Add option to open PHC in readonly mode [+ + +]
Author: Wojtek Wasko <[email protected]>
Date:   Mon Mar 3 18:13:45 2025 +0200

    testptp: Add option to open PHC in readonly mode
    
    [ Upstream commit 76868642e42795353106197abf9c607ad80f4c9e ]
    
    PTP Hardware Clocks no longer require WRITE permission to perform
    readonly operations, such as listing device capabilities or listening to
    EXTTS events once they have been enabled by a process with WRITE
    permissions.
    
    Add '-r' option to testptp to open the PHC in readonly mode instead of
    the default read-write mode. Skip enabling EXTTS if readonly mode is
    requested.
    
    Acked-by: Richard Cochran <[email protected]>
    Reviewed-by: Vadim Fedorenko <[email protected]>
    Signed-off-by: Wojtek Wasko <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
textsearch: describe @list member in ts_ops search [+ + +]
Author: Bagas Sanjaya <[email protected]>
Date:   Fri Dec 19 08:40:05 2025 +0700

    textsearch: describe @list member in ts_ops search
    
    [ Upstream commit f26528478bb102c28e7ac0cbfc8ec8185afdafc7 ]
    
    Sphinx reports kernel-doc warning:
    
    WARNING: ./include/linux/textsearch.h:49 struct member 'list' not described in 'ts_ops'
    
    Describe @list member to fix it.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 2de4ff7bd658 ("[LIB]: Textsearch infrastructure.")
    Signed-off-by: Bagas Sanjaya <[email protected]>
    Cc: Thomas Graf <[email protected]>
    Cc: "David S. Miller" <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tools: ynl: Specify --no-line-number in ynl-regen.sh. [+ + +]
Author: Kuniyuki Iwashima <[email protected]>
Date:   Thu Jan 15 17:24:47 2026 +0000

    tools: ynl: Specify --no-line-number in ynl-regen.sh.
    
    [ Upstream commit 68578370f9b3a2aba5964b273312d51c581b6aad ]
    
    If grep.lineNumber is enabled in .gitconfig,
    
      [grep]
      lineNumber = true
    
    ynl-regen.sh fails with the following error:
    
      $ ./tools/net/ynl/ynl-regen.sh -f
      ...
      ynl_gen_c.py: error: argument --mode: invalid choice: '4:' (choose from user, kernel, uapi)
            GEN 4:  net/ipv4/fou_nl.c
    
    Let's specify --no-line-number explicitly.
    
    Fixes: be5bea1cc0bf ("net: add basic C code generators for Netlink")
    Suggested-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Kuniyuki Iwashima <[email protected]>
    Reviewed-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]>

 
tracing: Fix crash on synthetic stacktrace field usage [+ + +]
Author: Steven Rostedt <[email protected]>
Date:   Thu Jan 22 19:48:24 2026 -0500

    tracing: Fix crash on synthetic stacktrace field usage
    
    commit 90f9f5d64cae4e72defd96a2a22760173cb3c9ec upstream.
    
    When creating a synthetic event based on an existing synthetic event that
    had a stacktrace field and the new synthetic event used that field a
    kernel crash occurred:
    
     ~# cd /sys/kernel/tracing
     ~# echo 's:stack unsigned long stack[];' > dynamic_events
     ~# echo 'hist:keys=prev_pid:s0=common_stacktrace if prev_state & 3' >> events/sched/sched_switch/trigger
     ~# echo 'hist:keys=next_pid:s1=$s0:onmatch(sched.sched_switch).trace(stack,$s1)' >> events/sched/sched_switch/trigger
    
    The above creates a synthetic event that takes a stacktrace when a task
    schedules out in a non-running state and passes that stacktrace to the
    sched_switch event when that task schedules back in. It triggers the
    "stack" synthetic event that has a stacktrace as its field (called "stack").
    
     ~# echo 's:syscall_stack s64 id; unsigned long stack[];' >> dynamic_events
     ~# echo 'hist:keys=common_pid:s2=stack' >> events/synthetic/stack/trigger
     ~# echo 'hist:keys=common_pid:s3=$s2,i0=id:onmatch(synthetic.stack).trace(syscall_stack,$i0,$s3)' >> events/raw_syscalls/sys_exit/trigger
    
    The above makes another synthetic event called "syscall_stack" that
    attaches the first synthetic event (stack) to the sys_exit trace event and
    records the stacktrace from the stack event with the id of the system call
    that is exiting.
    
    When enabling this event (or using it in a historgram):
    
     ~# echo 1 > events/synthetic/syscall_stack/enable
    
    Produces a kernel crash!
    
     BUG: unable to handle page fault for address: 0000000000400010
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
     PGD 0 P4D 0
     Oops: Oops: 0000 [#1] SMP PTI
     CPU: 6 UID: 0 PID: 1257 Comm: bash Not tainted 6.16.3+deb14-amd64 #1 PREEMPT(lazy)  Debian 6.16.3-1
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.17.0-debian-1.17.0-1 04/01/2014
     RIP: 0010:trace_event_raw_event_synth+0x90/0x380
     Code: c5 00 00 00 00 85 d2 0f 84 e1 00 00 00 31 db eb 34 0f 1f 00 66 66 2e 0f 1f 84 00 00 00 00 00 66 66 2e 0f 1f 84 00 00 00 00 00 <49> 8b 04 24 48 83 c3 01 8d 0c c5 08 00 00 00 01 cd 41 3b 5d 40 0f
     RSP: 0018:ffffd2670388f958 EFLAGS: 00010202
     RAX: ffff8ba1065cc100 RBX: 0000000000000000 RCX: 0000000000000000
     RDX: 0000000000000001 RSI: fffff266ffda7b90 RDI: ffffd2670388f9b0
     RBP: 0000000000000010 R08: ffff8ba104e76000 R09: ffffd2670388fa50
     R10: ffff8ba102dd42e0 R11: ffffffff9a908970 R12: 0000000000400010
     R13: ffff8ba10a246400 R14: ffff8ba10a710220 R15: fffff266ffda7b90
     FS:  00007fa3bc63f740(0000) GS:ffff8ba2e0f48000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000400010 CR3: 0000000107f9e003 CR4: 0000000000172ef0
     Call Trace:
      <TASK>
      ? __tracing_map_insert+0x208/0x3a0
      action_trace+0x67/0x70
      event_hist_trigger+0x633/0x6d0
      event_triggers_call+0x82/0x130
      trace_event_buffer_commit+0x19d/0x250
      trace_event_raw_event_sys_exit+0x62/0xb0
      syscall_exit_work+0x9d/0x140
      do_syscall_64+0x20a/0x2f0
      ? trace_event_raw_event_sched_switch+0x12b/0x170
      ? save_fpregs_to_fpstate+0x3e/0x90
      ? _raw_spin_unlock+0xe/0x30
      ? finish_task_switch.isra.0+0x97/0x2c0
      ? __rseq_handle_notify_resume+0xad/0x4c0
      ? __schedule+0x4b8/0xd00
      ? restore_fpregs_from_fpstate+0x3c/0x90
      ? switch_fpu_return+0x5b/0xe0
      ? do_syscall_64+0x1ef/0x2f0
      ? do_fault+0x2e9/0x540
      ? __handle_mm_fault+0x7d1/0xf70
      ? count_memcg_events+0x167/0x1d0
      ? handle_mm_fault+0x1d7/0x2e0
      ? do_user_addr_fault+0x2c3/0x7f0
      entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    The reason is that the stacktrace field is not labeled as such, and is
    treated as a normal field and not as a dynamic event that it is.
    
    In trace_event_raw_event_synth() the event is field is still treated as a
    dynamic array, but the retrieval of the data is considered a normal field,
    and the reference is just the meta data:
    
    // Meta data is retrieved instead of a dynamic array
      str_val = (char *)(long)var_ref_vals[val_idx];
    
    // Then when it tries to process it:
      len = *((unsigned long *)str_val) + 1;
    
    It triggers a kernel page fault.
    
    To fix this, first when defining the fields of the first synthetic event,
    set the filter type to FILTER_STACKTRACE. This is used later by the second
    synthetic event to know that this field is a stacktrace. When creating
    the field of the new synthetic event, have it use this FILTER_STACKTRACE
    to know to create a stacktrace field to copy the stacktrace into.
    
    Cc: [email protected]
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Tom Zanussi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Fixes: 00cf3d672a9d ("tracing: Allow synthetic events to pass around stacktraces")
    Signed-off-by: Steven Rostedt (Google) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
uacce: ensure safe queue release with state management [+ + +]
Author: Chenghai Huang <[email protected]>
Date:   Tue Dec 2 14:12:56 2025 +0800

    uacce: ensure safe queue release with state management
    
    commit 26c08dabe5475d99a13f353d8dd70e518de45663 upstream.
    
    Directly calling `put_queue` carries risks since it cannot
    guarantee that resources of `uacce_queue` have been fully released
    beforehand. So adding a `stop_queue` operation for the
    UACCE_CMD_PUT_Q command and leaving the `put_queue` operation to
    the final resource release ensures safety.
    
    Queue states are defined as follows:
    - UACCE_Q_ZOMBIE: Initial state
    - UACCE_Q_INIT: After opening `uacce`
    - UACCE_Q_STARTED: After `start` is issued via `ioctl`
    
    When executing `poweroff -f` in virt while accelerator are still
    working, `uacce_fops_release` and `uacce_remove` may execute
    concurrently. This can cause `uacce_put_queue` within
    `uacce_fops_release` to access a NULL `ops` pointer. Therefore, add
    state checks to prevent accessing freed pointers.
    
    Fixes: 015d239ac014 ("uacce: add uacce driver")
    Cc: [email protected]
    Signed-off-by: Chenghai Huang <[email protected]>
    Signed-off-by: Yang Shen <[email protected]>
    Acked-by: Zhangfei Gao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

uacce: fix cdev handling in the cleanup path [+ + +]
Author: Wenkai Lin <[email protected]>
Date:   Tue Dec 2 14:12:53 2025 +0800

    uacce: fix cdev handling in the cleanup path
    
    commit a3bece3678f6c88db1f44c602b2a63e84b4040ac upstream.
    
    When cdev_device_add fails, it internally releases the cdev memory,
    and if cdev_device_del is then executed, it will cause a hang error.
    To fix it, we check the return value of cdev_device_add() and clear
    uacce->cdev to avoid calling cdev_device_del in the uacce_remove.
    
    Fixes: 015d239ac014 ("uacce: add uacce driver")
    Cc: [email protected]
    Signed-off-by: Wenkai Lin <[email protected]>
    Signed-off-by: Chenghai Huang <[email protected]>
    Acked-by: Zhangfei Gao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

uacce: fix isolate sysfs check condition [+ + +]
Author: Chenghai Huang <[email protected]>
Date:   Tue Dec 2 14:12:54 2025 +0800

    uacce: fix isolate sysfs check condition
    
    commit 98eec349259b1fd876f350b1c600403bcef8f85d upstream.
    
    uacce supports the device isolation feature. If the driver
    implements the isolate_err_threshold_read and
    isolate_err_threshold_write callback functions, uacce will create
    sysfs files now. Users can read and configure the isolation policy
    through sysfs. Currently, sysfs files are created as long as either
    isolate_err_threshold_read or isolate_err_threshold_write callback
    functions are present.
    
    However, accessing a non-existent callback function may cause the
    system to crash. Therefore, intercept the creation of sysfs if
    neither read nor write exists; create sysfs if either is supported,
    but intercept unsupported operations at the call site.
    
    Fixes: e3e289fbc0b5 ("uacce: supports device isolation feature")
    Cc: [email protected]
    Signed-off-by: Chenghai Huang <[email protected]>
    Acked-by: Zhangfei Gao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

uacce: implement mremap in uacce_vm_ops to return -EPERM [+ + +]
Author: Yang Shen <[email protected]>
Date:   Tue Dec 2 14:12:55 2025 +0800

    uacce: implement mremap in uacce_vm_ops to return -EPERM
    
    commit 02695347be532b628f22488300d40c4eba48b9b7 upstream.
    
    The current uacce_vm_ops does not support the mremap operation of
    vm_operations_struct. Implement .mremap to return -EPERM to remind
    users.
    
    The reason we need to explicitly disable mremap is that when the
    driver does not implement .mremap, it uses the default mremap
    method. This could lead to a risk scenario:
    
    An application might first mmap address p1, then mremap to p2,
    followed by munmap(p1), and finally munmap(p2). Since the default
    mremap copies the original vma's vm_private_data (i.e., q) to the
    new vma, both munmap operations would trigger vma_close, causing
    q->qfr to be freed twice(qfr will be set to null here, so repeated
    release is ok).
    
    Fixes: 015d239ac014 ("uacce: add uacce driver")
    Cc: [email protected]
    Signed-off-by: Yang Shen <[email protected]>
    Signed-off-by: Chenghai Huang <[email protected]>
    Acked-by: Zhangfei Gao <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
usb: core: add USB_QUIRK_NO_BOS for devices that hang on BOS descriptor [+ + +]
Author: Johannes Brüderl <[email protected]>
Date:   Sun Dec 7 10:02:20 2025 +0100

    usb: core: add USB_QUIRK_NO_BOS for devices that hang on BOS descriptor
    
    commit 2740ac33c87b3d0dfa022efd6ba04c6261b1abbd upstream.
    
    Add USB_QUIRK_NO_BOS quirk flag to skip requesting the BOS descriptor
    for devices that cannot handle it.
    
    Add Elgato 4K X (0fd9:009b) to the quirk table. This device hangs when
    the BOS descriptor is requested at SuperSpeed Plus (10Gbps).
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=220027
    Cc: stable <[email protected]>
    Signed-off-by: Johannes Brüderl <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usb: dwc3: Check for USB4 IP_NAME [+ + +]
Author: Thinh Nguyen <[email protected]>
Date:   Fri Jan 2 21:53:46 2026 +0000

    usb: dwc3: Check for USB4 IP_NAME
    
    commit 0ed91d47959cb7573c17e06487f0fb891d59dfb3 upstream.
    
    Synopsys renamed DWC_usb32 IP to DWC_usb4 as of IP version 1.30. No
    functional change except checking for the IP_NAME here. The driver will
    treat the new IP_NAME as if it's DWC_usb32. Additional features for USB4
    will be introduced and checked separately.
    
    Cc: [email protected]
    Signed-off-by: Thinh Nguyen <[email protected]>
    Link: https://patch.msgid.link/e6f1827754c7a7ddc5eb7382add20bfe3a9b312f.1767390747.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
USB: OHCI/UHCI: Add soft dependencies on ehci_platform [+ + +]
Author: Huacai Chen <[email protected]>
Date:   Mon Jan 12 16:48:02 2026 +0800

    USB: OHCI/UHCI: Add soft dependencies on ehci_platform
    
    commit 01ef7f1b8713a78ab1a9512cf8096d2474c70633 upstream.
    
    Commit 9beeee6584b9aa4f ("USB: EHCI: log a warning if ehci-hcd is not
    loaded first") said that ehci-hcd should be loaded before ohci-hcd and
    uhci-hcd. However, commit 05c92da0c52494ca ("usb: ohci/uhci - add soft
    dependencies on ehci_pci") only makes ohci-pci/uhci-pci depend on ehci-
    pci, which is not enough and we may still see the warnings in boot log.
    
    To eliminate the warnings we should make ohci-hcd/uhci-hcd depend on
    ehci-hcd. But Alan said that the warning introduced by 9beeee6584b9aa4f
    is bogus, we only need the soft dependencies in the PCI level rather
    than the HCD level.
    
    However, there is really another neccessary soft dependencies between
    ohci-platform/uhci-platform and ehci-platform, which is added by this
    patch. The boot logs are below.
    
    1. ohci-platform loaded before ehci-platform:
    
     ohci-platform 1f058000.usb: Generic Platform OHCI controller
     ohci-platform 1f058000.usb: new USB bus registered, assigned bus number 1
     ohci-platform 1f058000.usb: irq 28, io mem 0x1f058000
     hub 1-0:1.0: USB hub found
     hub 1-0:1.0: 4 ports detected
     Warning! ehci_hcd should always be loaded before uhci_hcd and ohci_hcd, not after
     usb 1-4: new low-speed USB device number 2 using ohci-platform
     ehci-platform 1f050000.usb: EHCI Host Controller
     ehci-platform 1f050000.usb: new USB bus registered, assigned bus number 2
     ehci-platform 1f050000.usb: irq 29, io mem 0x1f050000
     ehci-platform 1f050000.usb: USB 2.0 started, EHCI 1.00
     usb 1-4: device descriptor read/all, error -62
     hub 2-0:1.0: USB hub found
     hub 2-0:1.0: 4 ports detected
     usb 1-4: new low-speed USB device number 3 using ohci-platform
     input: YSPRINGTECH USB OPTICAL MOUSE as /devices/platform/bus@10000000/1f058000.usb/usb1/1-4/1-4:1.0/0003:10C4:8105.0001/input/input0
     hid-generic 0003:10C4:8105.0001: input,hidraw0: USB HID v1.11 Mouse [YSPRINGTECH USB OPTICAL MOUSE] on usb-1f058000.usb-4/input0
    
    2. ehci-platform loaded before ohci-platform:
    
     ehci-platform 1f050000.usb: EHCI Host Controller
     ehci-platform 1f050000.usb: new USB bus registered, assigned bus number 1
     ehci-platform 1f050000.usb: irq 28, io mem 0x1f050000
     ehci-platform 1f050000.usb: USB 2.0 started, EHCI 1.00
     hub 1-0:1.0: USB hub found
     hub 1-0:1.0: 4 ports detected
     ohci-platform 1f058000.usb: Generic Platform OHCI controller
     ohci-platform 1f058000.usb: new USB bus registered, assigned bus number 2
     ohci-platform 1f058000.usb: irq 29, io mem 0x1f058000
     hub 2-0:1.0: USB hub found
     hub 2-0:1.0: 4 ports detected
     usb 2-4: new low-speed USB device number 2 using ohci-platform
     input: YSPRINGTECH USB OPTICAL MOUSE as /devices/platform/bus@10000000/1f058000.usb/usb2/2-4/2-4:1.0/0003:10C4:8105.0001/input/input0
     hid-generic 0003:10C4:8105.0001: input,hidraw0: USB HID v1.11 Mouse [YSPRINGTECH USB OPTICAL MOUSE] on usb-1f058000.usb-4/input0
    
    In the later case, there is no re-connection for USB-1.0/1.1 devices,
    which is expected.
    
    Cc: stable <[email protected]>
    Reported-by: Shengwen Xiao <[email protected]>
    Signed-off-by: Huacai Chen <[email protected]>
    Reviewed-by: Alan Stern <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

USB: serial: ftdi_sio: add support for PICAXE AXE027 cable [+ + +]
Author: Ethan Nelson-Moore <[email protected]>
Date:   Wed Dec 10 18:01:17 2025 -0800

    USB: serial: ftdi_sio: add support for PICAXE AXE027 cable
    
    commit c0afe95e62984ceea171c3ea319beaf84a21181c upstream.
    
    The vendor provides instructions to write "0403 bd90" to
    /sys/bus/usb-serial/drivers/ftdi_sio/new_id; see:
    https://picaxe.com/docs/picaxe_linux_instructions.pdf
    
    Cc: [email protected]
    Signed-off-by: Ethan Nelson-Moore <[email protected]>
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

USB: serial: option: add Telit LE910 MBIM composition [+ + +]
Author: Ulrich Mohr <[email protected]>
Date:   Tue Dec 9 21:08:41 2025 +0100

    USB: serial: option: add Telit LE910 MBIM composition
    
    commit 8af4274ab5999831f4757dfd5bd11665ba3b1569 upstream.
    
    Add support for Telit LE910 module when operating in MBIM composition
    with additional ttys. This USB product ID is used by the module
    when AT#USBCFG is set to 7.
    
    0x1252: MBIM + tty(NMEA) + tty(MODEM) + tty(MODEM) + SAP
    
    T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=1252 Rev=03.18
    S:  Manufacturer=Android
    S:  Product=LE910C1-EU
    S:  SerialNumber=0123456789ABCDEF
    C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=88(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=8a(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    
    Signed-off-by: Ulrich Mohr <[email protected]>
    Cc: [email protected]
    Signed-off-by: Johan Hovold <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
usbnet: Fix using smp_processor_id() in preemptible code warnings [+ + +]
Author: Zqiang <[email protected]>
Date:   Wed Jan 21 14:51:59 2026 +0800

    usbnet: Fix using smp_processor_id() in preemptible code warnings
    
    [ Upstream commit 327cd4b68b4398b6c24f10eb2b2533ffbfc10185 ]
    
    Syzbot reported the following warning:
    
    BUG: using smp_processor_id() in preemptible [00000000] code: dhcpcd/2879
    caller is usbnet_skb_return+0x74/0x490 drivers/net/usb/usbnet.c:331
    CPU: 1 UID: 0 PID: 2879 Comm: dhcpcd Not tainted 6.15.0-rc4-syzkaller-00098-g615dca38c2ea #0 PREEMPT(voluntary)
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:94 [inline]
     dump_stack_lvl+0x16c/0x1f0 lib/dump_stack.c:120
     check_preemption_disabled+0xd0/0xe0 lib/smp_processor_id.c:49
     usbnet_skb_return+0x74/0x490 drivers/net/usb/usbnet.c:331
     usbnet_resume_rx+0x4b/0x170 drivers/net/usb/usbnet.c:708
     usbnet_change_mtu+0x1be/0x220 drivers/net/usb/usbnet.c:417
     __dev_set_mtu net/core/dev.c:9443 [inline]
     netif_set_mtu_ext+0x369/0x5c0 net/core/dev.c:9496
     netif_set_mtu+0xb0/0x160 net/core/dev.c:9520
     dev_set_mtu+0xae/0x170 net/core/dev_api.c:247
     dev_ifsioc+0xa31/0x18d0 net/core/dev_ioctl.c:572
     dev_ioctl+0x223/0x10e0 net/core/dev_ioctl.c:821
     sock_do_ioctl+0x19d/0x280 net/socket.c:1204
     sock_ioctl+0x42f/0x6a0 net/socket.c:1311
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:906 [inline]
     __se_sys_ioctl fs/ioctl.c:892 [inline]
     __x64_sys_ioctl+0x190/0x200 fs/ioctl.c:892
     do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
     do_syscall_64+0xcd/0x260 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    For historical and portability reasons, the netif_rx() is usually
    run in the softirq or interrupt context, this commit therefore add
    local_bh_disable/enable() protection in the usbnet_resume_rx().
    
    Fixes: 43daa96b166c ("usbnet: Stop RX Q on MTU change")
    Link: https://syzkaller.appspot.com/bug?id=81f55dfa587ee544baaaa5a359a060512228c1e1
    Suggested-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Zqiang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    [ The context change is due to the commit 2c04d279e857
    ("net: usb: Convert tasklet API to new bottom half workqueue mechanism")
    in v6.17 which is irrelevant to the logic of this patch.]
    Signed-off-by: Rahul Sharma <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

usbnet: limit max_mtu based on device's hard_mtu [+ + +]
Author: Laurent Vivier <[email protected]>
Date:   Mon Jan 19 08:55:18 2026 +0100

    usbnet: limit max_mtu based on device's hard_mtu
    
    [ Upstream commit c7159e960f1472a5493ac99aff0086ab1d683594 ]
    
    The usbnet driver initializes net->max_mtu to ETH_MAX_MTU before calling
    the device's bind() callback. When the bind() callback sets
    dev->hard_mtu based the device's actual capability (from CDC Ethernet's
    wMaxSegmentSize descriptor), max_mtu is never updated to reflect this
    hardware limitation).
    
    This allows userspace (DHCP or IPv6 RA) to configure MTU larger than the
    device can handle, leading to silent packet drops when the backend sends
    packet exceeding the device's buffer size.
    
    Fix this by limiting net->max_mtu to the device's hard_mtu after the
    bind callback returns.
    
    See https://gitlab.com/qemu-project/qemu/-/issues/3268 and
        https://bugs.passt.top/attachment.cgi?bugid=189
    
    Fixes: f77f0aee4da4 ("net: use core MTU range checking in USB NIC drivers")
    Signed-off-by: Laurent Vivier <[email protected]>
    Link: https://bugs.passt.top/show_bug.cgi?id=189
    Reviewed-by: Stefano Brivio <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
veth: fix data race in veth_get_ethtool_stats [+ + +]
Author: David Yang <[email protected]>
Date:   Wed Jan 14 20:24:45 2026 +0800

    veth: fix data race in veth_get_ethtool_stats
    
    [ Upstream commit b47adaab8b3d443868096bac08fdbb3d403194ba ]
    
    In veth_get_ethtool_stats(), some statistics protected by
    u64_stats_sync, are read and accumulated in ignorance of possible
    u64_stats_fetch_retry() events. These statistics, peer_tq_xdp_xmit and
    peer_tq_xdp_xmit_err, are already accumulated by veth_xdp_xmit(). Fix
    this by reading them into a temporary buffer first.
    
    Fixes: 5fe6e56776ba ("veth: rely on peer veth_rq for ndo_xdp_xmit accounting")
    Signed-off-by: David Yang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vsock/test: add a final full barrier after run all tests [+ + +]
Author: Stefano Garzarella <[email protected]>
Date:   Thu Jan 8 12:44:19 2026 +0100

    vsock/test: add a final full barrier after run all tests
    
    [ Upstream commit c39a6a277e0e67ffff6a8efcbbf7e7e23ce9e38c ]
    
    If the last test fails, the other side still completes correctly,
    which could lead to false positives.
    
    Let's add a final barrier that ensures that the last test has finished
    correctly on both sides, but also that the two sides agree on the
    number of tests to be performed.
    
    Fixes: 2f65b44e199c ("VSOCK: add full barrier between test cases")
    Reviewed-by: Luigi Leonardi <[email protected]>
    Signed-off-by: Stefano Garzarella <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vsock/test: fix seqpacket message bounds test [+ + +]
Author: Stefano Garzarella <[email protected]>
Date:   Wed Jan 21 10:36:26 2026 +0100

    vsock/test: fix seqpacket message bounds test
    
    [ Upstream commit 0a98de80136968bab7db37b16282b37f044694d3 ]
    
    The test requires the sender (client) to send all messages before waking
    up the receiver (server).
    Since virtio-vsock had a bug and did not respect the size of the TX
    buffer, this test worked, but now that we are going to fix the bug, the
    test hangs because the sender would fill the TX buffer before waking up
    the receiver.
    
    Set the buffer size in the sender (client) as well, as we already do for
    the receiver (server).
    
    Fixes: 5c338112e48a ("test/vsock: rework message bounds test")
    Signed-off-by: Stefano Garzarella <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Acked-by: Michael S. Tsirkin <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
vsock/virtio: cap TX credit to local buffer size [+ + +]
Author: Melbin K Mathew <[email protected]>
Date:   Wed Jan 21 10:36:27 2026 +0100

    vsock/virtio: cap TX credit to local buffer size
    
    [ Upstream commit 8ee784fdf006cbe8739cfa093f54d326cbf54037 ]
    
    The virtio transports derives its TX credit directly from peer_buf_alloc,
    which is set from the remote endpoint's SO_VM_SOCKETS_BUFFER_SIZE value.
    
    On the host side this means that the amount of data we are willing to
    queue for a connection is scaled by a guest-chosen buffer size, rather
    than the host's own vsock configuration. A malicious guest can advertise
    a large buffer and read slowly, causing the host to allocate a
    correspondingly large amount of sk_buff memory.
    The same thing would happen in the guest with a malicious host, since
    virtio transports share the same code base.
    
    Introduce a small helper, virtio_transport_tx_buf_size(), that
    returns min(peer_buf_alloc, buf_alloc), and use it wherever we consume
    peer_buf_alloc.
    
    This ensures the effective TX window is bounded by both the peer's
    advertised buffer and our own buf_alloc (already clamped to
    buffer_max_size via SO_VM_SOCKETS_BUFFER_MAX_SIZE), so a remote peer
    cannot force the other to queue more data than allowed by its own
    vsock settings.
    
    On an unpatched Ubuntu 22.04 host (~64 GiB RAM), running a PoC with
    32 guest vsock connections advertising 2 GiB each and reading slowly
    drove Slab/SUnreclaim from ~0.5 GiB to ~57 GiB; the system only
    recovered after killing the QEMU process. That said, if QEMU memory is
    limited with cgroups, the maximum memory used will be limited.
    
    With this patch applied:
    
      Before:
        MemFree:        ~61.6 GiB
        Slab:           ~142 MiB
        SUnreclaim:     ~117 MiB
    
      After 32 high-credit connections:
        MemFree:        ~61.5 GiB
        Slab:           ~178 MiB
        SUnreclaim:     ~152 MiB
    
    Only ~35 MiB increase in Slab/SUnreclaim, no host OOM, and the guest
    remains responsive.
    
    Compatibility with non-virtio transports:
    
      - VMCI uses the AF_VSOCK buffer knobs to size its queue pairs per
        socket based on the local vsk->buffer_* values; the remote side
        cannot enlarge those queues beyond what the local endpoint
        configured.
    
      - Hyper-V's vsock transport uses fixed-size VMBus ring buffers and
        an MTU bound; there is no peer-controlled credit field comparable
        to peer_buf_alloc, and the remote endpoint cannot drive in-flight
        kernel memory above those ring sizes.
    
      - The loopback path reuses virtio_transport_common.c, so it
        naturally follows the same semantics as the virtio transport.
    
    This change is limited to virtio_transport_common.c and thus affects
    virtio-vsock, vhost-vsock, and loopback, bringing them in line with the
    "remote window intersected with local policy" behaviour that VMCI and
    Hyper-V already effectively have.
    
    Fixes: 06a8fc78367d ("VSOCK: Introduce virtio_vsock_common.ko")
    Suggested-by: Stefano Garzarella <[email protected]>
    Signed-off-by: Melbin K Mathew <[email protected]>
    [Stefano: small adjustments after changing the previous patch]
    [Stefano: tweak the commit message]
    Signed-off-by: Stefano Garzarella <[email protected]>
    Reviewed-by: Luigi Leonardi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Acked-by: Michael S. Tsirkin <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

vsock/virtio: fix potential underflow in virtio_transport_get_credit() [+ + +]
Author: Melbin K Mathew <[email protected]>
Date:   Wed Jan 21 10:36:25 2026 +0100

    vsock/virtio: fix potential underflow in virtio_transport_get_credit()
    
    [ Upstream commit 3ef3d52a1a9860d094395c7a3e593f3aa26ff012 ]
    
    The credit calculation in virtio_transport_get_credit() uses unsigned
    arithmetic:
    
      ret = vvs->peer_buf_alloc - (vvs->tx_cnt - vvs->peer_fwd_cnt);
    
    If the peer shrinks its advertised buffer (peer_buf_alloc) while bytes
    are in flight, the subtraction can underflow and produce a large
    positive value, potentially allowing more data to be queued than the
    peer can handle.
    
    Reuse virtio_transport_has_space() which already handles this case and
    add a comment to make it clear why we are doing that.
    
    Fixes: 06a8fc78367d ("VSOCK: Introduce virtio_vsock_common.ko")
    Suggested-by: Stefano Garzarella <[email protected]>
    Signed-off-by: Melbin K Mathew <[email protected]>
    [Stefano: use virtio_transport_has_space() instead of duplicating the code]
    [Stefano: tweak the commit message]
    Signed-off-by: Stefano Garzarella <[email protected]>
    Reviewed-by: Luigi Leonardi <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Acked-by: Michael S. Tsirkin <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
w1: fix redundant counter decrement in w1_attach_slave_device() [+ + +]
Author: Haoxiang Li <[email protected]>
Date:   Thu Dec 18 19:14:14 2025 +0800

    w1: fix redundant counter decrement in w1_attach_slave_device()
    
    commit cc8f92e41eb76f450f05234fef2054afc3633100 upstream.
    
    In w1_attach_slave_device(), if __w1_attach_slave_device() fails,
    put_device() -> w1_slave_release() is called to do the cleanup job.
    In w1_slave_release(), sl->family->refcnt and sl->master->slave_count
    have already been decremented. There is no need to decrement twice
    in w1_attach_slave_device().
    
    Fixes: 2c927c0c73fd ("w1: Fix slave count on 1-Wire bus (resend)")
    Cc: [email protected]
    Signed-off-by: Haoxiang Li <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

w1: therm: Fix off-by-one buffer overflow in alarms_store [+ + +]
Author: Thorsten Blum <[email protected]>
Date:   Tue Dec 16 15:50:03 2025 +0100

    w1: therm: Fix off-by-one buffer overflow in alarms_store
    
    commit 761fcf46a1bd797bd32d23f3ea0141ffd437668a upstream.
    
    The sysfs buffer passed to alarms_store() is allocated with 'size + 1'
    bytes and a NUL terminator is appended. However, the 'size' argument
    does not account for this extra byte. The original code then allocated
    'size' bytes and used strcpy() to copy 'buf', which always writes one
    byte past the allocated buffer since strcpy() copies until the NUL
    terminator at index 'size'.
    
    Fix this by parsing the 'buf' parameter directly using simple_strtoll()
    without allocating any intermediate memory or string copying. This
    removes the overflow while simplifying the code.
    
    Cc: [email protected]
    Fixes: e2c94d6f5720 ("w1_therm: adding alarm sysfs entry")
    Signed-off-by: Thorsten Blum <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
wifi: ath10k: fix dma_free_coherent() pointer [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Mon Jan 5 22:04:38 2026 +0100

    wifi: ath10k: fix dma_free_coherent() pointer
    
    commit 9282a1e171ad8d2205067e8ec3bbe4e3cef4f29f upstream.
    
    dma_alloc_coherent() allocates a DMA mapped buffer and stores the
    addresses in XXX_unaligned fields.  Those should be reused when freeing
    the buffer rather than the aligned addresses.
    
    Fixes: 2a1e1ad3fd37 ("ath10k: Add support for 64 bit ce descriptor")
    Cc: [email protected]
    Signed-off-by: Thomas Fourier <[email protected]>
    Reviewed-by: Baochen Qiang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: ath11k: fix RCU stall while reaping monitor destination ring [+ + +]
Author: P Praneesh <[email protected]>
Date:   Wed Jan 28 11:27:15 2026 +0800

    wifi: ath11k: fix RCU stall while reaping monitor destination ring
    
    [ Upstream commit 16c6c35c03ea73054a1f6d3302a4ce4a331b427d ]
    
    While processing the monitor destination ring, MSDUs are reaped from the
    link descriptor based on the corresponding buf_id.
    
    However, sometimes the driver cannot obtain a valid buffer corresponding
    to the buf_id received from the hardware. This causes an infinite loop
    in the destination processing, resulting in a kernel crash.
    
    kernel log:
    ath11k_pci 0000:58:00.0: data msdu_pop: invalid buf_id 309
    ath11k_pci 0000:58:00.0: data dp_rx_monitor_link_desc_return failed
    ath11k_pci 0000:58:00.0: data msdu_pop: invalid buf_id 309
    ath11k_pci 0000:58:00.0: data dp_rx_monitor_link_desc_return failed
    
    Fix this by skipping the problematic buf_id and reaping the next entry,
    replacing the break with the next MSDU processing.
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.30
    Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
    
    Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
    Signed-off-by: P Praneesh <[email protected]>
    Signed-off-by: Kang Yang <[email protected]>
    Acked-by: Kalle Valo <[email protected]>
    Acked-by: Jeff Johnson <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Li hongliang <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: ath12k: fix dma_free_coherent() pointer [+ + +]
Author: Thomas Fourier <[email protected]>
Date:   Tue Jan 6 09:49:04 2026 +0100

    wifi: ath12k: fix dma_free_coherent() pointer
    
    commit bb97131fbf9b708dd9616ac2bdc793ad102b5c48 upstream.
    
    dma_alloc_coherent() allocates a DMA mapped buffer and stores the
    addresses in XXX_unaligned fields.  Those should be reused when freeing
    the buffer rather than the aligned addresses.
    
    Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
    Cc: [email protected]
    Signed-off-by: Thomas Fourier <[email protected]>
    Reviewed-by: Baochen Qiang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jeff Johnson <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: mwifiex: Fix a loop in mwifiex_update_ampdu_rxwinsize() [+ + +]
Author: Dan Carpenter <[email protected]>
Date:   Thu Jan 8 23:00:24 2026 +0300

    wifi: mwifiex: Fix a loop in mwifiex_update_ampdu_rxwinsize()
    
    commit 2120f3a3738a65730c81bf10447b1ff776078915 upstream.
    
    The "i" iterator variable is used to count two different things but
    unfortunately we can't store two different numbers in the same variable.
    Use "i" for the outside loop and "j" for the inside loop.
    
    Cc: [email protected]
    Fixes: d219b7eb3792 ("mwifiex: handle BT coex event to adjust Rx BA window size")
    Signed-off-by: Dan Carpenter <[email protected]>
    Reviewed-by: Jeff Chen <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: rsi: Fix memory corruption due to not set vif driver data size [+ + +]
Author: Marek Vasut <[email protected]>
Date:   Sat Jan 10 00:56:29 2026 +0100

    wifi: rsi: Fix memory corruption due to not set vif driver data size
    
    commit 4f431d88ea8093afc7ba55edf4652978c5a68f33 upstream.
    
    The struct ieee80211_vif contains trailing space for vif driver data,
    when struct ieee80211_vif is allocated, the total memory size that is
    allocated is sizeof(struct ieee80211_vif) + size of vif driver data.
    The size of vif driver data is set by each WiFi driver as needed.
    
    The RSI911x driver does not set vif driver data size, no trailing space
    for vif driver data is therefore allocated past struct ieee80211_vif .
    The RSI911x driver does however use the vif driver data to store its
    vif driver data structure "struct vif_priv". An access to vif->drv_priv
    leads to access out of struct ieee80211_vif bounds and corruption of
    some memory.
    
    In case of the failure observed locally, rsi_mac80211_add_interface()
    would write struct vif_priv *vif_info = (struct vif_priv *)vif->drv_priv;
    vif_info->vap_id = vap_idx. This write corrupts struct fq_tin member
    struct list_head new_flows . The flow = list_first_entry(head, struct
    fq_flow, flowchain); in fq_tin_reset() then reports non-NULL bogus
    address, which when accessed causes a crash.
    
    The trigger is very simple, boot the machine with init=/bin/sh , mount
    devtmpfs, sysfs, procfs, and then do "ip link set wlan0 up", "sleep 1",
    "ip link set wlan0 down" and the crash occurs.
    
    Fix this by setting the correct size of vif driver data, which is the
    size of "struct vif_priv", so that memory is allocated and the driver
    can store its driver data in it, instead of corrupting memory around
    it.
    
    Cc: [email protected]
    Fixes: dad0d04fa7ba ("rsi: Add RS9113 wireless driver")
    Signed-off-by: Marek Vasut <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/fpu: Clear XSTATE_BV[i] in guest XSAVE state whenever XFD[i]=1 [+ + +]
Author: Sean Christopherson <[email protected]>
Date:   Mon Jan 19 10:28:25 2026 -0500

    x86/fpu: Clear XSTATE_BV[i] in guest XSAVE state whenever XFD[i]=1
    
    [ Upstream commit b45f721775947a84996deb5c661602254ce25ce6 ]
    
    When loading guest XSAVE state via KVM_SET_XSAVE, and when updating XFD in
    response to a guest WRMSR, clear XFD-disabled features in the saved (or to
    be restored) XSTATE_BV to ensure KVM doesn't attempt to load state for
    features that are disabled via the guest's XFD.  Because the kernel
    executes XRSTOR with the guest's XFD, saving XSTATE_BV[i]=1 with XFD[i]=1
    will cause XRSTOR to #NM and panic the kernel.
    
    E.g. if fpu_update_guest_xfd() sets XFD without clearing XSTATE_BV:
    
      ------------[ cut here ]------------
      WARNING: arch/x86/kernel/traps.c:1524 at exc_device_not_available+0x101/0x110, CPU#29: amx_test/848
      Modules linked in: kvm_intel kvm irqbypass
      CPU: 29 UID: 1000 PID: 848 Comm: amx_test Not tainted 6.19.0-rc2-ffa07f7fd437-x86_amx_nm_xfd_non_init-vm #171 NONE
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
      RIP: 0010:exc_device_not_available+0x101/0x110
      Call Trace:
       <TASK>
       asm_exc_device_not_available+0x1a/0x20
      RIP: 0010:restore_fpregs_from_fpstate+0x36/0x90
       switch_fpu_return+0x4a/0xb0
       kvm_arch_vcpu_ioctl_run+0x1245/0x1e40 [kvm]
       kvm_vcpu_ioctl+0x2c3/0x8f0 [kvm]
       __x64_sys_ioctl+0x8f/0xd0
       do_syscall_64+0x62/0x940
       entry_SYSCALL_64_after_hwframe+0x4b/0x53
       </TASK>
      ---[ end trace 0000000000000000 ]---
    
    This can happen if the guest executes WRMSR(MSR_IA32_XFD) to set XFD[18] = 1,
    and a host IRQ triggers kernel_fpu_begin() prior to the vmexit handler's
    call to fpu_update_guest_xfd().
    
    and if userspace stuffs XSTATE_BV[i]=1 via KVM_SET_XSAVE:
    
      ------------[ cut here ]------------
      WARNING: arch/x86/kernel/traps.c:1524 at exc_device_not_available+0x101/0x110, CPU#14: amx_test/867
      Modules linked in: kvm_intel kvm irqbypass
      CPU: 14 UID: 1000 PID: 867 Comm: amx_test Not tainted 6.19.0-rc2-2dace9faccd6-x86_amx_nm_xfd_non_init-vm #168 NONE
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
      RIP: 0010:exc_device_not_available+0x101/0x110
      Call Trace:
       <TASK>
       asm_exc_device_not_available+0x1a/0x20
      RIP: 0010:restore_fpregs_from_fpstate+0x36/0x90
       fpu_swap_kvm_fpstate+0x6b/0x120
       kvm_load_guest_fpu+0x30/0x80 [kvm]
       kvm_arch_vcpu_ioctl_run+0x85/0x1e40 [kvm]
       kvm_vcpu_ioctl+0x2c3/0x8f0 [kvm]
       __x64_sys_ioctl+0x8f/0xd0
       do_syscall_64+0x62/0x940
       entry_SYSCALL_64_after_hwframe+0x4b/0x53
       </TASK>
      ---[ end trace 0000000000000000 ]---
    
    The new behavior is consistent with the AMX architecture.  Per Intel's SDM,
    XSAVE saves XSTATE_BV as '0' for components that are disabled via XFD
    (and non-compacted XSAVE saves the initial configuration of the state
    component):
    
      If XSAVE, XSAVEC, XSAVEOPT, or XSAVES is saving the state component i,
      the instruction does not generate #NM when XCR0[i] = IA32_XFD[i] = 1;
      instead, it operates as if XINUSE[i] = 0 (and the state component was
      in its initial state): it saves bit i of XSTATE_BV field of the XSAVE
      header as 0; in addition, XSAVE saves the initial configuration of the
      state component (the other instructions do not save state component i).
    
    Alternatively, KVM could always do XRSTOR with XFD=0, e.g. by using
    a constant XFD based on the set of enabled features when XSAVEing for
    a struct fpu_guest.  However, having XSTATE_BV[i]=1 for XFD-disabled
    features can only happen in the above interrupt case, or in similar
    scenarios involving preemption on preemptible kernels, because
    fpu_swap_kvm_fpstate()'s call to save_fpregs_to_fpstate() saves the
    outgoing FPU state with the current XFD; and that is (on all but the
    first WRMSR to XFD) the guest XFD.
    
    Therefore, XFD can only go out of sync with XSTATE_BV in the above
    interrupt case, or in similar scenarios involving preemption on
    preemptible kernels, and it we can consider it (de facto) part of KVM
    ABI that KVM_GET_XSAVE returns XSTATE_BV[i]=0 for XFD-disabled features.
    
    Reported-by: Paolo Bonzini <[email protected]>
    Cc: [email protected]
    Fixes: 820a6ee944e7 ("kvm: x86: Add emulation for IA32_XFD", 2022-01-14)
    Signed-off-by: Sean Christopherson <[email protected]>
    [Move clearing of XSTATE_BV from fpu_copy_uabi_to_guest_fpstate
     to kvm_vcpu_ioctl_x86_set_xsave. - Paolo]
    Reviewed-by: Binbin Wu <[email protected]>
    Signed-off-by: Paolo Bonzini <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/kaslr: Recognize all ZONE_DEVICE users as physaddr consumers [+ + +]
Author: Dan Williams <[email protected]>
Date:   Thu Nov 6 15:13:50 2025 -0800

    x86/kaslr: Recognize all ZONE_DEVICE users as physaddr consumers
    
    commit 269031b15c1433ff39e30fa7ea3ab8f0be9d6ae2 upstream.
    
    Commit 7ffb791423c7 ("x86/kaslr: Reduce KASLR entropy on most x86 systems")
    is too narrow. The effect being mitigated in that commit is caused by
    ZONE_DEVICE which PCI_P2PDMA has a dependency. ZONE_DEVICE, in general,
    lets any physical address be added to the direct-map. I.e. not only ACPI
    hotplug ranges, CXL Memory Windows, or EFI Specific Purpose Memory, but
    also any PCI MMIO range for the DEVICE_PRIVATE and PCI_P2PDMA cases. Update
    the mitigation, limit KASLR entropy, to apply in all ZONE_DEVICE=y cases.
    
    Distro kernels typically have PCI_P2PDMA=y, so the practical exposure of
    this problem is limited to the PCI_P2PDMA=n case.
    
    A potential path to recover entropy would be to walk ACPI and determine the
    limits for hotplug and PCI MMIO before kernel_randomize_memory(). On
    smaller systems that could yield some KASLR address bits. This needs
    additional investigation to determine if some limited ACPI table scanning
    can happen this early without an open coded solution like
    arch/x86/boot/compressed/acpi.c needs to deploy.
    
    Cc: Ingo Molnar <[email protected]>
    Cc: Kees Cook <[email protected]>
    Cc: Bjorn Helgaas <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Andy Lutomirski <[email protected]>
    Cc: Logan Gunthorpe <[email protected]>
    Cc: Andrew Morton <[email protected]>
    Cc: David Hildenbrand <[email protected]>
    Cc: Lorenzo Stoakes <[email protected]>
    Cc: "Liam R. Howlett" <[email protected]>
    Cc: Vlastimil Babka <[email protected]>
    Cc: Mike Rapoport <[email protected]>
    Cc: Suren Baghdasaryan <[email protected]>
    Cc: Michal Hocko <[email protected]>
    Fixes: 7ffb791423c7 ("x86/kaslr: Reduce KASLR entropy on most x86 systems")
    Cc: <[email protected]>
    Signed-off-by: Dan Williams <[email protected]>
    Reviewed-by: Balbir Singh <[email protected]>
    Tested-by: Yasunori Goto <[email protected]>
    Acked-by: Dave Hansen <[email protected]>
    Link: http://patch.msgid.link/[email protected]
    Signed-off-by: Dave Jiang <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/kfence: avoid writing L1TF-vulnerable PTEs [+ + +]
Author: Andrew Cooper <[email protected]>
Date:   Tue Jan 6 18:04:26 2026 +0000

    x86/kfence: avoid writing L1TF-vulnerable PTEs
    
    commit b505f1944535f83d369ae68813e7634d11b990d3 upstream.
    
    For native, the choice of PTE is fine.  There's real memory backing the
    non-present PTE.  However, for XenPV, Xen complains:
    
      (XEN) d1 L1TF-vulnerable L1e 8010000018200066 - Shadowing
    
    To explain, some background on XenPV pagetables:
    
      Xen PV guests are control their own pagetables; they choose the new
      PTE value, and use hypercalls to make changes so Xen can audit for
      safety.
    
      In addition to a regular reference count, Xen also maintains a type
      reference count.  e.g.  SegDesc (referenced by vGDT/vLDT), Writable
      (referenced with _PAGE_RW) or L{1..4} (referenced by vCR3 or a lower
      pagetable level).  This is in order to prevent e.g.  a page being
      inserted into the pagetables for which the guest has a writable mapping.
    
      For non-present mappings, all other bits become software accessible,
      and typically contain metadata rather a real frame address.  There is
      nothing that a reference count could sensibly be tied to.  As such, even
      if Xen could recognise the address as currently safe, nothing would
      prevent that frame from changing owner to another VM in the future.
    
      When Xen detects a PV guest writing a L1TF-PTE, it responds by
      activating shadow paging.  This is normally only used for the live phase
      of migration, and comes with a reasonable overhead.
    
    KFENCE only cares about getting #PF to catch wild accesses; it doesn't
    care about the value for non-present mappings.  Use a fully inverted PTE,
    to avoid hitting the slow path when running under Xen.
    
    While adjusting the logic, take the opportunity to skip all actions if the
    PTE is already in the right state, half the number PVOps callouts, and
    skip TLB maintenance on a !P -> P transition which benefits non-Xen cases
    too.
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 1dc0da6e9ec0 ("x86, kfence: enable KFENCE for x86")
    Signed-off-by: Andrew Cooper <[email protected]>
    Tested-by: Marco Elver <[email protected]>
    Cc: Alexander Potapenko <[email protected]>
    Cc: Marco Elver <[email protected]>
    Cc: Dmitry Vyukov <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: Ingo Molnar <[email protected]>
    Cc: Borislav Petkov <[email protected]>
    Cc: Dave Hansen <[email protected]>
    Cc: "H. Peter Anvin" <[email protected]>
    Cc: Jann Horn <[email protected]>
    Cc: <[email protected]>
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86/resctrl: Add missing resctrl initialization for Hygon [+ + +]
Author: Xiaochen Shen <[email protected]>
Date:   Tue Dec 9 14:26:49 2025 +0800

    x86/resctrl: Add missing resctrl initialization for Hygon
    
    commit 6ee98aabdc700b5705e4f1833e2edc82a826b53b upstream.
    
    Hygon CPUs supporting Platform QoS features currently undergo partial resctrl
    initialization through resctrl_cpu_detect() in the Hygon BSP init helper and
    AMD/Hygon common initialization code. However, several critical data
    structures remain uninitialized for Hygon CPUs in the following paths:
    
     - get_mem_config()-> __rdt_get_mem_config_amd():
         rdt_resource::membw,alloc_capable
         hw_res::num_closid
    
     - rdt_init_res_defs()->rdt_init_res_defs_amd():
         rdt_resource::cache
         hw_res::msr_base,msr_update
    
    Add the missing AMD/Hygon common initialization to ensure proper Platform QoS
    functionality on Hygon CPUs.
    
    Fixes: d8df126349da ("x86/cpu/hygon: Add missing resctrl_cpu_detect() in bsp_init helper")
    Signed-off-by: Xiaochen Shen <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Reinette Chatre <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

x86/resctrl: Fix memory bandwidth counter width for Hygon [+ + +]
Author: Xiaochen Shen <[email protected]>
Date:   Tue Dec 9 14:26:50 2025 +0800

    x86/resctrl: Fix memory bandwidth counter width for Hygon
    
    commit 7517e899e1b87b4c22a92c7e40d8733c48e4ec3c upstream.
    
    The memory bandwidth calculation relies on reading the hardware counter
    and measuring the delta between samples. To ensure accurate measurement,
    the software reads the counter frequently enough to prevent it from
    rolling over twice between reads.
    
    The default Memory Bandwidth Monitoring (MBM) counter width is 24 bits.
    Hygon CPUs provide a 32-bit width counter, but they do not support the
    MBM capability CPUID leaf (0xF.[ECX=1]:EAX) to report the width offset
    (from 24 bits).
    
    Consequently, the kernel falls back to the 24-bit default counter width,
    which causes incorrect overflow handling on Hygon CPUs.
    
    Fix this by explicitly setting the counter width offset to 8 bits (resulting
    in a 32-bit total counter width) for Hygon CPUs.
    
    Fixes: d8df126349da ("x86/cpu/hygon: Add missing resctrl_cpu_detect() in bsp_init helper")
    Signed-off-by: Xiaochen Shen <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Reviewed-by: Tony Luck <[email protected]>
    Reviewed-by: Reinette Chatre <[email protected]>
    Cc: [email protected]
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
x86: make page fault handling disable interrupts properly [+ + +]
Author: Cedric Xing <[email protected]>
Date:   Thu Jan 22 18:39:15 2026 -0600

    x86: make page fault handling disable interrupts properly
    
    [ Upstream commit 614da1d3d4cdbd6e41aea06bc97ec15aacff6daf ]
    
    There's a big comment in the x86 do_page_fault() about our interrupt
    disabling code:
    
        * User address page fault handling might have reenabled
        * interrupts. Fixing up all potential exit points of
        * do_user_addr_fault() and its leaf functions is just not
        * doable w/o creating an unholy mess or turning the code
        * upside down.
    
    but it turns out that comment is subtly wrong, and the code as a result
    is also wrong.
    
    Because it's certainly true that we may have re-enabled interrupts when
    handling user page faults.  And it's most certainly true that we don't
    want to bother fixing up all the cases.
    
    But what isn't true is that it's limited to user address page faults.
    
    The confusion stems from the fact that we have logic here that depends
    on the address range of the access, but other code then depends on the
    _context_ the access was done in.  The two are not related, even though
    both of them are about user-vs-kernel.
    
    In other words, both user and kernel addresses can cause interrupts to
    have been enabled (eg when __bad_area_nosemaphore() gets called for user
    accesses to kernel addresses).  As a result we should make sure to
    disable interrupts again regardless of the address range before
    returning to the low-level fault handling code.
    
    The __bad_area_nosemaphore() code actually did disable interrupts again
    after enabling them, just not consistently.  Ironically, as noted in the
    original comment, fixing up all the cases is just not worth it, when the
    simple solution is to just do it unconditionally in one single place.
    
    So remove the incomplete case that unsuccessfully tried to do what the
    comment said was "not doable" in commit ca4c6a9858c2 ("x86/traps: Make
    interrupt enable/disable symmetric in C code"), and just make it do the
    simple and straightforward thing.
    
    Signed-off-by: Cedric Xing <[email protected]>
    Reviewed-by: Dave Hansen <[email protected]>
    Fixes: ca4c6a9858c2 ("x86/traps: Make interrupt enable/disable symmetric in C code")
    Cc: Peter Zijlstra <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
xfrm: Fix inner mode lookup in tunnel mode GSO segmentation [+ + +]
Author: Jianbo Liu <[email protected]>
Date:   Thu Nov 20 05:56:09 2025 +0200

    xfrm: Fix inner mode lookup in tunnel mode GSO segmentation
    
    [ Upstream commit 3d5221af9c7711b7aec8da1298c8fc393ef6183d ]
    
    Commit 61fafbee6cfe ("xfrm: Determine inner GSO type from packet inner
    protocol") attempted to fix GSO segmentation by reading the inner
    protocol from XFRM_MODE_SKB_CB(skb)->protocol. This was incorrect
    because the field holds the inner L4 protocol (TCP/UDP) instead of the
    required tunnel protocol. Also, the memory location (shared by
    XFRM_SKB_CB(skb) which could be overwritten by xfrm_replay_overflow())
    is prone to corruption. This combination caused the kernel to select
    the wrong inner mode and get the wrong address family.
    
    The correct value is in xfrm_offload(skb)->proto, which is set from
    the outer tunnel header's protocol field by esp[4|6]_gso_encap(). It
    is initialized by xfrm[4|6]_tunnel_encap_add() to either IPPROTO_IPIP
    or IPPROTO_IPV6, using xfrm_af2proto() and correctly reflects the
    inner packet's address family.
    
    Fixes: 61fafbee6cfe ("xfrm: Determine inner GSO type from packet inner protocol")
    Signed-off-by: Jianbo Liu <[email protected]>
    Reviewed-by: Sabrina Dubroca <[email protected]>
    Signed-off-by: Steffen Klassert <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>