Changelog in Linux kernel 6.6.118

 
ALSA: usb-audio: fix uac2 clock source at terminal parser [+ + +]
Author: René Rebe <rene@exactco.de>
Date:   Tue Nov 25 15:41:49 2025 +0100

    ALSA: usb-audio: fix uac2 clock source at terminal parser
    
    [ Upstream commit d26e9f669cc0a6a85cf17180c09a6686db9f4002 ]
    
    Since 8b3a087f7f65 ("ALSA: usb-audio: Unify virtual type units type to
    UAC3 values") usb-audio is using UAC3_CLOCK_SOURCE instead of
    bDescriptorSubtype, later refactored with e0ccdef9265 ("ALSA: usb-audio:
    Clean up check_input_term()") into parse_term_uac2_clock_source().
    
    This breaks the clock source selection for at least my
    1397:0003 BEHRINGER International GmbH FCA610 Pro.
    
    Fix by using UAC2_CLOCK_SOURCE in parse_term_uac2_clock_source().
    
    Fixes: 8b3a087f7f65 ("ALSA: usb-audio: Unify virtual type units type to UAC3 values")
    Signed-off-by: René Rebe <rene@exactco.de>
    Link: https://patch.msgid.link/20251125.154149.1121389544970412061.rene@exactco.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ata: libata-scsi: Add missing scsi_device_put() in ata_scsi_dev_rescan() [+ + +]
Author: Yihang Li <liyihang9@h-partners.com>
Date:   Thu Nov 20 11:50:23 2025 +0800

    ata: libata-scsi: Add missing scsi_device_put() in ata_scsi_dev_rescan()
    
    commit b32cc17d607e8ae7af037303fe101368cb4dc44c upstream.
    
    Call scsi_device_put() in ata_scsi_dev_rescan() if the device or its
    queue are not running.
    
    Fixes: 0c76106cb975 ("scsi: sd: Fix TCG OPAL unlock on system resume")
    Cc: stable@vger.kernel.org
    Signed-off-by: Yihang Li <liyihang9@h-partners.com>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ata: libata-scsi: Fix system suspend for a security locked drive [+ + +]
Author: Niklas Cassel <cassel@kernel.org>
Date:   Wed Nov 19 15:13:14 2025 +0100

    ata: libata-scsi: Fix system suspend for a security locked drive
    
    commit b11890683380a36b8488229f818d5e76e8204587 upstream.
    
    Commit cf3fc037623c ("ata: libata-scsi: Fix ata_to_sense_error() status
    handling") fixed ata_to_sense_error() to properly generate sense key
    ABORTED COMMAND (without any additional sense code), instead of the
    previous bogus sense key ILLEGAL REQUEST with the additional sense code
    UNALIGNED WRITE COMMAND, for a failed command.
    
    However, this broke suspend for Security locked drives (drives that have
    Security enabled, and have not been Security unlocked by boot firmware).
    
    The reason for this is that the SCSI disk driver, for the Synchronize
    Cache command only, treats any sense data with sense key ILLEGAL REQUEST
    as a successful command (regardless of ASC / ASCQ).
    
    After commit cf3fc037623c ("ata: libata-scsi: Fix ata_to_sense_error()
    status handling") the code that treats any sense data with sense key
    ILLEGAL REQUEST as a successful command is no longer applicable, so the
    command fails, which causes the system suspend to be aborted:
    
      sd 1:0:0:0: PM: dpm_run_callback(): scsi_bus_suspend returns -5
      sd 1:0:0:0: PM: failed to suspend async: error -5
      PM: Some devices failed to suspend, or early wake event detected
    
    To make suspend work once again, for a Security locked device only,
    return sense data LOGICAL UNIT ACCESS NOT AUTHORIZED, the actual sense
    data which a real SCSI device would have returned if locked.
    The SCSI disk driver treats this sense data as a successful command.
    
    Cc: stable@vger.kernel.org
    Reported-by: Ilia Baryshnikov <qwelias@gmail.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220704
    Fixes: cf3fc037623c ("ata: libata-scsi: Fix ata_to_sense_error() status handling")
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
bcma: don't register devices disabled in OF [+ + +]
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Fri Oct 3 14:51:26 2025 +0200

    bcma: don't register devices disabled in OF
    
    [ Upstream commit a2a69add80411dd295c9088c1bcf925b1f4e53d7 ]
    
    Some bus devices can be marked as disabled for specific SoCs or models.
    Those should not be registered to avoid probing them.
    
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Link: https://patch.msgid.link/20251003125126.27950-1-zajec5@gmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
be2net: pass wrb_params in case of OS2BMC [+ + +]
Author: Andrey Vatoropin <a.vatoropin@crpt.ru>
Date:   Wed Nov 19 10:51:12 2025 +0000

    be2net: pass wrb_params in case of OS2BMC
    
    commit 7d277a7a58578dd62fd546ddaef459ec24ccae36 upstream.
    
    be_insert_vlan_in_pkt() is called with the wrb_params argument being NULL
    at be_send_pkt_to_bmc() call site.  This may lead to dereferencing a NULL
    pointer when processing a workaround for specific packet, as commit
    bc0c3405abbb ("be2net: fix a Tx stall bug caused by a specific ipv6
    packet") states.
    
    The correct way would be to pass the wrb_params from be_xmit().
    
    Fixes: 760c295e0e8d ("be2net: Support for OS2BMC.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Andrey Vatoropin <a.vatoropin@crpt.ru>
    Link: https://patch.msgid.link/20251119105015.194501-1-a.vatoropin@crpt.ru
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cifs: fix memory leak in smb3_fs_context_parse_param error path [+ + +]
Author: Shaurya Rane <ssrane_b23@ee.vjti.ac.in>
Date:   Tue Nov 18 20:32:57 2025 +0530

    cifs: fix memory leak in smb3_fs_context_parse_param error path
    
    [ Upstream commit 7e4d9120cfa413dd34f4f434befc5dbe6c38b2e5 ]
    
    Add proper cleanup of ctx->source and fc->source to the
    cifs_parse_mount_err error handler. This ensures that memory allocated
    for the source strings is correctly freed on all error paths, matching
    the cleanup already performed in the success path by
    smb3_cleanup_fs_context_contents().
    Pointers are also set to NULL after freeing to prevent potential
    double-free issues.
    
    This change fixes a memory leak originally detected by syzbot. The
    leak occurred when processing Opt_source mount options if an error
    happened after ctx->source and fc->source were successfully
    allocated but before the function completed.
    
    The specific leak sequence was:
    1. ctx->source = smb3_fs_context_fullpath(ctx, '/') allocates memory
    2. fc->source = kstrdup(ctx->source, GFP_KERNEL) allocates more memory
    3. A subsequent error jumps to cifs_parse_mount_err
    4. The old error handler freed passwords but not the source strings,
    causing the memory to leak.
    
    This issue was not addressed by commit e8c73eb7db0a ("cifs: client:
    fix memory leak in smb3_fs_context_parse_param"), which only fixed
    leaks from repeated fsconfig() calls but not this error path.
    
    Patch updated with minor change suggested by kernel test robot
    
    Reported-by: syzbot+87be6809ed9bf6d718e3@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=87be6809ed9bf6d718e3
    Fixes: 24e0a1eff9e2 ("cifs: switch to new mount api")
    Reviewed-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Shaurya Rane <ssrane_b23@ee.vjti.ac.in>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

cifs: fix typo in enable_gcm_256 module parameter [+ + +]
Author: Steve French <stfrench@microsoft.com>
Date:   Fri Oct 24 21:17:01 2025 -0500

    cifs: fix typo in enable_gcm_256 module parameter
    
    [ Upstream commit f765fdfcd8b5bce92c6aa1a517ff549529ddf590 ]
    
    Fix typo in description of enable_gcm_256 module parameter
    
    Suggested-by: Thomas Spear <speeddymon@gmail.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
crash: fix crashkernel resource shrink [+ + +]
Author: Sourabh Jain <sourabhjain@linux.ibm.com>
Date:   Fri Nov 21 10:11:40 2025 -0500

    crash: fix crashkernel resource shrink
    
    [ Upstream commit 00fbff75c5acb4755f06f08bd1071879c63940c5 ]
    
    When crashkernel is configured with a high reservation, shrinking its
    value below the low crashkernel reservation causes two issues:
    
    1. Invalid crashkernel resource objects
    2. Kernel crash if crashkernel shrinking is done twice
    
    For example, with crashkernel=200M,high, the kernel reserves 200MB of high
    memory and some default low memory (say 256MB).  The reservation appears
    as:
    
    cat /proc/iomem | grep -i crash
    af000000-beffffff : Crash kernel
    433000000-43f7fffff : Crash kernel
    
    If crashkernel is then shrunk to 50MB (echo 52428800 >
    /sys/kernel/kexec_crash_size), /proc/iomem still shows 256MB reserved:
    af000000-beffffff : Crash kernel
    
    Instead, it should show 50MB:
    af000000-b21fffff : Crash kernel
    
    Further shrinking crashkernel to 40MB causes a kernel crash with the
    following trace (x86):
    
    BUG: kernel NULL pointer dereference, address: 0000000000000038
    PGD 0 P4D 0
    Oops: 0000 [#1] PREEMPT SMP NOPTI
    <snip...>
    Call Trace: <TASK>
    ? __die_body.cold+0x19/0x27
    ? page_fault_oops+0x15a/0x2f0
    ? search_module_extables+0x19/0x60
    ? search_bpf_extables+0x5f/0x80
    ? exc_page_fault+0x7e/0x180
    ? asm_exc_page_fault+0x26/0x30
    ? __release_resource+0xd/0xb0
    release_resource+0x26/0x40
    __crash_shrink_memory+0xe5/0x110
    crash_shrink_memory+0x12a/0x190
    kexec_crash_size_store+0x41/0x80
    kernfs_fop_write_iter+0x141/0x1f0
    vfs_write+0x294/0x460
    ksys_write+0x6d/0xf0
    <snip...>
    
    This happens because __crash_shrink_memory()/kernel/crash_core.c
    incorrectly updates the crashk_res resource object even when
    crashk_low_res should be updated.
    
    Fix this by ensuring the correct crashkernel resource object is updated
    when shrinking crashkernel memory.
    
    Link: https://lkml.kernel.org/r/20251101193741.289252-1-sourabhjain@linux.ibm.com
    Fixes: 16c6006af4d4 ("kexec: enable kexec_crash_size to support two crash kernel regions")
    Signed-off-by: Sourabh Jain <sourabhjain@linux.ibm.com>
    Acked-by: Baoquan He <bhe@redhat.com>
    Cc: Zhen Lei <thunder.leizhen@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    [ Applied fix to `kernel/kexec_core.c` instead of `kernel/crash_core.c` ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
devlink: rate: Unset parent pointer in devl_rate_nodes_destroy [+ + +]
Author: Shay Drory <shayd@nvidia.com>
Date:   Mon Nov 17 14:05:49 2025 +0200

    devlink: rate: Unset parent pointer in devl_rate_nodes_destroy
    
    [ Upstream commit f94c1a114ac209977bdf5ca841b98424295ab1f0 ]
    
    The function devl_rate_nodes_destroy is documented to "Unset parent for
    all rate objects". However, it was only calling the driver-specific
    `rate_leaf_parent_set` or `rate_node_parent_set` ops and decrementing
    the parent's refcount, without actually setting the
    `devlink_rate->parent` pointer to NULL.
    
    This leaves a dangling pointer in the `devlink_rate` struct, which cause
    refcount error in netdevsim[1] and mlx5[2]. In addition, this is
    inconsistent with the behavior of `devlink_nl_rate_parent_node_set`,
    where the parent pointer is correctly cleared.
    
    This patch fixes the issue by explicitly setting `devlink_rate->parent`
    to NULL after notifying the driver, thus fulfilling the function's
    documented behavior for all rate objects.
    
    [1]
    repro steps:
    echo 1 > /sys/bus/netdevsim/new_device
    devlink dev eswitch set netdevsim/netdevsim1 mode switchdev
    echo 1 > /sys/bus/netdevsim/devices/netdevsim1/sriov_numvfs
    devlink port function rate add netdevsim/netdevsim1/test_node
    devlink port function rate set netdevsim/netdevsim1/128 parent test_node
    echo 1 > /sys/bus/netdevsim/del_device
    
    dmesg:
    refcount_t: decrement hit 0; leaking memory.
    WARNING: CPU: 8 PID: 1530 at lib/refcount.c:31 refcount_warn_saturate+0x42/0xe0
    CPU: 8 UID: 0 PID: 1530 Comm: bash Not tainted 6.18.0-rc4+ #1 NONE
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
    RIP: 0010:refcount_warn_saturate+0x42/0xe0
    Call Trace:
     <TASK>
     devl_rate_leaf_destroy+0x8d/0x90
     __nsim_dev_port_del+0x6c/0x70 [netdevsim]
     nsim_dev_reload_destroy+0x11c/0x140 [netdevsim]
     nsim_drv_remove+0x2b/0xb0 [netdevsim]
     device_release_driver_internal+0x194/0x1f0
     bus_remove_device+0xc6/0x130
     device_del+0x159/0x3c0
     device_unregister+0x1a/0x60
     del_device_store+0x111/0x170 [netdevsim]
     kernfs_fop_write_iter+0x12e/0x1e0
     vfs_write+0x215/0x3d0
     ksys_write+0x5f/0xd0
     do_syscall_64+0x55/0x10f0
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    [2]
    devlink dev eswitch set pci/0000:08:00.0 mode switchdev
    devlink port add pci/0000:08:00.0 flavour pcisf pfnum 0 sfnum 1000
    devlink port function rate add pci/0000:08:00.0/group1
    devlink port function rate set pci/0000:08:00.0/32768 parent group1
    modprobe -r mlx5_ib mlx5_fwctl mlx5_core
    
    dmesg:
    refcount_t: decrement hit 0; leaking memory.
    WARNING: CPU: 7 PID: 16151 at lib/refcount.c:31 refcount_warn_saturate+0x42/0xe0
    CPU: 7 UID: 0 PID: 16151 Comm: bash Not tainted 6.17.0-rc7_for_upstream_min_debug_2025_10_02_12_44 #1 NONE
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
    RIP: 0010:refcount_warn_saturate+0x42/0xe0
    Call Trace:
     <TASK>
     devl_rate_leaf_destroy+0x8d/0x90
     mlx5_esw_offloads_devlink_port_unregister+0x33/0x60 [mlx5_core]
     mlx5_esw_offloads_unload_rep+0x3f/0x50 [mlx5_core]
     mlx5_eswitch_unload_sf_vport+0x40/0x90 [mlx5_core]
     mlx5_sf_esw_event+0xc4/0x120 [mlx5_core]
     notifier_call_chain+0x33/0xa0
     blocking_notifier_call_chain+0x3b/0x50
     mlx5_eswitch_disable_locked+0x50/0x110 [mlx5_core]
     mlx5_eswitch_disable+0x63/0x90 [mlx5_core]
     mlx5_unload+0x1d/0x170 [mlx5_core]
     mlx5_uninit_one+0xa2/0x130 [mlx5_core]
     remove_one+0x78/0xd0 [mlx5_core]
     pci_device_remove+0x39/0xa0
     device_release_driver_internal+0x194/0x1f0
     unbind_store+0x99/0xa0
     kernfs_fop_write_iter+0x12e/0x1e0
     vfs_write+0x215/0x3d0
     ksys_write+0x5f/0xd0
     do_syscall_64+0x53/0x1f0
     entry_SYSCALL_64_after_hwframe+0x4b/0x53
    
    Fixes: d75559845078 ("devlink: Allow setting parent node of rate objects")
    Signed-off-by: Shay Drory <shayd@nvidia.com>
    Reviewed-by: Carolina Jubran <cjubran@nvidia.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/1763381149-1234377-1-git-send-email-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/amd/display: Increase DPCD read retries [+ + +]
Author: Mario Limonciello (AMD) <superm1@kernel.org>
Date:   Mon Nov 3 12:11:31 2025 -0600

    drm/amd/display: Increase DPCD read retries
    
    commit 8612badc331bcab2068baefa69e1458085ed89e3 upstream.
    
    [Why]
    Empirical measurement of some monitors that fail to read EDID while
    booting shows that the number of retries with a 30ms delay between
    tries is as high as 16.
    
    [How]
    Increase number of retries to 20.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4672
    Reviewed-by: Alex Hung <alex.hung@amd.com>
    Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
    Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
    Tested-by: Dan Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit ad1c59ad7cf74ec06e32fe2c330ac1e957222288)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

drm/amd/display: Move sleep into each retry for retrieve_link_cap() [+ + +]
Author: Mario Limonciello (AMD) <superm1@kernel.org>
Date:   Mon Nov 3 11:17:44 2025 -0600

    drm/amd/display: Move sleep into each retry for retrieve_link_cap()
    
    commit 71ad9054c1f241be63f9d11df8cbd0aa0352fe16 upstream.
    
    [Why]
    When a monitor is booting it's possible that it isn't ready to retrieve
    link caps and this can lead to an EDID read failure:
    
    ```
    [drm:retrieve_link_cap [amdgpu]] *ERROR* retrieve_link_cap: Read receiver caps dpcd data failed.
    amdgpu 0000:c5:00.0: [drm] *ERROR* No EDID read.
    ```
    
    [How]
    Rather than msleep once and try a few times, msleep each time.  Should
    be no changes for existing working monitors, but should correct reading
    caps on a monitor that is slow to boot.
    
    Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4672
    Reviewed-by: Alex Hung <alex.hung@amd.com>
    Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
    Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
    Tested-by: Dan Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 669dca37b3348a447db04bbdcbb3def94d5997cc)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amdgpu: Skip emit de meta data on gfx11 with rs64 enabled [+ + +]
Author: Yifan Zha <Yifan.Zha@amd.com>
Date:   Fri Nov 14 17:48:58 2025 +0800

    drm/amdgpu: Skip emit de meta data on gfx11 with rs64 enabled
    
    commit 80d8a9ad1587b64c545d515ab6cb7ecb9908e1b3 upstream.
    
    [Why]
    Accoreding to CP updated to RS64 on gfx11,
    WRITE_DATA with PREEMPTION_META_MEMORY(dst_sel=8) is illegal for CP FW.
    That packet is used for MCBP on F32 based system.
    So it would lead to incorrect GRBM write and FW is not handling that
    extra case correctly.
    
    [How]
    With gfx11 rs64 enabled, skip emit de meta data.
    
    Signed-off-by: Yifan Zha <Yifan.Zha@amd.com>
    Acked-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit 8366cd442d226463e673bed5d199df916f4ecbcf)
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/tegra: Add call to put_pid() [+ + +]
Author: Prateek Agarwal <praagarwal@nvidia.com>
Date:   Fri Sep 19 13:25:40 2025 +0900

    drm/tegra: Add call to put_pid()
    
    [ Upstream commit 6cbab9f0da72b4dc3c3f9161197aa3b9daa1fa3a ]
    
    Add a call to put_pid() corresponding to get_task_pid().
    host1x_memory_context_alloc() does not take ownership of the PID so we
    need to free it here to avoid leaking.
    
    Signed-off-by: Prateek Agarwal <praagarwal@nvidia.com>
    Fixes: e09db97889ec ("drm/tegra: Support context isolation")
    [mperttunen@nvidia.com: reword commit message]
    Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Link: https://patch.msgid.link/20250919-host1x-put-pid-v1-1-19c2163dfa87@nvidia.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

drm/tegra: dc: Fix reference leak in tegra_dc_couple() [+ + +]
Author: Ma Ke <make24@iscas.ac.cn>
Date:   Wed Oct 22 19:47:20 2025 +0800

    drm/tegra: dc: Fix reference leak in tegra_dc_couple()
    
    commit 4c5376b4b143c4834ebd392aef2215847752b16a upstream.
    
    driver_find_device() calls get_device() to increment the reference
    count once a matching device is found, but there is no put_device() to
    balance the reference count. To avoid reference count leakage, add
    put_device() to decrease the reference count.
    
    Found by code review.
    
    Cc: stable@vger.kernel.org
    Fixes: a31500fe7055 ("drm/tegra: dc: Restore coupling of display controllers")
    Signed-off-by: Ma Ke <make24@iscas.ac.cn>
    Acked-by: Mikko Perttunen <mperttunen@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Link: https://patch.msgid.link/20251022114720.24937-1-make24@iscas.ac.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dt-bindings: pinctrl: toshiba,visconti: Fix number of items in groups [+ + +]
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Wed Oct 22 15:34:26 2025 +0200

    dt-bindings: pinctrl: toshiba,visconti: Fix number of items in groups
    
    commit 316e361b5d2cdeb8d778983794a1c6eadcb26814 upstream.
    
    The "groups" property can hold multiple entries (e.g.
    toshiba/tmpv7708-rm-mbrc.dts file), so allow that by dropping incorrect
    type (pinmux-node.yaml schema already defines that as string-array) and
    adding constraints for items.  This fixes dtbs_check warnings like:
    
      toshiba/tmpv7708-rm-mbrc.dtb: pinctrl@24190000 (toshiba,tmpv7708-pinctrl):
        pwm-pins:groups: ['pwm0_gpio16_grp', 'pwm1_gpio17_grp', 'pwm2_gpio18_grp', 'pwm3_gpio19_grp'] is too long
    
    Fixes: 1825c1fe0057 ("pinctrl: Add DT bindings for Toshiba Visconti TMPV7700 SoC")
    Cc: stable@vger.kernel.org
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Acked-by: Conor Dooley <conor.dooley@microchip.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
exfat: check return value of sb_min_blocksize in exfat_read_boot_sector [+ + +]
Author: Yongpeng Yang <yangyongpeng@xiaomi.com>
Date:   Tue Nov 4 20:50:07 2025 +0800

    exfat: check return value of sb_min_blocksize in exfat_read_boot_sector
    
    commit f2c1f631630e01821fe4c3fdf6077bc7a8284f82 upstream.
    
    sb_min_blocksize() may return 0. Check its return value to avoid
    accessing the filesystem super block when sb->s_blocksize is 0.
    
    Cc: stable@vger.kernel.org # v6.15
    Fixes: 719c1e1829166d ("exfat: add super block operations")
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Yongpeng Yang <yangyongpeng@xiaomi.com>
    Link: https://patch.msgid.link/20251104125009.2111925-3-yangyongpeng.storage@gmail.com
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
f2fs: compress: change the first parameter of page_array_{alloc,free} to sbi [+ + +]
Author: Zhiguo Niu <zhiguo.niu@unisoc.com>
Date:   Tue Nov 25 06:40:27 2025 +0000

    f2fs: compress: change the first parameter of page_array_{alloc,free} to sbi
    
    [ Upstream commit 8e2a9b656474d67c55010f2c003ea2cf889a19ff ]
    
    No logic changes, just cleanup and prepare for fixing the UAF issue
    in f2fs_free_dic.
    
    Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
    Signed-off-by: Baocong Liu <baocong.liu@unisoc.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Bin Lan <lanbincn@139.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

f2fs: compress: fix UAF of f2fs_inode_info in f2fs_free_dic [+ + +]
Author: Zhiguo Niu <zhiguo.niu@unisoc.com>
Date:   Tue Nov 25 06:40:28 2025 +0000

    f2fs: compress: fix UAF of f2fs_inode_info in f2fs_free_dic
    
    [ Upstream commit 39868685c2a94a70762bc6d77dc81d781d05bff5 ]
    
    The decompress_io_ctx may be released asynchronously after
    I/O completion. If this file is deleted immediately after read,
    and the kworker of processing post_read_wq has not been executed yet
    due to high workloads, It is possible that the inode(f2fs_inode_info)
    is evicted and freed before it is used f2fs_free_dic.
    
        The UAF case as below:
        Thread A                                      Thread B
        - f2fs_decompress_end_io
         - f2fs_put_dic
          - queue_work
            add free_dic work to post_read_wq
                                                       - do_unlink
                                                        - iput
                                                         - evict
                                                          - call_rcu
        This file is deleted after read.
    
        Thread C                                 kworker to process post_read_wq
        - rcu_do_batch
         - f2fs_free_inode
          - kmem_cache_free
         inode is freed by rcu
                                                 - process_scheduled_works
                                                  - f2fs_late_free_dic
                                                   - f2fs_free_dic
                                                    - f2fs_release_decomp_mem
                                          read (dic->inode)->i_compress_algorithm
    
    This patch store compress_algorithm and sbi in dic to avoid inode UAF.
    
    In addition, the previous solution is deprecated in [1] may cause system hang.
    [1] https://lore.kernel.org/all/c36ab955-c8db-4a8b-a9d0-f07b5f426c3f@kernel.org
    
    Cc: Daeho Jeong <daehojeong@google.com>
    Fixes: bff139b49d9f ("f2fs: handle decompress only post processing in softirq")
    Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
    Signed-off-by: Baocong Liu <baocong.liu@unisoc.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    [ In Linux 6.6.y, the f2fs_vmalloc() function parameters are not
      related to the f2fs_sb_info structure, the code changes for
      f2fs_vmalloc() have not been backported. ]
    Signed-off-by: Bin Lan <lanbincn@139.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
ftrace: Fix BPF fexit with livepatch [+ + +]
Author: Song Liu <song@kernel.org>
Date:   Fri Nov 21 10:20:00 2025 -0500

    ftrace: Fix BPF fexit with livepatch
    
    [ Upstream commit 56b3c85e153b84f27e6cff39623ba40a1ad299d3 ]
    
    When livepatch is attached to the same function as bpf trampoline with
    a fexit program, bpf trampoline code calls register_ftrace_direct()
    twice. The first time will fail with -EAGAIN, and the second time it
    will succeed. This requires register_ftrace_direct() to unregister
    the address on the first attempt. Otherwise, the bpf trampoline cannot
    attach. Here is an easy way to reproduce this issue:
    
      insmod samples/livepatch/livepatch-sample.ko
      bpftrace -e 'fexit:cmdline_proc_show {}'
      ERROR: Unable to attach probe: fexit:vmlinux:cmdline_proc_show...
    
    Fix this by cleaning up the hash when register_ftrace_function_nolock hits
    errors.
    
    Also, move the code that resets ops->func and ops->trampoline to the error
    path of register_ftrace_direct(); and add a helper function reset_direct()
    in register_ftrace_direct() and unregister_ftrace_direct().
    
    Fixes: d05cb470663a ("ftrace: Fix modification of direct_function hash while in use")
    Cc: stable@vger.kernel.org # v6.6+
    Reported-by: Andrey Grodzovsky <andrey.grodzovsky@crowdstrike.com>
    Closes: https://lore.kernel.org/live-patching/c5058315a39d4615b333e485893345be@crowdstrike.com/
    Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
    Cc: Masami Hiramatsu (Google) <mhiramat@kernel.org>
    Acked-and-tested-by: Andrey Grodzovsky <andrey.grodzovsky@crowdstrike.com>
    Signed-off-by: Song Liu <song@kernel.org>
    Reviewed-by: Jiri Olsa <jolsa@kernel.org>
    Link: https://lore.kernel.org/r/20251027175023.1521602-2-song@kernel.org
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    [ moved cleanup to reset_direct() ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
HID: amd_sfh: Stop sensor before starting [+ + +]
Author: Mario Limonciello (AMD) <superm1@kernel.org>
Date:   Mon Nov 24 09:54:31 2025 -0500

    HID: amd_sfh: Stop sensor before starting
    
    [ Upstream commit 4d3a13afa8b64dc49293b3eab3e7beac11072c12 ]
    
    Titas reports that the accelerometer sensor on their laptop only
    works after a warm boot or unloading/reloading the amd-sfh kernel
    module.
    
    Presumably the sensor is in a bad state on cold boot and failing to
    start, so explicitly stop it before starting.
    
    Cc: stable@vger.kernel.org
    Fixes: 93ce5e0231d79 ("HID: amd_sfh: Implement SFH1.1 functionality")
    Reported-by: Titas <novatitas366@gmail.com>
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=220670
    Tested-by: Titas <novatitas366@gmail.com>
    Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    [ Adjust context ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

HID: quirks: work around VID/PID conflict for 0x4c4a/0x4155 [+ + +]
Author: Zhang Heng <zhangheng@kylinos.cn>
Date:   Fri Sep 12 20:38:18 2025 +0800

    HID: quirks: work around VID/PID conflict for 0x4c4a/0x4155
    
    commit beab067dbcff642243291fd528355d64c41dc3b2 upstream.
    
    Based on available evidence, the USB ID 4c4a:4155 used by multiple
    devices has been attributed to Jieli. The commit 1a8953f4f774
    ("HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY") affected touchscreen
    functionality. Added checks for manufacturer and serial number to
    maintain microphone compatibility, enabling both devices to function
    properly.
    
    [jkosina@suse.com: edit shortlog]
    Fixes: 1a8953f4f774 ("HID: Add IGNORE quirk for SMARTLINKTECHNOLOGY")
    Cc: stable@vger.kernel.org
    Tested-by: staffan.melin@oscillator.se
    Reviewed-by: Terry Junge <linuxhid@cosmicgizmosystems.com>
    Signed-off-by: Zhang Heng <zhangheng@kylinos.cn>
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Input: cros_ec_keyb - fix an invalid memory access [+ + +]
Author: Tzung-Bi Shih <tzungbi@kernel.org>
Date:   Tue Nov 4 07:03:10 2025 +0000

    Input: cros_ec_keyb - fix an invalid memory access
    
    commit e08969c4d65ac31297fcb4d31d4808c789152f68 upstream.
    
    If cros_ec_keyb_register_matrix() isn't called (due to
    `buttons_switches_only`) in cros_ec_keyb_probe(), `ckdev->idev` remains
    NULL.  An invalid memory access is observed in cros_ec_keyb_process()
    when receiving an EC_MKBP_EVENT_KEY_MATRIX event in cros_ec_keyb_work()
    in such case.
    
      Unable to handle kernel read from unreadable memory at virtual address 0000000000000028
      ...
      x3 : 0000000000000000 x2 : 0000000000000000
      x1 : 0000000000000000 x0 : 0000000000000000
      Call trace:
      input_event
      cros_ec_keyb_work
      blocking_notifier_call_chain
      ec_irq_thread
    
    It's still unknown about why the kernel receives such malformed event,
    in any cases, the kernel shouldn't access `ckdev->idev` and friends if
    the driver doesn't intend to initialize them.
    
    Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
    Link: https://patch.msgid.link/20251104070310.3212712-1-tzungbi@kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: goodix - add support for ACPI ID GDIX1003 [+ + +]
Author: Hans de Goede <hansg@kernel.org>
Date:   Mon Oct 13 09:15:25 2025 -0700

    Input: goodix - add support for ACPI ID GDIX1003
    
    commit c6d99e488117201c63efd747ce17b80687c3f5a9 upstream.
    
    Some newer devices use an ACPI hardware ID of GDIX1003 for their Goodix
    touchscreen controller, instead of GDIX1001 / GDIX1002. Add GDIX1003
    to the goodix_acpi_match[] table.
    
    Reported-by: Weikang Guo <guoweikang.kernel@gmail.com>
    Closes: https://lore.kernel.org/linux-input/20250225024409.1467040-1-guoweikang.kernel@gmail.com/
    Tested-by: Weikang Guo <guoweikang.kernel@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20251013121022.44333-1-hansg@kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: imx_sc_key - fix memory corruption on unload [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Sat Nov 1 16:25:27 2025 +0300

    Input: imx_sc_key - fix memory corruption on unload
    
    commit d83f1512758f4ef6fc5e83219fe7eeeb6b428ea4 upstream.
    
    This is supposed to be "priv" but we accidentally pass "&priv" which is
    an address in the stack and so it will lead to memory corruption when
    the imx_sc_key_action() function is called.  Remove the &.
    
    Fixes: 768062fd1284 ("Input: imx_sc_key - use devm_add_action_or_reset() to handle all cleanups")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Frank Li <Frank.Li@nxp.com>
    Link: https://patch.msgid.link/aQYKR75r2VMFJutT@stanley.mountain
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: pegasus-notetaker - fix potential out-of-bounds access [+ + +]
Author: Seungjin Bae <eeodqql09@gmail.com>
Date:   Fri Oct 17 15:36:31 2025 -0700

    Input: pegasus-notetaker - fix potential out-of-bounds access
    
    commit 69aeb507312306f73495598a055293fa749d454e upstream.
    
    In the pegasus_notetaker driver, the pegasus_probe() function allocates
    the URB transfer buffer using the wMaxPacketSize value from
    the endpoint descriptor. An attacker can use a malicious USB descriptor
    to force the allocation of a very small buffer.
    
    Subsequently, if the device sends an interrupt packet with a specific
    pattern (e.g., where the first byte is 0x80 or 0x42),
    the pegasus_parse_packet() function parses the packet without checking
    the allocated buffer size. This leads to an out-of-bounds memory access.
    
    Fixes: 1afca2b66aac ("Input: add Pegasus Notetaker tablet driver")
    Signed-off-by: Seungjin Bae <eeodqql09@gmail.com>
    Link: https://lore.kernel.org/r/20251007214131.3737115-2-eeodqql09@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
kconfig/mconf: Initialize the default locale at startup [+ + +]
Author: Jakub Horký <jakub.git@horky.net>
Date:   Tue Oct 14 17:49:32 2025 +0200

    kconfig/mconf: Initialize the default locale at startup
    
    [ Upstream commit 3927c4a1084c48ef97f11281a0a43ecb2cb4d6f1 ]
    
    Fix bug where make menuconfig doesn't initialize the default locale, which
    causes ncurses menu borders to be displayed incorrectly (lqqqqk) in
    UTF-8 terminals that don't support VT100 ACS by default, such as PuTTY.
    
    Signed-off-by: Jakub Horký <jakub.git@horky.net>
    Link: https://patch.msgid.link/20251014154933.3990990-1-jakub.git@horky.net
    [nathan: Alphabetize locale.h include]
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kconfig/nconf: Initialize the default locale at startup [+ + +]
Author: Jakub Horký <jakub.git@horky.net>
Date:   Tue Oct 14 16:44:06 2025 +0200

    kconfig/nconf: Initialize the default locale at startup
    
    [ Upstream commit 43c2931a95e6b295bfe9e3b90dbe0f7596933e91 ]
    
    Fix bug where make nconfig doesn't initialize the default locale, which
    causes ncurses menu borders to be displayed incorrectly (lqqqqk) in
    UTF-8 terminals that don't support VT100 ACS by default, such as PuTTY.
    
    Signed-off-by: Jakub Horký <jakub.git@horky.net>
    Link: https://patch.msgid.link/20251014144405.3975275-2-jakub.git@horky.net
    [nathan: Alphabetize locale.h include]
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
kernel.h: Move ARRAY_SIZE() to a separate header [+ + +]
Author: Alejandro Colomar <alx@kernel.org>
Date:   Tue Oct 3 14:59:53 2023 +0300

    kernel.h: Move ARRAY_SIZE() to a separate header
    
    [ Upstream commit 3cd39bc3b11b8d34b7d7c961a35fdfd18b0ebf75 ]
    
    Touching files so used for the kernel,
    forces 'make' to recompile most of the kernel.
    
    Having those definitions in more granular files
    helps avoid recompiling so much of the kernel.
    
    Signed-off-by: Alejandro Colomar <alx@kernel.org>
    Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20230817143352.132583-2-lucas.segarra.fernandez@intel.com
    [andy: reduced to cover only string.h for now]
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Stable-dep-of: 896f1a2493b5 ("net: qlogic/qede: fix potential out-of-bounds read in qede_tpa_cont() and qede_tpa_end()")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
KVM: arm64: Check the untrusted offset in FF-A memory share [+ + +]
Author: Sebastian Ene <sebastianene@google.com>
Date:   Fri Oct 17 07:57:10 2025 +0000

    KVM: arm64: Check the untrusted offset in FF-A memory share
    
    commit 103e17aac09cdd358133f9e00998b75d6c1f1518 upstream.
    
    Verify the offset to prevent OOB access in the hypervisor
    FF-A buffer in case an untrusted large enough value
    [U32_MAX - sizeof(struct ffa_composite_mem_region) + 1, U32_MAX]
    is set from the host kernel.
    
    Signed-off-by: Sebastian Ene <sebastianene@google.com>
    Acked-by: Will Deacon <will@kernel.org>
    Link: https://patch.msgid.link/20251017075710.2605118-1-sebastianene@google.com
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.6.118 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Dec 1 11:41:54 2025 +0100

    Linux 6.6.118
    
    Link: https://lore.kernel.org/r/20251127144027.800761504@linuxfoundation.org
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
LoongArch: Don't panic if no valid cache info for PCI [+ + +]
Author: Huacai Chen <chenhuacai@kernel.org>
Date:   Thu Nov 20 14:42:05 2025 +0800

    LoongArch: Don't panic if no valid cache info for PCI
    
    commit a6b533adfc05ba15360631e019d3e18275080275 upstream.
    
    If there is no valid cache info detected (may happen in virtual machine)
    for pci_dfl_cache_line_size, kernel shouldn't panic. Because in the PCI
    core it will be evaluated to (L1_CACHE_BYTES >> 2).
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

LoongArch: Use UAPI types in ptrace UAPI header [+ + +]
Author: Thomas Weißschuh <linux@weissschuh.net>
Date:   Thu Nov 20 14:42:05 2025 +0800

    LoongArch: Use UAPI types in ptrace UAPI header
    
    [ Upstream commit 20d7338f2d3bcb570068dd6d39b16f1a909fe976 ]
    
    The kernel UAPI headers already contain fixed-width integer types, there
    is no need to rely on the libc types. There may not be a libc available
    or the libc may not provides the <stdint.h>, like for example on nolibc.
    
    This also aligns the header with the rest of the LoongArch UAPI headers.
    
    Fixes: 803b0fc5c3f2 ("LoongArch: Add process management")
    Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
    Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
maple_tree: fix tracepoint string pointers [+ + +]
Author: Martin Kaiser <martin@kaiser.cx>
Date:   Thu Oct 30 16:55:05 2025 +0100

    maple_tree: fix tracepoint string pointers
    
    commit 91a54090026f84ceffaa12ac53c99b9f162946f6 upstream.
    
    maple_tree tracepoints contain pointers to function names. Such a pointer
    is saved when a tracepoint logs an event. There's no guarantee that it's
    still valid when the event is parsed later and the pointer is dereferenced.
    
    The kernel warns about these unsafe pointers.
    
            event 'ma_read' has unsafe pointer field 'fn'
            WARNING: kernel/trace/trace.c:3779 at ignore_event+0x1da/0x1e4
    
    Mark the function names as tracepoint_string() to fix the events.
    
    One case that doesn't work without my patch would be trace-cmd record
    to save the binary ringbuffer and trace-cmd report to parse it in
    userspace.  The address of __func__ can't be dereferenced from
    userspace but tracepoint_string will add an entry to
    /sys/kernel/tracing/printk_formats
    
    Link: https://lkml.kernel.org/r/20251030155537.87972-1-martin@kaiser.cx
    Fixes: 54a611b60590 ("Maple Tree: add new data structure")
    Signed-off-by: Martin Kaiser <martin@kaiser.cx>
    Acked-by: Liam R. Howlett <Liam.Howlett@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
MIPS: Malta: Fix !EVA SOC-it PCI MMIO [+ + +]
Author: Maciej W. Rozycki <macro@orcam.me.uk>
Date:   Mon Oct 20 02:11:49 2025 +0100

    MIPS: Malta: Fix !EVA SOC-it PCI MMIO
    
    commit ebd729fef31620e0bf74cbf8a4c7fda73a2a4e7e upstream.
    
    Fix a regression that has caused accesses to the PCI MMIO window to
    complete unclaimed in non-EVA configurations with the SOC-it family of
    system controllers, preventing PCI devices from working that use MMIO.
    
    In the non-EVA case PHYS_OFFSET is set to 0, meaning that PCI_BAR0 is
    set with an empty mask (and PCI_HEAD4 matches addresses starting from 0
    accordingly).  Consequently all addresses are matched for incoming DMA
    accesses from PCI.  This seems to confuse the system controller's logic
    and outgoing bus cycles targeting the PCI MMIO window seem not to make
    it to the intended devices.
    
    This happens as well when a wider mask is used with PCI_BAR0, such as
    0x80000000 or 0xe0000000, that makes addresses match that overlap with
    the PCI MMIO window, which starts at 0x10000000 in our configuration.
    
    Set the mask in PCI_BAR0 to 0xf0000000 for non-EVA then, covering the
    non-EVA maximum 256 MiB of RAM, which is what YAMON does and which used
    to work correctly up to the offending commit.  Set PCI_P2SCMSKL to match
    PCI_BAR0 as required by the system controller's specification, and match
    PCI_P2SCMAPL to PCI_HEAD4 for identity mapping.
    
    Verified with:
    
    Core board type/revision =      0x0d (Core74K) / 0x01
    System controller/revision =    MIPS SOC-it 101 OCP / 1.3   SDR-FW-4:1
    Processor Company ID/options =  0x01 (MIPS Technologies, Inc.) / 0x1c
    Processor ID/revision =         0x97 (MIPS 74Kf) / 0x4c
    
    for non-EVA and with:
    
    Core board type/revision =      0x0c (CoreFPGA-5) / 0x00
    System controller/revision =    MIPS ROC-it2 / 0.0   FW-1:1 (CLK_unknown) GIC
    Processor Company ID/options =  0x01 (MIPS Technologies, Inc.) / 0x00
    Processor ID/revision =         0xa0 (MIPS interAptiv UP) / 0x20
    
    for EVA/non-EVA, fixing:
    
    defxx 0000:00:12.0: assign IRQ: got 10
    defxx: v1.12 2021/03/10  Lawrence V. Stefani and others
    0000:00:12.0: Could not read adapter factory MAC address!
    
    vs:
    
    defxx 0000:00:12.0: assign IRQ: got 10
    defxx: v1.12 2021/03/10  Lawrence V. Stefani and others
    0000:00:12.0: DEFPA at MMIO addr = 0x10142000, IRQ = 10, Hardware addr = 00-00-f8-xx-xx-xx
    0000:00:12.0: registered as fddi0
    
    for non-EVA and causing no change for EVA.
    
    Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
    Fixes: 422dd256642b ("MIPS: Malta: Allow PCI devices DMA to lower 2GB physical")
    Cc: stable@vger.kernel.org # v4.9+
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mlxsw: spectrum: Fix memory leak in mlxsw_sp_flower_stats() [+ + +]
Author: Zilin Guan <zilin@seu.edu.cn>
Date:   Wed Nov 12 05:21:14 2025 +0000

    mlxsw: spectrum: Fix memory leak in mlxsw_sp_flower_stats()
    
    [ Upstream commit 407a06507c2358554958e8164dc97176feddcafc ]
    
    The function mlxsw_sp_flower_stats() calls mlxsw_sp_acl_ruleset_get() to
    obtain a ruleset reference. If the subsequent call to
    mlxsw_sp_acl_rule_lookup() fails to find a rule, the function returns
    an error without releasing the ruleset reference, causing a memory leak.
    
    Fix this by using a goto to the existing error handling label, which
    calls mlxsw_sp_acl_ruleset_put() to properly release the reference.
    
    Fixes: 7c1b8eb175b69 ("mlxsw: spectrum: Add support for TC flower offload statistics")
    Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://patch.msgid.link/20251112052114.1591695-1-zilin@seu.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
mm/mempool: fix poisoning order>0 pages with HIGHMEM [+ + +]
Author: Vlastimil Babka <vbabka@suse.cz>
Date:   Mon Nov 24 15:59:41 2025 -0500

    mm/mempool: fix poisoning order>0 pages with HIGHMEM
    
    [ Upstream commit ec33b59542d96830e3c89845ff833cf7b25ef172 ]
    
    The kernel test has reported:
    
      BUG: unable to handle page fault for address: fffba000
      #PF: supervisor write access in kernel mode
      #PF: error_code(0x0002) - not-present page
      *pde = 03171067 *pte = 00000000
      Oops: Oops: 0002 [#1]
      CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Tainted: G                T   6.18.0-rc2-00031-gec7f31b2a2d3 #1 NONE  a1d066dfe789f54bc7645c7989957d2bdee593ca
      Tainted: [T]=RANDSTRUCT
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
      EIP: memset (arch/x86/include/asm/string_32.h:168 arch/x86/lib/memcpy_32.c:17)
      Code: a5 8b 4d f4 83 e1 03 74 02 f3 a4 83 c4 04 5e 5f 5d 2e e9 73 41 01 00 90 90 90 3e 8d 74 26 00 55 89 e5 57 56 89 c6 89 d0 89 f7 <f3> aa 89 f0 5e 5f 5d 2e e9 53 41 01 00 cc cc cc 55 89 e5 53 57 56
      EAX: 0000006b EBX: 00000015 ECX: 001fefff EDX: 0000006b
      ESI: fffb9000 EDI: fffba000 EBP: c611fbf0 ESP: c611fbe8
      DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 EFLAGS: 00010287
      CR0: 80050033 CR2: fffba000 CR3: 0316e000 CR4: 00040690
      Call Trace:
       poison_element (mm/mempool.c:83 mm/mempool.c:102)
       mempool_init_node (mm/mempool.c:142 mm/mempool.c:226)
       mempool_init_noprof (mm/mempool.c:250 (discriminator 1))
       ? mempool_alloc_pages (mm/mempool.c:640)
       bio_integrity_initfn (block/bio-integrity.c:483 (discriminator 8))
       ? mempool_alloc_pages (mm/mempool.c:640)
       do_one_initcall (init/main.c:1283)
    
    Christoph found out this is due to the poisoning code not dealing
    properly with CONFIG_HIGHMEM because only the first page is mapped but
    then the whole potentially high-order page is accessed.
    
    We could give up on HIGHMEM here, but it's straightforward to fix this
    with a loop that's mapping, poisoning or checking and unmapping
    individual pages.
    
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Closes: https://lore.kernel.org/oe-lkp/202511111411.9ebfa1ba-lkp@intel.com
    Analyzed-by: Christoph Hellwig <hch@lst.de>
    Fixes: bdfedb76f4f5 ("mm, mempool: poison elements backed by slab allocator")
    Cc: stable@vger.kernel.org
    Tested-by: kernel test robot <oliver.sang@intel.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://patch.msgid.link/20251113-mempool-poison-v1-1-233b3ef984c3@suse.cz
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mm/mempool: replace kmap_atomic() with kmap_local_page() [+ + +]
Author: Fabio M. De Francesco <fabio.maria.de.francesco@linux.intel.com>
Date:   Mon Nov 24 15:59:40 2025 -0500

    mm/mempool: replace kmap_atomic() with kmap_local_page()
    
    [ Upstream commit f2bcc99a5e901a13b754648d1dbab60f4adf9375 ]
    
    kmap_atomic() has been deprecated in favor of kmap_local_page().
    
    Therefore, replace kmap_atomic() with kmap_local_page().
    
    kmap_atomic() is implemented like a kmap_local_page() which also disables
    page-faults and preemption (the latter only in !PREEMPT_RT kernels).  The
    kernel virtual addresses returned by these two API are only valid in the
    context of the callers (i.e., they cannot be handed to other threads).
    
    With kmap_local_page() the mappings are per thread and CPU local like in
    kmap_atomic(); however, they can handle page-faults and can be called from
    any context (including interrupts).  The tasks that call kmap_local_page()
    can be preempted and, when they are scheduled to run again, the kernel
    virtual addresses are restored and are still valid.
    
    The code blocks between the mappings and un-mappings don't rely on the
    above-mentioned side effects of kmap_atomic(), so that mere replacements
    of the old API with the new one is all that they require (i.e., there is
    no need to explicitly call pagefault_disable() and/or preempt_disable()).
    
    Link: https://lkml.kernel.org/r/20231120142640.7077-1-fabio.maria.de.francesco@linux.intel.com
    Signed-off-by: Fabio M. De Francesco <fabio.maria.de.francesco@linux.intel.com>
    Cc: Ira Weiny <ira.weiny@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Stable-dep-of: ec33b59542d9 ("mm/mempool: fix poisoning order>0 pages with HIGHMEM")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mptcp: avoid unneeded subflow-level drops [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Tue Nov 18 08:20:20 2025 +0100

    mptcp: avoid unneeded subflow-level drops
    
    commit 4f102d747cadd8f595f2b25882eed9bec1675fb1 upstream.
    
    The rcv window is shared among all the subflows. Currently, MPTCP sync
    the TCP-level rcv window with the MPTCP one at tcp_transmit_skb() time.
    
    The above means that incoming data may sporadically observe outdated
    TCP-level rcv window and being wrongly dropped by TCP.
    
    Address the issue checking for the edge condition before queuing the
    data at TCP level, and eventually syncing the rcv window as needed.
    
    Note that the issue is actually present from the very first MPTCP
    implementation, but backports older than the blamed commit below will
    range from impossible to useless.
    
    Before:
    
      $ nstat -n; sleep 1; nstat -z TcpExtBeyondWindow
      TcpExtBeyondWindow              14                 0.0
    
    After:
    
      $ nstat -n; sleep 1; nstat -z TcpExtBeyondWindow
      TcpExtBeyondWindow              0                  0.0
    
    Fixes: fa3fe2b15031 ("mptcp: track window announced to peer")
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20251118-net-mptcp-misc-fixes-6-18-rc6-v1-2-806d3781c95f@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: decouple mptcp fastclose from tcp close [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Tue Nov 18 08:20:23 2025 +0100

    mptcp: decouple mptcp fastclose from tcp close
    
    commit fff0c87996672816a84c3386797a5e69751c5888 upstream.
    
    With the current fastclose implementation, the mptcp_do_fastclose()
    helper is in charge of two distinct actions: send the fastclose reset
    and cleanup the subflows.
    
    Formally decouple the two steps, ensuring that mptcp explicitly closes
    all the subflows after the mentioned helper.
    
    This will make the upcoming fix simpler, and allows dropping the 2nd
    argument from mptcp_destroy_common(). The Fixes tag is then the same as
    in the next commit to help with the backports.
    
    Fixes: d21f83485518 ("mptcp: use fastclose on more edge scenarios")
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Geliang Tang <geliang@kernel.org>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20251118-net-mptcp-misc-fixes-6-18-rc6-v1-5-806d3781c95f@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: Disallow MPTCP subflows from sockmap [+ + +]
Author: Jiayuan Chen <jiayuan.chen@linux.dev>
Date:   Tue Nov 11 14:02:50 2025 +0800

    mptcp: Disallow MPTCP subflows from sockmap
    
    commit fbade4bd08ba52cbc74a71c4e86e736f059f99f7 upstream.
    
    The sockmap feature allows bpf syscall from userspace, or based on bpf
    sockops, replacing the sk_prot of sockets during protocol stack processing
    with sockmap's custom read/write interfaces.
    '''
    tcp_rcv_state_process()
      subflow_syn_recv_sock()
        tcp_init_transfer(BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB)
          bpf_skops_established       <== sockops
            bpf_sock_map_update(sk)   <== call bpf helper
              tcp_bpf_update_proto()  <== update sk_prot
    '''
    Consider two scenarios:
    
    1. When the server has MPTCP enabled and the client also requests MPTCP,
       the sk passed to the BPF program is a subflow sk. Since subflows only
       handle partial data, replacing their sk_prot is meaningless and will
       cause traffic disruption.
    
    2. When the server has MPTCP enabled but the client sends a TCP SYN
       without MPTCP, subflow_syn_recv_sock() performs a fallback on the
       subflow, replacing the subflow sk's sk_prot with the native sk_prot.
       '''
       subflow_ulp_fallback()
        subflow_drop_ctx()
          mptcp_subflow_ops_undo_override()
       '''
       Subsequently, accept::mptcp_stream_accept::mptcp_fallback_tcp_ops()
       converts the subflow to plain TCP.
    
    For the first case, we should prevent it from being combined with sockmap
    by setting sk_prot->psock_update_sk_prot to NULL, which will be blocked by
    sockmap's own flow.
    
    For the second case, since subflow_syn_recv_sock() has already restored
    sk_prot to native tcp_prot/tcpv6_prot, no further action is needed.
    
    Fixes: cec37a6e41aa ("mptcp: Handle MP_CAPABLE options for outgoing connections")
    Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20251111060307.194196-2-jiayuan.chen@linux.dev
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: do not fallback when OoO is present [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Tue Nov 18 08:20:22 2025 +0100

    mptcp: do not fallback when OoO is present
    
    commit 1bba3f219c5e8c29e63afa3c1fc24f875ebec119 upstream.
    
    In case of DSS corruption, the MPTCP protocol tries to avoid the subflow
    reset if fallback is possible. Such corruptions happen in the receive
    path; to ensure fallback is possible the stack additionally needs to
    check for OoO data, otherwise the fallback will break the data stream.
    
    Fixes: e32d262c89e2 ("mptcp: handle consistently DSS corruption")
    Cc: stable@vger.kernel.org
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/598
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20251118-net-mptcp-misc-fixes-6-18-rc6-v1-4-806d3781c95f@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: fix a race in mptcp_pm_del_add_timer() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Nov 24 19:46:33 2025 -0500

    mptcp: fix a race in mptcp_pm_del_add_timer()
    
    [ Upstream commit 426358d9be7ce3518966422f87b96f1bad27295f ]
    
    mptcp_pm_del_add_timer() can call sk_stop_timer_sync(sk, &entry->add_timer)
    while another might have free entry already, as reported by syzbot.
    
    Add RCU protection to fix this issue.
    
    Also change confusing add_timer variable with stop_timer boolean.
    
    syzbot report:
    
    BUG: KASAN: slab-use-after-free in __timer_delete_sync+0x372/0x3f0 kernel/time/timer.c:1616
    Read of size 4 at addr ffff8880311e4150 by task kworker/1:1/44
    
    CPU: 1 UID: 0 PID: 44 Comm: kworker/1:1 Not tainted syzkaller #0 PREEMPT_{RT,(full)}
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/02/2025
    Workqueue: events mptcp_worker
    Call Trace:
     <TASK>
      dump_stack_lvl+0x189/0x250 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
      __timer_delete_sync+0x372/0x3f0 kernel/time/timer.c:1616
      sk_stop_timer_sync+0x1b/0x90 net/core/sock.c:3631
      mptcp_pm_del_add_timer+0x283/0x310 net/mptcp/pm.c:362
      mptcp_incoming_options+0x1357/0x1f60 net/mptcp/options.c:1174
      tcp_data_queue+0xca/0x6450 net/ipv4/tcp_input.c:5361
      tcp_rcv_established+0x1335/0x2670 net/ipv4/tcp_input.c:6441
      tcp_v4_do_rcv+0x98b/0xbf0 net/ipv4/tcp_ipv4.c:1931
      tcp_v4_rcv+0x252a/0x2dc0 net/ipv4/tcp_ipv4.c:2374
      ip_protocol_deliver_rcu+0x221/0x440 net/ipv4/ip_input.c:205
      ip_local_deliver_finish+0x3bb/0x6f0 net/ipv4/ip_input.c:239
      NF_HOOK+0x30c/0x3a0 include/linux/netfilter.h:318
      NF_HOOK+0x30c/0x3a0 include/linux/netfilter.h:318
      __netif_receive_skb_one_core net/core/dev.c:6079 [inline]
      __netif_receive_skb+0x143/0x380 net/core/dev.c:6192
      process_backlog+0x31e/0x900 net/core/dev.c:6544
      __napi_poll+0xb6/0x540 net/core/dev.c:7594
      napi_poll net/core/dev.c:7657 [inline]
      net_rx_action+0x5f7/0xda0 net/core/dev.c:7784
      handle_softirqs+0x22f/0x710 kernel/softirq.c:622
      __do_softirq kernel/softirq.c:656 [inline]
      __local_bh_enable_ip+0x1a0/0x2e0 kernel/softirq.c:302
      mptcp_pm_send_ack net/mptcp/pm.c:210 [inline]
     mptcp_pm_addr_send_ack+0x41f/0x500 net/mptcp/pm.c:-1
      mptcp_pm_worker+0x174/0x320 net/mptcp/pm.c:1002
      mptcp_worker+0xd5/0x1170 net/mptcp/protocol.c:2762
      process_one_work kernel/workqueue.c:3263 [inline]
      process_scheduled_works+0xae1/0x17b0 kernel/workqueue.c:3346
      worker_thread+0x8a0/0xda0 kernel/workqueue.c:3427
      kthread+0x711/0x8a0 kernel/kthread.c:463
      ret_from_fork+0x4bc/0x870 arch/x86/kernel/process.c:158
      ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
     </TASK>
    
    Allocated by task 44:
      kasan_save_stack mm/kasan/common.c:56 [inline]
      kasan_save_track+0x3e/0x80 mm/kasan/common.c:77
      poison_kmalloc_redzone mm/kasan/common.c:400 [inline]
      __kasan_kmalloc+0x93/0xb0 mm/kasan/common.c:417
      kasan_kmalloc include/linux/kasan.h:262 [inline]
      __kmalloc_cache_noprof+0x1ef/0x6c0 mm/slub.c:5748
      kmalloc_noprof include/linux/slab.h:957 [inline]
      mptcp_pm_alloc_anno_list+0x104/0x460 net/mptcp/pm.c:385
      mptcp_pm_create_subflow_or_signal_addr+0xf9d/0x1360 net/mptcp/pm_kernel.c:355
      mptcp_pm_nl_fully_established net/mptcp/pm_kernel.c:409 [inline]
      __mptcp_pm_kernel_worker+0x417/0x1ef0 net/mptcp/pm_kernel.c:1529
      mptcp_pm_worker+0x1ee/0x320 net/mptcp/pm.c:1008
      mptcp_worker+0xd5/0x1170 net/mptcp/protocol.c:2762
      process_one_work kernel/workqueue.c:3263 [inline]
      process_scheduled_works+0xae1/0x17b0 kernel/workqueue.c:3346
      worker_thread+0x8a0/0xda0 kernel/workqueue.c:3427
      kthread+0x711/0x8a0 kernel/kthread.c:463
      ret_from_fork+0x4bc/0x870 arch/x86/kernel/process.c:158
      ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
    
    Freed by task 6630:
      kasan_save_stack mm/kasan/common.c:56 [inline]
      kasan_save_track+0x3e/0x80 mm/kasan/common.c:77
      __kasan_save_free_info+0x46/0x50 mm/kasan/generic.c:587
      kasan_save_free_info mm/kasan/kasan.h:406 [inline]
      poison_slab_object mm/kasan/common.c:252 [inline]
      __kasan_slab_free+0x5c/0x80 mm/kasan/common.c:284
      kasan_slab_free include/linux/kasan.h:234 [inline]
      slab_free_hook mm/slub.c:2523 [inline]
      slab_free mm/slub.c:6611 [inline]
      kfree+0x197/0x950 mm/slub.c:6818
      mptcp_remove_anno_list_by_saddr+0x2d/0x40 net/mptcp/pm.c:158
      mptcp_pm_flush_addrs_and_subflows net/mptcp/pm_kernel.c:1209 [inline]
      mptcp_nl_flush_addrs_list net/mptcp/pm_kernel.c:1240 [inline]
      mptcp_pm_nl_flush_addrs_doit+0x593/0xbb0 net/mptcp/pm_kernel.c:1281
      genl_family_rcv_msg_doit+0x215/0x300 net/netlink/genetlink.c:1115
      genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
      genl_rcv_msg+0x60e/0x790 net/netlink/genetlink.c:1210
      netlink_rcv_skb+0x208/0x470 net/netlink/af_netlink.c:2552
      genl_rcv+0x28/0x40 net/netlink/genetlink.c:1219
      netlink_unicast_kernel net/netlink/af_netlink.c:1320 [inline]
      netlink_unicast+0x846/0xa10 net/netlink/af_netlink.c:1346
      netlink_sendmsg+0x805/0xb30 net/netlink/af_netlink.c:1896
      sock_sendmsg_nosec net/socket.c:727 [inline]
      __sock_sendmsg+0x21c/0x270 net/socket.c:742
      ____sys_sendmsg+0x508/0x820 net/socket.c:2630
      ___sys_sendmsg+0x21f/0x2a0 net/socket.c:2684
      __sys_sendmsg net/socket.c:2716 [inline]
      __do_sys_sendmsg net/socket.c:2721 [inline]
      __se_sys_sendmsg net/socket.c:2719 [inline]
      __x64_sys_sendmsg+0x1a1/0x260 net/socket.c:2719
      do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
      do_syscall_64+0xfa/0xfa0 arch/x86/entry/syscall_64.c:94
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Cc: stable@vger.kernel.org
    Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout")
    Reported-by: syzbot+2a6fbf0f0530375968df@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/691ad3c3.a70a0220.f6df1.0004.GAE@google.com
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Geliang Tang <geliang@kernel.org>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20251117100745.1913963-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: fix ack generation for fallback msk [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Tue Nov 18 08:20:19 2025 +0100

    mptcp: fix ack generation for fallback msk
    
    commit 5e15395f6d9ec07395866c5511f4b4ac566c0c9b upstream.
    
    mptcp_cleanup_rbuf() needs to know the last most recent, mptcp-level
    rcv_wnd sent, and such information is tracked into the msk->old_wspace
    field, updated at ack transmission time by mptcp_write_options().
    
    Fallback socket do not add any mptcp options, such helper is never
    invoked, and msk->old_wspace value remain stale. That in turn makes
    ack generation at recvmsg() time quite random.
    
    Address the issue ensuring mptcp_write_options() is invoked even for
    fallback sockets, and just update the needed info in such a case.
    
    The issue went unnoticed for a long time, as mptcp currently overshots
    the fallback socket receive buffer autotune significantly. It is going
    to change in the near future.
    
    Fixes: e3859603ba13 ("mptcp: better msk receive window updates")
    Cc: stable@vger.kernel.org
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/594
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Geliang Tang <geliang@kernel.org>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20251118-net-mptcp-misc-fixes-6-18-rc6-v1-1-806d3781c95f@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: fix premature close in case of fallback [+ + +]
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Tue Nov 18 08:20:21 2025 +0100

    mptcp: fix premature close in case of fallback
    
    commit 17393fa7b7086664be519e7230cb6ed7ec7d9462 upstream.
    
    I'm observing very frequent self-tests failures in case of fallback when
    running on a CONFIG_PREEMPT kernel.
    
    The root cause is that subflow_sched_work_if_closed() closes any subflow
    as soon as it is half-closed and has no incoming data pending.
    
    That works well for regular subflows - MPTCP needs bi-directional
    connectivity to operate on a given subflow - but for fallback socket is
    race prone.
    
    When TCP peer closes the connection before the MPTCP one,
    subflow_sched_work_if_closed() will schedule the MPTCP worker to
    gracefully close the subflow, and shortly after will do another schedule
    to inject and process a dummy incoming DATA_FIN.
    
    On CONFIG_PREEMPT kernel, the MPTCP worker can kick-in and close the
    fallback subflow before subflow_sched_work_if_closed() is able to create
    the dummy DATA_FIN, unexpectedly interrupting the transfer.
    
    Address the issue explicitly avoiding closing fallback subflows on when
    the peer is only half-closed.
    
    Note that, when the subflow is able to create the DATA_FIN before the
    worker invocation, the worker will change the msk state before trying to
    close the subflow and will skip the latter operation as the msk will not
    match anymore the precondition in __mptcp_close_subflow().
    
    Fixes: f09b0ad55a11 ("mptcp: close subflow when receiving TCP+FIN")
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20251118-net-mptcp-misc-fixes-6-18-rc6-v1-3-806d3781c95f@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: Fix proto fallback detection with BPF [+ + +]
Author: Jiayuan Chen <jiayuan.chen@linux.dev>
Date:   Tue Nov 11 14:02:51 2025 +0800

    mptcp: Fix proto fallback detection with BPF
    
    commit c77b3b79a92e3345aa1ee296180d1af4e7031f8f upstream.
    
    The sockmap feature allows bpf syscall from userspace, or based
    on bpf sockops, replacing the sk_prot of sockets during protocol stack
    processing with sockmap's custom read/write interfaces.
    '''
    tcp_rcv_state_process()
      syn_recv_sock()/subflow_syn_recv_sock()
        tcp_init_transfer(BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB)
          bpf_skops_established       <== sockops
            bpf_sock_map_update(sk)   <== call bpf helper
              tcp_bpf_update_proto()  <== update sk_prot
    '''
    
    When the server has MPTCP enabled but the client sends a TCP SYN
    without MPTCP, subflow_syn_recv_sock() performs a fallback on the
    subflow, replacing the subflow sk's sk_prot with the native sk_prot.
    '''
    subflow_syn_recv_sock()
      subflow_ulp_fallback()
        subflow_drop_ctx()
          mptcp_subflow_ops_undo_override()
    '''
    
    Then, this subflow can be normally used by sockmap, which replaces the
    native sk_prot with sockmap's custom sk_prot. The issue occurs when the
    user executes accept::mptcp_stream_accept::mptcp_fallback_tcp_ops().
    Here, it uses sk->sk_prot to compare with the native sk_prot, but this
    is incorrect when sockmap is used, as we may incorrectly set
    sk->sk_socket->ops.
    
    This fix uses the more generic sk_family for the comparison instead.
    
    Additionally, this also prevents a WARNING from occurring:
    
    result from ./scripts/decode_stacktrace.sh:
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 337 at net/mptcp/protocol.c:68 mptcp_stream_accept \
    (net/mptcp/protocol.c:4005)
    Modules linked in:
    ...
    
    PKRU: 55555554
    Call Trace:
    <TASK>
    do_accept (net/socket.c:1989)
    __sys_accept4 (net/socket.c:2028 net/socket.c:2057)
    __x64_sys_accept (net/socket.c:2067)
    x64_sys_call (arch/x86/entry/syscall_64.c:41)
    do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)
    entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
    RIP: 0033:0x7f87ac92b83d
    
    ---[ end trace 0000000000000000 ]---
    
    Fixes: 0b4f33def7bb ("mptcp: fix tcp fallback crash")
    Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
    Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
    Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20251111060307.194196-3-jiayuan.chen@linux.dev
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

mptcp: fix race condition in mptcp_schedule_work() [+ + +]
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Nov 13 10:39:24 2025 +0000

    mptcp: fix race condition in mptcp_schedule_work()
    
    commit 035bca3f017ee9dea3a5a756e77a6f7138cc6eea upstream.
    
    syzbot reported use-after-free in mptcp_schedule_work() [1]
    
    Issue here is that mptcp_schedule_work() schedules a work,
    then gets a refcount on sk->sk_refcnt if the work was scheduled.
    This refcount will be released by mptcp_worker().
    
    [A] if (schedule_work(...)) {
    [B]     sock_hold(sk);
            return true;
        }
    
    Problem is that mptcp_worker() can run immediately and complete before [B]
    
    We need instead :
    
        sock_hold(sk);
        if (schedule_work(...))
            return true;
        sock_put(sk);
    
    [1]
    refcount_t: addition on 0; use-after-free.
     WARNING: CPU: 1 PID: 29 at lib/refcount.c:25 refcount_warn_saturate+0xfa/0x1d0 lib/refcount.c:25
    Call Trace:
     <TASK>
     __refcount_add include/linux/refcount.h:-1 [inline]
      __refcount_inc include/linux/refcount.h:366 [inline]
      refcount_inc include/linux/refcount.h:383 [inline]
      sock_hold include/net/sock.h:816 [inline]
      mptcp_schedule_work+0x164/0x1a0 net/mptcp/protocol.c:943
      mptcp_tout_timer+0x21/0xa0 net/mptcp/protocol.c:2316
      call_timer_fn+0x17e/0x5f0 kernel/time/timer.c:1747
      expire_timers kernel/time/timer.c:1798 [inline]
      __run_timers kernel/time/timer.c:2372 [inline]
      __run_timer_base+0x648/0x970 kernel/time/timer.c:2384
      run_timer_base kernel/time/timer.c:2393 [inline]
      run_timer_softirq+0xb7/0x180 kernel/time/timer.c:2403
      handle_softirqs+0x22f/0x710 kernel/softirq.c:622
      __do_softirq kernel/softirq.c:656 [inline]
      run_ktimerd+0xcf/0x190 kernel/softirq.c:1138
      smpboot_thread_fn+0x542/0xa60 kernel/smpboot.c:160
      kthread+0x711/0x8a0 kernel/kthread.c:463
      ret_from_fork+0x4bc/0x870 arch/x86/kernel/process.c:158
      ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
    
    Cc: stable@vger.kernel.org
    Fixes: 3b1d6210a957 ("mptcp: implement and use MPTCP-level retransmission")
    Reported-by: syzbot+355158e7e301548a1424@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/netdev/6915b46f.050a0220.3565dc.0028.GAE@google.com/T/#u
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20251113103924.3737425-1-edumazet@google.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mtd: rawnand: cadence: fix DMA device NULL pointer dereference [+ + +]
Author: Niravkumar L Rabara <niravkumarlaxmidas.rabara@altera.com>
Date:   Thu Oct 23 11:32:01 2025 +0800

    mtd: rawnand: cadence: fix DMA device NULL pointer dereference
    
    commit 5c56bf214af85ca042bf97f8584aab2151035840 upstream.
    
    The DMA device pointer `dma_dev` was being dereferenced before ensuring
    that `cdns_ctrl->dmac` is properly initialized.
    
    Move the assignment of `dma_dev` after successfully acquiring the DMA
    channel to ensure the pointer is valid before use.
    
    Fixes: d76d22b5096c ("mtd: rawnand: cadence: use dma_map_resource for sdma address")
    Cc: stable@vger.kernel.org
    Signed-off-by: Niravkumar L Rabara <niravkumarlaxmidas.rabara@altera.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
mtdchar: fix integer overflow in read/write ioctls [+ + +]
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Tue Sep 30 15:32:34 2025 +0300

    mtdchar: fix integer overflow in read/write ioctls
    
    commit e4185bed738da755b191aa3f2e16e8b48450e1b8 upstream.
    
    The "req.start" and "req.len" variables are u64 values that come from the
    user at the start of the function.  We mask away the high 32 bits of
    "req.len" so that's capped at U32_MAX but the "req.start" variable can go
    up to U64_MAX which means that the addition can still integer overflow.
    
    Use check_add_overflow() to fix this bug.
    
    Fixes: 095bb6e44eb1 ("mtdchar: add MEMREAD ioctl")
    Fixes: 6420ac0af95d ("mtdchar: prevent unbounded allocation in MEMWRITE ioctl")
    Cc: stable@vger.kernel.org
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/mlx5: Clean up only new IRQ glue on request_irq() failure [+ + +]
Author: Pradyumn Rahar <pradyumn.rahar@oracle.com>
Date:   Mon Nov 17 14:16:08 2025 +0200

    net/mlx5: Clean up only new IRQ glue on request_irq() failure
    
    [ Upstream commit d47515af6cccd7484d8b0870376858c9848a18ec ]
    
    The mlx5_irq_alloc() function can inadvertently free the entire rmap
    and end up in a crash[1] when the other threads tries to access this,
    when request_irq() fails due to exhausted IRQ vectors. This commit
    modifies the cleanup to remove only the specific IRQ mapping that was
    just added.
    
    This prevents removal of other valid mappings and ensures precise
    cleanup of the failed IRQ allocation's associated glue object.
    
    Note: This error is observed when both fwctl and rds configs are enabled.
    
    [1]
    mlx5_core 0000:05:00.0: Successfully registered panic handler for port 1
    mlx5_core 0000:05:00.0: mlx5_irq_alloc:293:(pid 66740): Failed to
    request irq. err = -28
    infiniband mlx5_0: mlx5_ib_test_wc:290:(pid 66740): Error -28 while
    trying to test write-combining support
    mlx5_core 0000:05:00.0: Successfully unregistered panic handler for port 1
    mlx5_core 0000:06:00.0: Successfully registered panic handler for port 1
    mlx5_core 0000:06:00.0: mlx5_irq_alloc:293:(pid 66740): Failed to
    request irq. err = -28
    infiniband mlx5_0: mlx5_ib_test_wc:290:(pid 66740): Error -28 while
    trying to test write-combining support
    mlx5_core 0000:06:00.0: Successfully unregistered panic handler for port 1
    mlx5_core 0000:03:00.0: mlx5_irq_alloc:293:(pid 28895): Failed to
    request irq. err = -28
    mlx5_core 0000:05:00.0: mlx5_irq_alloc:293:(pid 28895): Failed to
    request irq. err = -28
    general protection fault, probably for non-canonical address
    0xe277a58fde16f291: 0000 [#1] SMP NOPTI
    
    RIP: 0010:free_irq_cpu_rmap+0x23/0x7d
    Call Trace:
       <TASK>
       ? show_trace_log_lvl+0x1d6/0x2f9
       ? show_trace_log_lvl+0x1d6/0x2f9
       ? mlx5_irq_alloc.cold+0x5d/0xf3 [mlx5_core]
       ? __die_body.cold+0x8/0xa
       ? die_addr+0x39/0x53
       ? exc_general_protection+0x1c4/0x3e9
       ? dev_vprintk_emit+0x5f/0x90
       ? asm_exc_general_protection+0x22/0x27
       ? free_irq_cpu_rmap+0x23/0x7d
       mlx5_irq_alloc.cold+0x5d/0xf3 [mlx5_core]
       irq_pool_request_vector+0x7d/0x90 [mlx5_core]
       mlx5_irq_request+0x2e/0xe0 [mlx5_core]
       mlx5_irq_request_vector+0xad/0xf7 [mlx5_core]
       comp_irq_request_pci+0x64/0xf0 [mlx5_core]
       create_comp_eq+0x71/0x385 [mlx5_core]
       ? mlx5e_open_xdpsq+0x11c/0x230 [mlx5_core]
       mlx5_comp_eqn_get+0x72/0x90 [mlx5_core]
       ? xas_load+0x8/0x91
       mlx5_comp_irqn_get+0x40/0x90 [mlx5_core]
       mlx5e_open_channel+0x7d/0x3c7 [mlx5_core]
       mlx5e_open_channels+0xad/0x250 [mlx5_core]
       mlx5e_open_locked+0x3e/0x110 [mlx5_core]
       mlx5e_open+0x23/0x70 [mlx5_core]
       __dev_open+0xf1/0x1a5
       __dev_change_flags+0x1e1/0x249
       dev_change_flags+0x21/0x5c
       do_setlink+0x28b/0xcc4
       ? __nla_parse+0x22/0x3d
       ? inet6_validate_link_af+0x6b/0x108
       ? cpumask_next+0x1f/0x35
       ? __snmp6_fill_stats64.constprop.0+0x66/0x107
       ? __nla_validate_parse+0x48/0x1e6
       __rtnl_newlink+0x5ff/0xa57
       ? kmem_cache_alloc_trace+0x164/0x2ce
       rtnl_newlink+0x44/0x6e
       rtnetlink_rcv_msg+0x2bb/0x362
       ? __netlink_sendskb+0x4c/0x6c
       ? netlink_unicast+0x28f/0x2ce
       ? rtnl_calcit.isra.0+0x150/0x146
       netlink_rcv_skb+0x5f/0x112
       netlink_unicast+0x213/0x2ce
       netlink_sendmsg+0x24f/0x4d9
       __sock_sendmsg+0x65/0x6a
       ____sys_sendmsg+0x28f/0x2c9
       ? import_iovec+0x17/0x2b
       ___sys_sendmsg+0x97/0xe0
       __sys_sendmsg+0x81/0xd8
       do_syscall_64+0x35/0x87
       entry_SYSCALL_64_after_hwframe+0x6e/0x0
    RIP: 0033:0x7fc328603727
    Code: c3 66 90 41 54 41 89 d4 55 48 89 f5 53 89 fb 48 83 ec 10 e8 0b ed
    ff ff 44 89 e2 48 89 ee 89 df 41 89 c0 b8 2e 00 00 00 0f 05 <48> 3d 00
    f0 ff ff 77 35 44 89 c7 48 89 44 24 08 e8 44 ed ff ff 48
    RSP: 002b:00007ffe8eb3f1a0 EFLAGS: 00000293 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 000000000000000d RCX: 00007fc328603727
    RDX: 0000000000000000 RSI: 00007ffe8eb3f1f0 RDI: 000000000000000d
    RBP: 00007ffe8eb3f1f0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
    R13: 0000000000000000 R14: 00007ffe8eb3f3c8 R15: 00007ffe8eb3f3bc
       </TASK>
    ---[ end trace f43ce73c3c2b13a2 ]---
    RIP: 0010:free_irq_cpu_rmap+0x23/0x7d
    Code: 0f 1f 80 00 00 00 00 48 85 ff 74 6b 55 48 89 fd 53 66 83 7f 06 00
    74 24 31 db 48 8b 55 08 0f b7 c3 48 8b 04 c2 48 85 c0 74 09 <8b> 38 31
    f6 e8 c4 0a b8 ff 83 c3 01 66 3b 5d 06 72 de b8 ff ff ff
    RSP: 0018:ff384881640eaca0 EFLAGS: 00010282
    RAX: e277a58fde16f291 RBX: 0000000000000000 RCX: 0000000000000000
    RDX: ff2335e2e20b3600 RSI: 0000000000000000 RDI: ff2335e2e20b3400
    RBP: ff2335e2e20b3400 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 00000000ffffffe4 R12: ff384881640ead88
    R13: ff2335c3760751e0 R14: ff2335e2e1672200 R15: ff2335c3760751f8
    FS:  00007fc32ac22480(0000) GS:ff2335e2d6e00000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f651ab54000 CR3: 00000029f1206003 CR4: 0000000000771ef0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Kernel panic - not syncing: Fatal exception
    Kernel Offset: 0x1dc00000 from 0xffffffff81000000 (relocation range:
    0xffffffff80000000-0xffffffffbfffffff)
    kvm-guest: disable async PF for cpu 0
    
    Fixes: 3354822cde5a ("net/mlx5: Use dynamic msix vectors allocation")
    Signed-off-by: Mohith Kumar Thummaluru<mohith.k.kumar.thummaluru@oracle.com>
    Tested-by: Mohith Kumar Thummaluru<mohith.k.kumar.thummaluru@oracle.com>
    Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
    Reviewed-by: Shay Drori <shayd@nvidia.com>
    Signed-off-by: Pradyumn Rahar <pradyumn.rahar@oracle.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/1763381768-1234998-1-git-send-email-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
net: dsa: hellcreek: fix missing error handling in LED registration [+ + +]
Author: Pavel Zhigulin <Pavel.Zhigulin@kaspersky.com>
Date:   Thu Nov 13 16:57:44 2025 +0300

    net: dsa: hellcreek: fix missing error handling in LED registration
    
    [ Upstream commit e6751b0b19a6baab219a62e1e302b8aa6b5a55b2 ]
    
    The LED setup routine registered both led_sync_good
    and led_is_gm devices without checking the return
    values of led_classdev_register(). If either registration
    failed, the function continued silently, leaving the
    driver in a partially-initialized state and leaking
    a registered LED classdev.
    
    Add proper error handling
    
    Fixes: 7d9ee2e8ff15 ("net: dsa: hellcreek: Add PTP status LEDs")
    Signed-off-by: Pavel Zhigulin <Pavel.Zhigulin@kaspersky.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Acked-by: Kurt Kanzenbach <kurt@linutronix.de>
    Link: https://patch.msgid.link/20251113135745.92375-1-Pavel.Zhigulin@kaspersky.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: dsa: microchip: lan937x: Fix RGMII delay tuning [+ + +]
Author: Oleksij Rempel <o.rempel@pengutronix.de>
Date:   Fri Nov 14 10:09:51 2025 +0100

    net: dsa: microchip: lan937x: Fix RGMII delay tuning
    
    commit 3ceb6ac2116ecda1c5d779bb73271479e70fccb4 upstream.
    
    Correct RGMII delay application logic in lan937x_set_tune_adj().
    
    The function was missing `data16 &= ~PORT_TUNE_ADJ` before setting the
    new delay value. This caused the new value to be bitwise-OR'd with the
    existing PORT_TUNE_ADJ field instead of replacing it.
    
    For example, when setting the RGMII 2 TX delay on port 4, the
    intended TUNE_ADJUST value of 0 (RGMII_2_TX_DELAY_2NS) was
    incorrectly OR'd with the default 0x1B (from register value 0xDA3),
    leaving the delay at the wrong setting.
    
    This patch adds the missing mask to clear the field, ensuring the
    correct delay value is written. Physical measurements on the RGMII TX
    lines confirm the fix, showing the delay changing from ~1ns (before
    change) to ~2ns.
    
    While testing on i.MX 8MP showed this was within the platform's timing
    tolerance, it did not match the intended hardware-characterized value.
    
    Fixes: b19ac41faa3f ("net: dsa: microchip: apply rgmii tx and rx delay in phylink mac config")
    Cc: stable@vger.kernel.org
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Link: https://patch.msgid.link/20251114090951.4057261-1-o.rempel@pengutronix.de
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

net: ethernet: ti: netcp: Standardize knav_dma_open_channel to return NULL on error [+ + +]
Author: Nishanth Menon <nm@ti.com>
Date:   Mon Nov 3 10:28:11 2025 -0600

    net: ethernet: ti: netcp: Standardize knav_dma_open_channel to return NULL on error
    
    [ Upstream commit 90a88306eb874fe4bbdd860e6c9787f5bbc588b5 ]
    
    Make knav_dma_open_channel consistently return NULL on error instead
    of ERR_PTR. Currently the header include/linux/soc/ti/knav_dma.h
    returns NULL when the driver is disabled, but the driver
    implementation does not even return NULL or ERR_PTR on failure,
    causing inconsistency in the users. This results in a crash in
    netcp_free_navigator_resources as followed (trimmed):
    
    Unhandled fault: alignment exception (0x221) at 0xfffffff2
    [fffffff2] *pgd=80000800207003, *pmd=82ffda003, *pte=00000000
    Internal error: : 221 [#1] SMP ARM
    Modules linked in:
    CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.17.0-rc7 #1 NONE
    Hardware name: Keystone
    PC is at knav_dma_close_channel+0x30/0x19c
    LR is at netcp_free_navigator_resources+0x2c/0x28c
    
    [... TRIM...]
    
    Call trace:
     knav_dma_close_channel from netcp_free_navigator_resources+0x2c/0x28c
     netcp_free_navigator_resources from netcp_ndo_open+0x430/0x46c
     netcp_ndo_open from __dev_open+0x114/0x29c
     __dev_open from __dev_change_flags+0x190/0x208
     __dev_change_flags from netif_change_flags+0x1c/0x58
     netif_change_flags from dev_change_flags+0x38/0xa0
     dev_change_flags from ip_auto_config+0x2c4/0x11f0
     ip_auto_config from do_one_initcall+0x58/0x200
     do_one_initcall from kernel_init_freeable+0x1cc/0x238
     kernel_init_freeable from kernel_init+0x1c/0x12c
     kernel_init from ret_from_fork+0x14/0x38
    [... TRIM...]
    
    Standardize the error handling by making the function return NULL on
    all error conditions. The API is used in just the netcp_core.c so the
    impact is limited.
    
    Note, this change, in effect reverts commit 5b6cb43b4d62 ("net:
    ethernet: ti: netcp_core: return error while dma channel open issue"),
    but provides a less error prone implementation.
    
    Suggested-by: Simon Horman <horms@kernel.org>
    Suggested-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Link: https://patch.msgid.link/20251103162811.3730055-1-nm@ti.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: mlxsw: linecards: fix missing error check in mlxsw_linecard_devlink_info_get() [+ + +]
Author: Pavel Zhigulin <Pavel.Zhigulin@kaspersky.com>
Date:   Thu Nov 13 19:19:21 2025 +0300

    net: mlxsw: linecards: fix missing error check in mlxsw_linecard_devlink_info_get()
    
    [ Upstream commit b0c959fec18f4595a6a6317ffc30615cfa37bf69 ]
    
    The call to devlink_info_version_fixed_put() in
    mlxsw_linecard_devlink_info_get() did not check for errors,
    although it is checked everywhere in the code.
    
    Add missed 'err' check to the mlxsw_linecard_devlink_info_get()
    
    Fixes: 3fc0c51905fb ("mlxsw: core_linecards: Expose device PSID over device info")
    Signed-off-by: Pavel Zhigulin <Pavel.Zhigulin@kaspersky.com>
    Reviewed-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://patch.msgid.link/20251113161922.813828-1-Pavel.Zhigulin@kaspersky.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: openvswitch: remove never-working support for setting nsh fields [+ + +]
Author: Ilya Maximets <i.maximets@ovn.org>
Date:   Wed Nov 12 12:14:03 2025 +0100

    net: openvswitch: remove never-working support for setting nsh fields
    
    [ Upstream commit dfe28c4167a9259fc0c372d9f9473e1ac95cff67 ]
    
    The validation of the set(nsh(...)) action is completely wrong.
    It runs through the nsh_key_put_from_nlattr() function that is the
    same function that validates NSH keys for the flow match and the
    push_nsh() action.  However, the set(nsh(...)) has a very different
    memory layout.  Nested attributes in there are doubled in size in
    case of the masked set().  That makes proper validation impossible.
    
    There is also confusion in the code between the 'masked' flag, that
    says that the nested attributes are doubled in size containing both
    the value and the mask, and the 'is_mask' that says that the value
    we're parsing is the mask.  This is causing kernel crash on trying to
    write into mask part of the match with SW_FLOW_KEY_PUT() during
    validation, while validate_nsh() doesn't allocate any memory for it:
    
      BUG: kernel NULL pointer dereference, address: 0000000000000018
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 1c2383067 P4D 1c2383067 PUD 20b703067 PMD 0
      Oops: Oops: 0000 [#1] SMP NOPTI
      CPU: 8 UID: 0 Kdump: loaded Not tainted 6.17.0-rc4+ #107 PREEMPT(voluntary)
      RIP: 0010:nsh_key_put_from_nlattr+0x19d/0x610 [openvswitch]
      Call Trace:
       <TASK>
       validate_nsh+0x60/0x90 [openvswitch]
       validate_set.constprop.0+0x270/0x3c0 [openvswitch]
       __ovs_nla_copy_actions+0x477/0x860 [openvswitch]
       ovs_nla_copy_actions+0x8d/0x100 [openvswitch]
       ovs_packet_cmd_execute+0x1cc/0x310 [openvswitch]
       genl_family_rcv_msg_doit+0xdb/0x130
       genl_family_rcv_msg+0x14b/0x220
       genl_rcv_msg+0x47/0xa0
       netlink_rcv_skb+0x53/0x100
       genl_rcv+0x24/0x40
       netlink_unicast+0x280/0x3b0
       netlink_sendmsg+0x1f7/0x430
       ____sys_sendmsg+0x36b/0x3a0
       ___sys_sendmsg+0x87/0xd0
       __sys_sendmsg+0x6d/0xd0
       do_syscall_64+0x7b/0x2c0
       entry_SYSCALL_64_after_hwframe+0x76/0x7e
    
    The third issue with this process is that while trying to convert
    the non-masked set into masked one, validate_set() copies and doubles
    the size of the OVS_KEY_ATTR_NSH as if it didn't have any nested
    attributes.  It should be copying each nested attribute and doubling
    them in size independently.  And the process must be properly reversed
    during the conversion back from masked to a non-masked variant during
    the flow dump.
    
    In the end, the only two outcomes of trying to use this action are
    either validation failure or a kernel crash.  And if somehow someone
    manages to install a flow with such an action, it will most definitely
    not do what it is supposed to, since all the keys and the masks are
    mixed up.
    
    Fixing all the issues is a complex task as it requires re-writing
    most of the validation code.
    
    Given that and the fact that this functionality never worked since
    introduction, let's just remove it altogether.  It's better to
    re-introduce it later with a proper implementation instead of trying
    to fix it in stable releases.
    
    Fixes: b2d0f5d5dc53 ("openvswitch: enable NSH support")
    Reported-by: Junvy Yang <zhuque@tencent.com>
    Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
    Acked-by: Eelco Chaudron <echaudro@redhat.com>
    Reviewed-by: Aaron Conole <aconole@redhat.com>
    Link: https://patch.msgid.link/20251112112246.95064-1-i.maximets@ovn.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: qlogic/qede: fix potential out-of-bounds read in qede_tpa_cont() and qede_tpa_end() [+ + +]
Author: Pavel Zhigulin <Pavel.Zhigulin@kaspersky.com>
Date:   Thu Nov 13 14:27:56 2025 +0300

    net: qlogic/qede: fix potential out-of-bounds read in qede_tpa_cont() and qede_tpa_end()
    
    [ Upstream commit 896f1a2493b59beb2b5ccdf990503dbb16cb2256 ]
    
    The loops in 'qede_tpa_cont()' and 'qede_tpa_end()', iterate
    over 'cqe->len_list[]' using only a zero-length terminator as
    the stopping condition. If the terminator was missing or
    malformed, the loop could run past the end of the fixed-size array.
    
    Add an explicit bound check using ARRAY_SIZE() in both loops to prevent
    a potential out-of-bounds access.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Fixes: 55482edc25f0 ("qede: Add slowpath/fastpath support and enable hardware GRO")
    Signed-off-by: Pavel Zhigulin <Pavel.Zhigulin@kaspersky.com>
    Link: https://patch.msgid.link/20251113112757.4166625-1-Pavel.Zhigulin@kaspersky.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

net: tls: Cancel RX async resync request on rcd_delta overflow [+ + +]
Author: Shahar Shitrit <shshitrit@nvidia.com>
Date:   Sun Oct 26 22:03:02 2025 +0200

    net: tls: Cancel RX async resync request on rcd_delta overflow
    
    [ Upstream commit c15d5c62ab313c19121f10e25d4fec852bd1c40c ]
    
    When a netdev issues a RX async resync request for a TLS connection,
    the TLS module handles it by logging record headers and attempting to
    match them to the tcp_sn provided by the device. If a match is found,
    the TLS module approves the tcp_sn for resynchronization.
    
    While waiting for a device response, the TLS module also increments
    rcd_delta each time a new TLS record is received, tracking the distance
    from the original resync request.
    
    However, if the device response is delayed or fails (e.g due to
    unstable connection and device getting out of tracking, hardware
    errors, resource exhaustion etc.), the TLS module keeps logging and
    incrementing, which can lead to a WARN() when rcd_delta exceeds the
    threshold.
    
    To address this, introduce tls_offload_rx_resync_async_request_cancel()
    to explicitly cancel resync requests when a device response failure is
    detected. Call this helper also as a final safeguard when rcd_delta
    crosses its threshold, as reaching this point implies that earlier
    cancellation did not occur.
    
    Signed-off-by: Shahar Shitrit <shshitrit@nvidia.com>
    Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
    Link: https://patch.msgid.link/1761508983-937977-3-git-send-email-tariqt@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nouveau/firmware: Add missing kfree() of nvkm_falcon_fw::boot [+ + +]
Author: Nam Cao <namcao@linutronix.de>
Date:   Mon Nov 17 08:42:31 2025 +0000

    nouveau/firmware: Add missing kfree() of nvkm_falcon_fw::boot
    
    commit 949f1fd2225baefbea2995afa807dba5cbdb6bd3 upstream.
    
    nvkm_falcon_fw::boot is allocated, but no one frees it. This causes a
    kmemleak warning.
    
    Make sure this data is deallocated.
    
    Fixes: 2541626cfb79 ("drm/nouveau/acr: use common falcon HS FW code for ACR FWs")
    Signed-off-by: Nam Cao <namcao@linutronix.de>
    Cc: stable@vger.kernel.org
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Link: https://patch.msgid.link/20251117084231.2910561-1-namcao@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
nvme-multipath: fix lockdep WARN due to partition scan work [+ + +]
Author: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Date:   Mon Nov 17 11:23:39 2025 +0900

    nvme-multipath: fix lockdep WARN due to partition scan work
    
    [ Upstream commit 6d87cd5335784351280f82c47cc8a657271929c3 ]
    
    Blktests test cases nvme/014, 057 and 058 fail occasionally due to a
    lockdep WARN. As reported in the Closes tag URL, the WARN indicates that
    a deadlock can happen due to the dependency among disk->open_mutex,
    kblockd workqueue completion and partition_scan_work completion.
    
    To avoid the lockdep WARN and the potential deadlock, cut the dependency
    by running the partition_scan_work not by kblockd workqueue but by
    nvme_wq.
    
    Reported-by: Yi Zhang <yi.zhang@redhat.com>
    Closes: https://lore.kernel.org/linux-block/CAHj4cs8mJ+R_GmQm9R8ebResKAWUE8kF5+_WVg0v8zndmqd6BQ@mail.gmail.com/
    Link: https://lore.kernel.org/linux-block/oeyzci6ffshpukpfqgztsdeke5ost5hzsuz4rrsjfmvpqcevax@5nhnwbkzbrpa/
    Fixes: 1f021341eef4 ("nvme-multipath: defer partition scanning")
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
nvme: nvme-fc: Ensure ->ioerr_work is cancelled in nvme_fc_delete_ctrl() [+ + +]
Author: Ewan D. Milne <emilne@redhat.com>
Date:   Mon Nov 10 16:20:01 2025 -0500

    nvme: nvme-fc: Ensure ->ioerr_work is cancelled in nvme_fc_delete_ctrl()
    
    commit 0a2c5495b6d1ecb0fa18ef6631450f391a888256 upstream.
    
    nvme_fc_delete_assocation() waits for pending I/O to complete before
    returning, and an error can cause ->ioerr_work to be queued after
    cancel_work_sync() had been called.  Move the call to cancel_work_sync() to
    be after nvme_fc_delete_association() to ensure ->ioerr_work is not running
    when the nvme_fc_ctrl object is freed.  Otherwise the following can occur:
    
    [ 1135.911754] list_del corruption, ff2d24c8093f31f8->next is NULL
    [ 1135.917705] ------------[ cut here ]------------
    [ 1135.922336] kernel BUG at lib/list_debug.c:52!
    [ 1135.926784] Oops: invalid opcode: 0000 [#1] SMP NOPTI
    [ 1135.931851] CPU: 48 UID: 0 PID: 726 Comm: kworker/u449:23 Kdump: loaded Not tainted 6.12.0 #1 PREEMPT(voluntary)
    [ 1135.943490] Hardware name: Dell Inc. PowerEdge R660/0HGTK9, BIOS 2.5.4 01/16/2025
    [ 1135.950969] Workqueue:  0x0 (nvme-wq)
    [ 1135.954673] RIP: 0010:__list_del_entry_valid_or_report.cold+0xf/0x6f
    [ 1135.961041] Code: c7 c7 98 68 72 94 e8 26 45 fe ff 0f 0b 48 c7 c7 70 68 72 94 e8 18 45 fe ff 0f 0b 48 89 fe 48 c7 c7 80 69 72 94 e8 07 45 fe ff <0f> 0b 48 89 d1 48 c7 c7 a0 6a 72 94 48 89 c2 e8 f3 44 fe ff 0f 0b
    [ 1135.979788] RSP: 0018:ff579b19482d3e50 EFLAGS: 00010046
    [ 1135.985015] RAX: 0000000000000033 RBX: ff2d24c8093f31f0 RCX: 0000000000000000
    [ 1135.992148] RDX: 0000000000000000 RSI: ff2d24d6bfa1d0c0 RDI: ff2d24d6bfa1d0c0
    [ 1135.999278] RBP: ff2d24c8093f31f8 R08: 0000000000000000 R09: ffffffff951e2b08
    [ 1136.006413] R10: ffffffff95122ac8 R11: 0000000000000003 R12: ff2d24c78697c100
    [ 1136.013546] R13: fffffffffffffff8 R14: 0000000000000000 R15: ff2d24c78697c0c0
    [ 1136.020677] FS:  0000000000000000(0000) GS:ff2d24d6bfa00000(0000) knlGS:0000000000000000
    [ 1136.028765] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1136.034510] CR2: 00007fd207f90b80 CR3: 000000163ea22003 CR4: 0000000000f73ef0
    [ 1136.041641] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 1136.048776] DR3: 0000000000000000 DR6: 00000000fffe07f0 DR7: 0000000000000400
    [ 1136.055910] PKRU: 55555554
    [ 1136.058623] Call Trace:
    [ 1136.061074]  <TASK>
    [ 1136.063179]  ? show_trace_log_lvl+0x1b0/0x2f0
    [ 1136.067540]  ? show_trace_log_lvl+0x1b0/0x2f0
    [ 1136.071898]  ? move_linked_works+0x4a/0xa0
    [ 1136.075998]  ? __list_del_entry_valid_or_report.cold+0xf/0x6f
    [ 1136.081744]  ? __die_body.cold+0x8/0x12
    [ 1136.085584]  ? die+0x2e/0x50
    [ 1136.088469]  ? do_trap+0xca/0x110
    [ 1136.091789]  ? do_error_trap+0x65/0x80
    [ 1136.095543]  ? __list_del_entry_valid_or_report.cold+0xf/0x6f
    [ 1136.101289]  ? exc_invalid_op+0x50/0x70
    [ 1136.105127]  ? __list_del_entry_valid_or_report.cold+0xf/0x6f
    [ 1136.110874]  ? asm_exc_invalid_op+0x1a/0x20
    [ 1136.115059]  ? __list_del_entry_valid_or_report.cold+0xf/0x6f
    [ 1136.120806]  move_linked_works+0x4a/0xa0
    [ 1136.124733]  worker_thread+0x216/0x3a0
    [ 1136.128485]  ? __pfx_worker_thread+0x10/0x10
    [ 1136.132758]  kthread+0xfa/0x240
    [ 1136.135904]  ? __pfx_kthread+0x10/0x10
    [ 1136.139657]  ret_from_fork+0x31/0x50
    [ 1136.143236]  ? __pfx_kthread+0x10/0x10
    [ 1136.146988]  ret_from_fork_asm+0x1a/0x30
    [ 1136.150915]  </TASK>
    
    Fixes: 19fce0470f05 ("nvme-fc: avoid calling _nvme_fc_abort_outstanding_ios from interrupt context")
    Cc: stable@vger.kernel.org
    Tested-by: Marco Patalano <mpatalan@redhat.com>
    Reviewed-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

nvme: nvme-fc: move tagset removal to nvme_fc_delete_ctrl() [+ + +]
Author: Ewan D. Milne <emilne@redhat.com>
Date:   Mon Nov 10 16:20:00 2025 -0500

    nvme: nvme-fc: move tagset removal to nvme_fc_delete_ctrl()
    
    commit ea3442efabd0aa3930c5bab73c3901ef38ef6ac3 upstream.
    
    Now target is removed from nvme_fc_ctrl_free() which is the ctrl->ref
    release handler. And even admin queue is unquiesced there, this way
    is definitely wrong because the ctr->ref is grabbed when submitting
    command.
    
    And Marco observed that nvme_fc_ctrl_free() can be called from request
    completion code path, and trigger kernel warning since request completes
    from softirq context.
    
    Fix the issue by moveing target removal into nvme_fc_delete_ctrl(),
    which is also aligned with nvme-tcp and nvme-rdma.
    
    Patch originally proposed by Ming Lei, then modified to move the tagset
    removal down to after nvme_fc_delete_association() after further testing.
    
    Cc: Marco Patalano <mpatalan@redhat.com>
    Cc: Ewan Milne <emilne@redhat.com>
    Cc: James Smart <james.smart@broadcom.com>
    Cc: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Cc: stable@vger.kernel.org
    Tested-by: Marco Patalano <mpatalan@redhat.com>
    Reviewed-by: Justin Tee <justin.tee@broadcom.com>
    Signed-off-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
pinctrl: cirrus: Fix fwnode leak in cs42l43_pin_probe() [+ + +]
Author: Haotian Zhang <vulab@iscas.ac.cn>
Date:   Tue Oct 28 11:05:09 2025 +0800

    pinctrl: cirrus: Fix fwnode leak in cs42l43_pin_probe()
    
    [ Upstream commit 9b07cdf86a0b90556f5b68a6b20b35833b558df3 ]
    
    The driver calls fwnode_get_named_child_node() which takes a reference
    on the child node, but never releases it, which causes a reference leak.
    
    Fix by using devm_add_action_or_reset() to automatically release the
    reference when the device is removed.
    
    Fixes: d5282a539297 ("pinctrl: cs42l43: Add support for the cs42l43")
    Suggested-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Haotian Zhang <vulab@iscas.ac.cn>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: s32cc: fix uninitialized memory in s32_pinctrl_desc [+ + +]
Author: Jared Kangas <jkangas@redhat.com>
Date:   Tue Nov 11 13:54:11 2025 -0800

    pinctrl: s32cc: fix uninitialized memory in s32_pinctrl_desc
    
    [ Upstream commit 97ea34defbb57bfaf71ce487b1b0865ffd186e81 ]
    
    s32_pinctrl_desc is allocated with devm_kmalloc(), but not all of its
    fields are initialized. Notably, num_custom_params is used in
    pinconf_generic_parse_dt_config(), resulting in intermittent allocation
    errors, such as the following splat when probing i2c-imx:
    
            WARNING: CPU: 0 PID: 176 at mm/page_alloc.c:4795 __alloc_pages_noprof+0x290/0x300
            [...]
            Hardware name: NXP S32G3 Reference Design Board 3 (S32G-VNP-RDB3) (DT)
            [...]
            Call trace:
             __alloc_pages_noprof+0x290/0x300 (P)
             ___kmalloc_large_node+0x84/0x168
             __kmalloc_large_node_noprof+0x34/0x120
             __kmalloc_noprof+0x2ac/0x378
             pinconf_generic_parse_dt_config+0x68/0x1a0
             s32_dt_node_to_map+0x104/0x248
             dt_to_map_one_config+0x154/0x1d8
             pinctrl_dt_to_map+0x12c/0x280
             create_pinctrl+0x6c/0x270
             pinctrl_get+0xc0/0x170
             devm_pinctrl_get+0x50/0xa0
             pinctrl_bind_pins+0x60/0x2a0
             really_probe+0x60/0x3a0
            [...]
             __platform_driver_register+0x2c/0x40
             i2c_adap_imx_init+0x28/0xff8 [i2c_imx]
            [...]
    
    This results in later parse failures that can cause issues in dependent
    drivers:
    
            s32g-siul2-pinctrl 4009c240.pinctrl: /soc@0/pinctrl@4009c240/i2c0-pins/i2c0-grp0: could not parse node property
            s32g-siul2-pinctrl 4009c240.pinctrl: /soc@0/pinctrl@4009c240/i2c0-pins/i2c0-grp0: could not parse node property
            [...]
            pca953x 0-0022: failed writing register: -6
            i2c i2c-0: IMX I2C adapter registered
            s32g-siul2-pinctrl 4009c240.pinctrl: /soc@0/pinctrl@4009c240/i2c2-pins/i2c2-grp0: could not parse node property
            s32g-siul2-pinctrl 4009c240.pinctrl: /soc@0/pinctrl@4009c240/i2c2-pins/i2c2-grp0: could not parse node property
            i2c i2c-1: IMX I2C adapter registered
            s32g-siul2-pinctrl 4009c240.pinctrl: /soc@0/pinctrl@4009c240/i2c4-pins/i2c4-grp0: could not parse node property
            s32g-siul2-pinctrl 4009c240.pinctrl: /soc@0/pinctrl@4009c240/i2c4-pins/i2c4-grp0: could not parse node property
            i2c i2c-2: IMX I2C adapter registered
    
    Fix this by initializing s32_pinctrl_desc with devm_kzalloc() instead of
    devm_kmalloc() in s32_pinctrl_probe(), which sets the previously
    uninitialized fields to zero.
    
    Fixes: fd84aaa8173d ("pinctrl: add NXP S32 SoC family support")
    Signed-off-by: Jared Kangas <jkangas@redhat.com>
    Tested-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

pinctrl: s32cc: initialize gpio_pin_config::list after kmalloc() [+ + +]
Author: Jared Kangas <jkangas@redhat.com>
Date:   Tue Nov 11 13:54:12 2025 -0800

    pinctrl: s32cc: initialize gpio_pin_config::list after kmalloc()
    
    [ Upstream commit 6010d4d8b55b5d3ae1efb5502c54312e15c14f21 ]
    
    s32_pmx_gpio_request_enable() does not initialize the newly-allocated
    gpio_pin_config::list before adding it to s32_pinctrl::gpio_configs.
    This could result in a linked list corruption.
    
    Initialize the new list_head with INIT_LIST_HEAD() to fix this.
    
    Fixes: fd84aaa8173d ("pinctrl: add NXP S32 SoC family support")
    Signed-off-by: Jared Kangas <jkangas@redhat.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86/intel/speed_select_if: Convert PCIBIOS_* return codes to errnos [+ + +]
Author: Haotian Zhang <vulab@iscas.ac.cn>
Date:   Mon Nov 17 11:33:54 2025 +0800

    platform/x86/intel/speed_select_if: Convert PCIBIOS_* return codes to errnos
    
    [ Upstream commit d8bb447efc5622577994287dc77c684fa8840b30 ]
    
    isst_if_probe() uses pci_read_config_dword() that returns PCIBIOS_*
    codes. The return code is returned from the probe function as is but
    probe functions should return normal errnos. A proper implementation
    can be found in drivers/leds/leds-ss4200.c.
    
    Convert PCIBIOS_* return codes using pcibios_err_to_errno() into
    normal errno before returning.
    
    Fixes: d3a23584294c ("platform/x86: ISST: Add Intel Speed Select mmio interface")
    Signed-off-by: Haotian Zhang <vulab@iscas.ac.cn>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Link: https://patch.msgid.link/20251117033354.132-1-vulab@iscas.ac.cn
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
pmdomain: arm: scmi: Fix genpd leak on provider registration failure [+ + +]
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Fri Nov 21 10:43:01 2025 -0500

    pmdomain: arm: scmi: Fix genpd leak on provider registration failure
    
    [ Upstream commit 7458f72cc28f9eb0de811effcb5376d0ec19094a ]
    
    If of_genpd_add_provider_onecell() fails during probe, the previously
    created generic power domains are not removed, leading to a memory leak
    and potential kernel crash later in genpd_debug_add().
    
    Add proper error handling to unwind the initialized domains before
    returning from probe to ensure all resources are correctly released on
    failure.
    
    Example crash trace observed without this fix:
    
      | Unable to handle kernel paging request at virtual address fffffffffffffc70
      | CPU: 1 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.0-rc1 #405 PREEMPT
      | Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno Development Platform
      | pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      | pc : genpd_debug_add+0x2c/0x160
      | lr : genpd_debug_init+0x74/0x98
      | Call trace:
      |  genpd_debug_add+0x2c/0x160 (P)
      |  genpd_debug_init+0x74/0x98
      |  do_one_initcall+0xd0/0x2d8
      |  do_initcall_level+0xa0/0x140
      |  do_initcalls+0x60/0xa8
      |  do_basic_setup+0x28/0x40
      |  kernel_init_freeable+0xe8/0x170
      |  kernel_init+0x2c/0x140
      |  ret_from_fork+0x10/0x20
    
    Fixes: 898216c97ed2 ("firmware: arm_scmi: add device power domain support using genpd")
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Reviewed-by: Peng Fan <peng.fan@nxp.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    [ drivers/pmdomain/arm/scmi_pm_domain.c -> drivers/firmware/arm_scmi/scmi_pm_domain.c ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

pmdomain: imx-gpc: Convert to platform remove callback returning void [+ + +]
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Fri Nov 21 10:40:40 2025 -0500

    pmdomain: imx-gpc: Convert to platform remove callback returning void
    
    [ Upstream commit da07c5871d18157608a0d0702cb093168d79080a ]
    
    The .remove() callback for a platform driver returns an int which makes
    many driver authors wrongly assume it's possible to do error handling by
    returning an error code. However the value returned is ignored (apart
    from emitting a warning) and this typically results in resource leaks.
    
    To improve here there is a quest to make the remove callback return
    void. In the first step of this quest all drivers are converted to
    .remove_new(), which already returns void. Eventually after all drivers
    are converted, .remove_new() will be renamed to .remove().
    
    In the error path emit an error message replacing the (less useful)
    message by the core. Apart from the improved error message there is no
    change in behaviour.
    
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/20231124080623.564924-3-u.kleine-koenig@pengutronix.de
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Stable-dep-of: bbde14682eba ("pmdomain: imx: Fix reference count leak in imx_gpc_remove")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

pmdomain: imx: Fix reference count leak in imx_gpc_remove [+ + +]
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Fri Nov 21 10:40:41 2025 -0500

    pmdomain: imx: Fix reference count leak in imx_gpc_remove
    
    [ Upstream commit bbde14682eba21d86f5f3d6fe2d371b1f97f1e61 ]
    
    of_get_child_by_name() returns a node pointer with refcount incremented, we
    should use of_node_put() on it when not needed anymore. Add the missing
    of_node_put() to avoid refcount leak.
    
    Fixes: 721cabf6c660 ("soc: imx: move PGC handling to a new GPC driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "drm/tegra: dsi: Clear enable register if powered by bootloader" [+ + +]
Author: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
Date:   Mon Nov 3 14:14:15 2025 +0000

    Revert "drm/tegra: dsi: Clear enable register if powered by bootloader"
    
    commit 660b299bed2a2a55a1f9102d029549d0235f881c upstream.
    
    Commit b6bcbce33596 ("soc/tegra: pmc: Ensure power-domains are in a
    known state") was introduced so that all power domains get initialized
    to a known working state when booting and it does this by shutting them
    down (including asserting resets and disabling clocks) before registering
    each power domain with the genpd framework, leaving it to each driver to
    later on power its needed domains.
    
    This caused the Google Pixel C to hang when booting due to a workaround
    in the DSI driver introduced in commit b22fd0b9639e ("drm/tegra: dsi:
    Clear enable register if powered by bootloader") meant to handle the case
    where the bootloader enabled the DSI hardware module. The workaround relies
    on reading a hardware register to determine the current status and after
    b6bcbce33596 that now happens in a powered down state thus leading to
    the boot hang.
    
    Fix this by reverting b22fd0b9639e since currently we are guaranteed
    that the hardware will be fully reset by the time we start enabling the
    DSI module.
    
    Fixes: b6bcbce33596 ("soc/tegra: pmc: Ensure power-domains are in a known state")
    Cc: stable@vger.kernel.org
    Signed-off-by: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Link: https://patch.msgid.link/20251103-diogo-smaug_ec_typec-v1-1-be656ccda391@tecnico.ulisboa.pt
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
s390/ctcm: Fix double-kfree [+ + +]
Author: Aleksei Nikiforov <aleksei.nikiforov@linux.ibm.com>
Date:   Wed Nov 12 19:27:24 2025 +0100

    s390/ctcm: Fix double-kfree
    
    [ Upstream commit da02a1824884d6c84c5e5b5ac373b0c9e3288ec2 ]
    
    The function 'mpc_rcvd_sweep_req(mpcginfo)' is called conditionally
    from function 'ctcmpc_unpack_skb'. It frees passed mpcginfo.
    After that a call to function 'kfree' in function 'ctcmpc_unpack_skb'
    frees it again.
    
    Remove 'kfree' call in function 'mpc_rcvd_sweep_req(mpcginfo)'.
    
    Bug detected by the clang static analyzer.
    
    Fixes: 0c0b20587b9f25a2 ("s390/ctcm: fix potential memory leak")
    Reviewed-by: Aswin Karuvally <aswin@linux.ibm.com>
    Signed-off-by: Aleksei Nikiforov <aleksei.nikiforov@linux.ibm.com>
    Signed-off-by: Aswin Karuvally <aswin@linux.ibm.com>
    Reviewed-by: Simon Horman <horms@kernel.org>
    Link: https://patch.msgid.link/20251112182724.1109474-1-aswin@linux.ibm.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
s390/mm: Fix __ptep_rdp() inline assembly [+ + +]
Author: Heiko Carstens <hca@linux.ibm.com>
Date:   Tue Nov 25 11:51:07 2025 +0100

    s390/mm: Fix __ptep_rdp() inline assembly
    
    [ Upstream commit 31475b88110c4725b4f9a79c3a0d9bbf97e69e1c ]
    
    When a zero ASCE is passed to the __ptep_rdp() inline assembly, the
    generated instruction should have the R3 field of the instruction set to
    zero. However the inline assembly is written incorrectly: for such cases a
    zero is loaded into a register allocated by the compiler and this register
    is then used by the instruction.
    
    This means that selected TLB entries may not be flushed since the specified
    ASCE does not match the one which was used when the selected TLB entries
    were created.
    
    Fix this by removing the asce and opt parameters of __ptep_rdp(), since
    all callers always pass zero, and use a hard-coded register zero for
    the R3 field.
    
    Fixes: 0807b856521f ("s390/mm: add support for RDP (Reset DAT-Protection)")
    Cc: stable@vger.kernel.org
    Reviewed-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
scsi: core: Fix a regression triggered by scsi_host_busy() [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Tue Oct 7 14:48:00 2025 -0700

    scsi: core: Fix a regression triggered by scsi_host_busy()
    
    [ Upstream commit a0b7780602b1b196f47e527fec82166a7e67c4d0 ]
    
    Commit 995412e23bb2 ("blk-mq: Replace tags->lock with SRCU for tag
    iterators") introduced the following regression:
    
    Call trace:
     __srcu_read_lock+0x30/0x80 (P)
     blk_mq_tagset_busy_iter+0x44/0x300
     scsi_host_busy+0x38/0x70
     ufshcd_print_host_state+0x34/0x1bc
     ufshcd_link_startup.constprop.0+0xe4/0x2e0
     ufshcd_init+0x944/0xf80
     ufshcd_pltfrm_init+0x504/0x820
     ufs_rockchip_probe+0x2c/0x88
     platform_probe+0x5c/0xa4
     really_probe+0xc0/0x38c
     __driver_probe_device+0x7c/0x150
     driver_probe_device+0x40/0x120
     __driver_attach+0xc8/0x1e0
     bus_for_each_dev+0x7c/0xdc
     driver_attach+0x24/0x30
     bus_add_driver+0x110/0x230
     driver_register+0x68/0x130
     __platform_driver_register+0x20/0x2c
     ufs_rockchip_pltform_init+0x1c/0x28
     do_one_initcall+0x60/0x1e0
     kernel_init_freeable+0x248/0x2c4
     kernel_init+0x20/0x140
     ret_from_fork+0x10/0x20
    
    Fix this regression by making scsi_host_busy() check whether the SCSI
    host tag set has already been initialized. tag_set->ops is set by
    scsi_mq_setup_tags() just before blk_mq_alloc_tag_set() is called. This
    fix is based on the assumption that scsi_host_busy() and
    scsi_mq_setup_tags() calls are serialized. This is the case in the UFS
    driver.
    
    Reported-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Closes: https://lore.kernel.org/linux-block/pnezafputodmqlpumwfbn644ohjybouveehcjhz2hmhtcf2rka@sdhoiivync4y/
    Cc: Ming Lei <ming.lei@redhat.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Link: https://patch.msgid.link/20251007214800.1678255-1-bvanassche@acm.org
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: sg: Do not sleep in atomic context [+ + +]
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Thu Nov 13 10:16:43 2025 -0800

    scsi: sg: Do not sleep in atomic context
    
    commit 90449f2d1e1f020835cba5417234636937dd657e upstream.
    
    sg_finish_rem_req() calls blk_rq_unmap_user(). The latter function may
    sleep. Hence, call sg_finish_rem_req() with interrupts enabled instead
    of disabled.
    
    Reported-by: syzbot+c01f8e6e73f20459912e@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/linux-scsi/691560c4.a70a0220.3124cb.001a.GAE@google.com/
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: stable@vger.kernel.org
    Fixes: 97d27b0dd015 ("scsi: sg: close race condition in sg_remove_sfp_usercontext()")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Link: https://patch.msgid.link/20251113181643.1108973-1-bvanassche@acm.org
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

scsi: target: tcm_loop: Fix segfault in tcm_loop_tpg_address_show() [+ + +]
Author: Hamza Mahfooz <hamzamahfooz@linux.microsoft.com>
Date:   Wed Nov 5 11:25:46 2025 -0800

    scsi: target: tcm_loop: Fix segfault in tcm_loop_tpg_address_show()
    
    commit e6965188f84a7883e6a0d3448e86b0cf29b24dfc upstream.
    
    If the allocation of tl_hba->sh fails in tcm_loop_driver_probe() and we
    attempt to dereference it in tcm_loop_tpg_address_show() we will get a
    segfault, see below for an example. So, check tl_hba->sh before
    dereferencing it.
    
      Unable to allocate struct scsi_host
      BUG: kernel NULL pointer dereference, address: 0000000000000194
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 0 P4D 0
      Oops: 0000 [#1] PREEMPT SMP NOPTI
      CPU: 1 PID: 8356 Comm: tokio-runtime-w Not tainted 6.6.104.2-4.azl3 #1
      Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v4.1 09/28/2024
      RIP: 0010:tcm_loop_tpg_address_show+0x2e/0x50 [tcm_loop]
    ...
      Call Trace:
       <TASK>
       configfs_read_iter+0x12d/0x1d0 [configfs]
       vfs_read+0x1b5/0x300
       ksys_read+0x6f/0xf0
    ...
    
    Cc: stable@vger.kernel.org
    Fixes: 2628b352c3d4 ("tcm_loop: Show address of tpg in configfs")
    Signed-off-by: Hamza Mahfooz <hamzamahfooz@linux.microsoft.com>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Reviewed-by: Allen Pais <apais@linux.microsoft.com>
    Link: https://patch.msgid.link/1762370746-6304-1-git-send-email-hamzamahfooz@linux.microsoft.com
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
selftests: mptcp: join: endpoints: longer transfer [+ + +]
Author: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Date:   Sun Nov 23 11:55:57 2025 -0500

    selftests: mptcp: join: endpoints: longer transfer
    
    [ Upstream commit 6457595db9870298ee30b6d75287b8548e33fe19 ]
    
    In rare cases, when the test environment is very slow, some userspace
    tests can fail because some expected events have not been seen.
    
    Because the tests are expecting a long on-going connection, and they are
    not waiting for the end of the transfer, it is fine to make the
    connection longer. This connection will be killed at the end, after the
    verifications, so making it longer doesn't change anything, apart from
    avoid it to end before the end of the verifications
    
    To play it safe, all endpoints tests not waiting for the end of the
    transfer are now sharing a longer file (128KB) at slow speed.
    
    Fixes: 69c6ce7b6eca ("selftests: mptcp: add implicit endpoint test case")
    Cc: stable@vger.kernel.org
    Fixes: e274f7154008 ("selftests: mptcp: add subflow limits test-cases")
    Fixes: b5e2fb832f48 ("selftests: mptcp: add explicit test case for remove/readd")
    Fixes: e06959e9eebd ("selftests: mptcp: join: test for flush/re-add endpoints")
    Reviewed-by: Geliang Tang <geliang@kernel.org>
    Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
    Link: https://patch.msgid.link/20251110-net-mptcp-sft-join-unstable-v1-3-a4332c714e10@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    [ removed curly braces and stderr redirection ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

selftests: net: use BASH for bareudp testing [+ + +]
Author: Po-Hsu Lin <po-hsu.lin@canonical.com>
Date:   Mon Oct 27 17:57:10 2025 +0800

    selftests: net: use BASH for bareudp testing
    
    [ Upstream commit 9311e9540a8b406d9f028aa87fb072a3819d4c82 ]
    
    In bareudp.sh, this script uses /bin/sh and it will load another lib.sh
    BASH script at the very beginning.
    
    But on some operating systems like Ubuntu, /bin/sh is actually pointed to
    DASH, thus it will try to run BASH commands with DASH and consequently
    leads to syntax issues:
      # ./bareudp.sh: 4: ./lib.sh: Bad substitution
      # ./bareudp.sh: 5: ./lib.sh: source: not found
      # ./bareudp.sh: 24: ./lib.sh: Syntax error: "(" unexpected
    
    Fix this by explicitly using BASH for bareudp.sh. This fixes test
    execution failures on systems where /bin/sh is not BASH.
    
    Reported-by: Edoardo Canepa <edoardo.canepa@canonical.com>
    Link: https://bugs.launchpad.net/bugs/2129812
    Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
    Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
    Link: https://patch.msgid.link/20251027095710.2036108-2-po-hsu.lin@canonical.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
shmem: fix tmpfs reconfiguration (remount) when noswap is set [+ + +]
Author: Mike Yuan <me@yhndnzj.com>
Date:   Sat Nov 8 19:09:47 2025 +0000

    shmem: fix tmpfs reconfiguration (remount) when noswap is set
    
    commit 3cd1548a278c7d6a9bdef1f1866e7cf66bfd3518 upstream.
    
    In systemd we're trying to switch the internal credentials setup logic
    to new mount API [1], and I noticed fsconfig(FSCONFIG_CMD_RECONFIGURE)
    consistently fails on tmpfs with noswap option. This can be trivially
    reproduced with the following:
    
    ```
    int fs_fd = fsopen("tmpfs", 0);
    fsconfig(fs_fd, FSCONFIG_SET_FLAG, "noswap", NULL, 0);
    fsconfig(fs_fd, FSCONFIG_CMD_CREATE, NULL, NULL, 0);
    fsmount(fs_fd, 0, 0);
    fsconfig(fs_fd, FSCONFIG_CMD_RECONFIGURE, NULL, NULL, 0);  <------ EINVAL
    ```
    
    After some digging the culprit is shmem_reconfigure() rejecting
    !(ctx->seen & SHMEM_SEEN_NOSWAP) && sbinfo->noswap, which is bogus
    as ctx->seen serves as a mask for whether certain options are touched
    at all. On top of that, noswap option doesn't use fsparam_flag_no,
    hence it's not really possible to "reenable" swap to begin with.
    Drop the check and redundant SHMEM_SEEN_NOSWAP flag.
    
    [1] https://github.com/systemd/systemd/pull/39637
    
    Fixes: 2c6efe9cf2d7 ("shmem: add support to ignore swap")
    Signed-off-by: Mike Yuan <me@yhndnzj.com>
    Link: https://patch.msgid.link/20251108190930.440685-1-me@yhndnzj.com
    Cc: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
smb: client: fix incomplete backport in cfids_invalidation_worker() [+ + +]
Author: Henrique Carvalho <henrique.carvalho@suse.com>
Date:   Wed Nov 26 10:55:53 2025 -0300

    smb: client: fix incomplete backport in cfids_invalidation_worker()
    
    The previous commit bdb596ceb4b7 ("smb: client: fix potential UAF in
    smb2_close_cached_fid()") was an incomplete backport and missed one
    kref_put() call in cfids_invalidation_worker() that should have been
    converted to close_cached_dir().
    
    Fixes: cb52d9c86d70 ("smb: client: fix potential UAF in smb2_close_cached_fid()")"
    Signed-off-by: Henrique Carvalho <henrique.carvalho@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

smb: client: introduce close_cached_dir_locked() [+ + +]
Author: Henrique Carvalho <henrique.carvalho@suse.com>
Date:   Thu Nov 13 15:09:13 2025 -0300

    smb: client: introduce close_cached_dir_locked()
    
    commit a9d1f38df7ecd0e21233447c9cc6fa1799eddaf3 upstream.
    
    Replace close_cached_dir() calls under cfid_list_lock with a new
    close_cached_dir_locked() variant that uses kref_put() instead of
    kref_put_lock() to avoid recursive locking when dropping references.
    
    While the existing code works if the refcount >= 2 invariant holds,
    this area has proven error-prone. Make deadlocks impossible and WARN
    on invariant violations.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Henrique Carvalho <henrique.carvalho@suse.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
timers: Fix NULL function pointer race in timer_shutdown_sync() [+ + +]
Author: Yipeng Zou <zouyipeng@huawei.com>
Date:   Sat Nov 22 09:39:42 2025 +0000

    timers: Fix NULL function pointer race in timer_shutdown_sync()
    
    commit 20739af07383e6eb1ec59dcd70b72ebfa9ac362c upstream.
    
    There is a race condition between timer_shutdown_sync() and timer
    expiration that can lead to hitting a WARN_ON in expire_timers().
    
    The issue occurs when timer_shutdown_sync() clears the timer function
    to NULL while the timer is still running on another CPU. The race
    scenario looks like this:
    
    CPU0                                    CPU1
                                            <SOFTIRQ>
                                            lock_timer_base()
                                            expire_timers()
                                            base->running_timer = timer;
                                            unlock_timer_base()
                                            [call_timer_fn enter]
                                            mod_timer()
                                            ...
    timer_shutdown_sync()
    lock_timer_base()
    // For now, will not detach the timer but only clear its function to NULL
    if (base->running_timer != timer)
            ret = detach_if_pending(timer, base, true);
    if (shutdown)
            timer->function = NULL;
    unlock_timer_base()
                                            [call_timer_fn exit]
                                            lock_timer_base()
                                            base->running_timer = NULL;
                                            unlock_timer_base()
                                            ...
                                            // Now timer is pending while its function set to NULL.
                                            // next timer trigger
                                            <SOFTIRQ>
                                            expire_timers()
                                            WARN_ON_ONCE(!fn) // hit
                                            ...
    lock_timer_base()
    // Now timer will detach
    if (base->running_timer != timer)
            ret = detach_if_pending(timer, base, true);
    if (shutdown)
            timer->function = NULL;
    unlock_timer_base()
    
    The problem is that timer_shutdown_sync() clears the timer function
    regardless of whether the timer is currently running. This can leave a
    pending timer with a NULL function pointer, which triggers the
    WARN_ON_ONCE(!fn) check in expire_timers().
    
    Fix this by only clearing the timer function when actually detaching the
    timer. If the timer is running, leave the function pointer intact, which is
    safe because the timer will be properly detached when it finishes running.
    
    Fixes: 0cc04e80458a ("timers: Add shutdown mechanism to the internal functions")
    Signed-off-by: Yipeng Zou <zouyipeng@huawei.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://patch.msgid.link/20251122093942.301559-1-zouyipeng@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
tracing/tools: Fix incorrcet short option in usage text for --threads [+ + +]
Author: Zhang Chujun <zhangchujun@cmss.chinamobile.com>
Date:   Thu Nov 6 11:10:40 2025 +0800

    tracing/tools: Fix incorrcet short option in usage text for --threads
    
    [ Upstream commit 53afec2c8fb2a562222948cb1c2aac48598578c9 ]
    
    The help message incorrectly listed '-t' as the short option for
    --threads, but the actual getopt_long configuration uses '-e'.
    This mismatch can confuse users and lead to incorrect command-line
    usage. This patch updates the usage string to correctly show:
            "-e, --threads NRTHR"
    to match the implementation.
    
    Note: checkpatch.pl reports a false-positive spelling warning on
    'Run', which is intentional.
    
    Link: https://patch.msgid.link/20251106031040.1869-1-zhangchujun@cmss.chinamobile.com
    Signed-off-by: Zhang Chujun <zhangchujun@cmss.chinamobile.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
uio_hv_generic: Set event for all channels on the device [+ + +]
Author: Long Li <longli@microsoft.com>
Date:   Mon Mar 10 15:12:01 2025 -0700

    uio_hv_generic: Set event for all channels on the device
    
    commit d062463edf1770427dc2d637df4088df4835aa47 upstream.
    
    Hyper-V may offer a non latency sensitive device with subchannels without
    monitor bit enabled. The decision is entirely on the Hyper-V host not
    configurable within guest.
    
    When a device has subchannels, also signal events for the subchannel
    if its monitor bit is disabled.
    
    This patch also removes the memory barrier when monitor bit is enabled
    as it is not necessary. The memory barrier is only needed between
    setting up interrupt mask and calling vmbus_set_event() when monitor
    bit is disabled.
    
    Signed-off-by: Long Li <longli@microsoft.com>
    Reviewed-by: Michael Kelley <mhklinux@outlook.com>
    Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
    Link: https://lore.kernel.org/r/1741644721-20389-1-git-send-email-longli@linuxonhyperv.com
    Fixes: b15b7d2a1b09 ("uio_hv_generic: Let userspace take care of interrupt mask")
    Closes: https://bugs.debian.org/1120602
    Signed-off-by: Naman Jain <namjain@linux.microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vsock: Ignore signal/timeout on connect() if already established [+ + +]
Author: Michal Luczaj <mhal@rbox.co>
Date:   Wed Nov 19 15:02:59 2025 +0100

    vsock: Ignore signal/timeout on connect() if already established
    
    [ Upstream commit 002541ef650b742a198e4be363881439bb9d86b4 ]
    
    During connect(), acting on a signal/timeout by disconnecting an already
    established socket leads to several issues:
    
    1. connect() invoking vsock_transport_cancel_pkt() ->
       virtio_transport_purge_skbs() may race with sendmsg() invoking
       virtio_transport_get_credit(). This results in a permanently elevated
       `vvs->bytes_unsent`. Which, in turn, confuses the SOCK_LINGER handling.
    
    2. connect() resetting a connected socket's state may race with socket
       being placed in a sockmap. A disconnected socket remaining in a sockmap
       breaks sockmap's assumptions. And gives rise to WARNs.
    
    3. connect() transitioning SS_CONNECTED -> SS_UNCONNECTED allows for a
       transport change/drop after TCP_ESTABLISHED. Which poses a problem for
       any simultaneous sendmsg() or connect() and may result in a
       use-after-free/null-ptr-deref.
    
    Do not disconnect socket on signal/timeout. Keep the logic for unconnected
    sockets: they don't linger, can't be placed in a sockmap, are rejected by
    sendmsg().
    
    [1]: https://lore.kernel.org/netdev/e07fd95c-9a38-4eea-9638-133e38c2ec9b@rbox.co/
    [2]: https://lore.kernel.org/netdev/20250317-vsock-trans-signal-race-v4-0-fc8837f3f1d4@rbox.co/
    [3]: https://lore.kernel.org/netdev/60f1b7db-3099-4f6a-875e-af9f6ef194f6@rbox.co/
    
    Fixes: d021c344051a ("VSOCK: Introduce VM Sockets")
    Signed-off-by: Michal Luczaj <mhal@rbox.co>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Link: https://patch.msgid.link/20251119-vsock-interrupted-connect-v2-1-70734cf1233f@rbox.co
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
wifi: cfg80211: Add missing lock in cfg80211_check_and_end_cac() [+ + +]
Author: Alexander Wetzel <Alexander@wetzel-home.de>
Date:   Thu Jul 17 18:25:45 2025 +0200

    wifi: cfg80211: Add missing lock in cfg80211_check_and_end_cac()
    
    commit 2c5dee15239f3f3e31aa5c8808f18996c039e2c1 upstream.
    
    Callers of wdev_chandef() must hold the wiphy mutex.
    
    But the worker cfg80211_propagate_cac_done_wk() never takes the lock.
    Which triggers the warning below with the mesh_peer_connected_dfs
    test from hostapd and not (yet) released mac80211 code changes:
    
    WARNING: CPU: 0 PID: 495 at net/wireless/chan.c:1552 wdev_chandef+0x60/0x165
    Modules linked in:
    CPU: 0 UID: 0 PID: 495 Comm: kworker/u4:2 Not tainted 6.14.0-rc5-wt-g03960e6f9d47 #33 13c287eeabfe1efea01c0bcc863723ab082e17cf
    Workqueue: cfg80211 cfg80211_propagate_cac_done_wk
    Stack:
     00000000 00000001 ffffff00 6093267c
     00000000 6002ec30 6d577c50 60037608
     00000000 67e8d108 6063717b 00000000
    Call Trace:
     [<6002ec30>] ? _printk+0x0/0x98
     [<6003c2b3>] show_stack+0x10e/0x11a
     [<6002ec30>] ? _printk+0x0/0x98
     [<60037608>] dump_stack_lvl+0x71/0xb8
     [<6063717b>] ? wdev_chandef+0x60/0x165
     [<6003766d>] dump_stack+0x1e/0x20
     [<6005d1b7>] __warn+0x101/0x20f
     [<6005d3a8>] warn_slowpath_fmt+0xe3/0x15d
     [<600b0c5c>] ? mark_lock.part.0+0x0/0x4ec
     [<60751191>] ? __this_cpu_preempt_check+0x0/0x16
     [<600b11a2>] ? mark_held_locks+0x5a/0x6e
     [<6005d2c5>] ? warn_slowpath_fmt+0x0/0x15d
     [<60052e53>] ? unblock_signals+0x3a/0xe7
     [<60052f2d>] ? um_set_signals+0x2d/0x43
     [<60751191>] ? __this_cpu_preempt_check+0x0/0x16
     [<607508b2>] ? lock_is_held_type+0x207/0x21f
     [<6063717b>] wdev_chandef+0x60/0x165
     [<605f89b4>] regulatory_propagate_dfs_state+0x247/0x43f
     [<60052f00>] ? um_set_signals+0x0/0x43
     [<605e6bfd>] cfg80211_propagate_cac_done_wk+0x3a/0x4a
     [<6007e460>] process_scheduled_works+0x3bc/0x60e
     [<6007d0ec>] ? move_linked_works+0x4d/0x81
     [<6007d120>] ? assign_work+0x0/0xaa
     [<6007f81f>] worker_thread+0x220/0x2dc
     [<600786ef>] ? set_pf_worker+0x0/0x57
     [<60087c96>] ? to_kthread+0x0/0x43
     [<6008ab3c>] kthread+0x2d3/0x2e2
     [<6007f5ff>] ? worker_thread+0x0/0x2dc
     [<6006c05b>] ? calculate_sigpending+0x0/0x56
     [<6003b37d>] new_thread_handler+0x4a/0x64
    irq event stamp: 614611
    hardirqs last  enabled at (614621): [<00000000600bc96b>] __up_console_sem+0x82/0xaf
    hardirqs last disabled at (614630): [<00000000600bc92c>] __up_console_sem+0x43/0xaf
    softirqs last  enabled at (614268): [<00000000606c55c6>] __ieee80211_wake_queue+0x933/0x985
    softirqs last disabled at (614266): [<00000000606c52d6>] __ieee80211_wake_queue+0x643/0x985
    
    Fixes: 26ec17a1dc5e ("cfg80211: Fix radar event during another phy CAC")
    Signed-off-by: Alexander Wetzel <Alexander@wetzel-home.de>
    Link: https://patch.msgid.link/20250717162547.94582-1-Alexander@wetzel-home.de
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [ The author recommends that when porting to older kernels, we should use wiphy_lock()
    and wiphy_unlock() instead of guard(). ]
    Signed-off-by: Alva Lan <alvalan9@foxmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
x86/microcode/AMD: Limit Entrysign signature checking to known generations [+ + +]
Author: Borislav Petkov (AMD) <bp@alien8.de>
Date:   Thu Oct 23 14:46:29 2025 +0200

    x86/microcode/AMD: Limit Entrysign signature checking to known generations
    
    [ Upstream commit 8a9fb5129e8e64d24543ebc70de941a2d77a9e77 ]
    
    Limit Entrysign sha256 signature checking to CPUs in the range Zen1-Zen5.
    
    X86_BUG cannot be used here because the loading on the BSP happens way
    too early, before the cpufeatures machinery has been set up.
    
    Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
    Link: https://patch.msgid.link/all/20251023124629.5385-1-bp@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
xfrm: Determine inner GSO type from packet inner protocol [+ + +]
Author: Jianbo Liu <jianbol@nvidia.com>
Date:   Tue Oct 28 04:22:48 2025 +0200

    xfrm: Determine inner GSO type from packet inner protocol
    
    [ Upstream commit 61fafbee6cfed283c02a320896089f658fa67e56 ]
    
    The GSO segmentation functions for ESP tunnel mode
    (xfrm4_tunnel_gso_segment and xfrm6_tunnel_gso_segment) were
    determining the inner packet's L2 protocol type by checking the static
    x->inner_mode.family field from the xfrm state.
    
    This is unreliable. In tunnel mode, the state's actual inner family
    could be defined by x->inner_mode.family or by
    x->inner_mode_iaf.family. Checking only the former can lead to a
    mismatch with the actual packet being processed, causing GSO to create
    segments with the wrong L2 header type.
    
    This patch fixes the bug by deriving the inner mode directly from the
    packet's inner protocol stored in XFRM_MODE_SKB_CB(skb)->protocol.
    
    Instead of replicating the code, this patch modifies the
    xfrm_ip2inner_mode helper function. It now correctly returns
    &x->inner_mode if the selector family (x->sel.family) is already
    specified, thereby handling both specific and AF_UNSPEC cases
    appropriately.
    
    With this change, ESP GSO can use xfrm_ip2inner_mode to get the
    correct inner mode. It doesn't affect existing callers, as the updated
    logic now mirrors the checks they were already performing externally.
    
    Fixes: 26dbd66eab80 ("esp: choose the correct inner protocol for GSO on inter address family tunnels")
    Signed-off-by: Jianbo Liu <jianbol@nvidia.com>
    Reviewed-by: Cosmin Ratiu <cratiu@nvidia.com>
    Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

xfrm: Prevent locally generated packets from direct output in tunnel mode [+ + +]
Author: Jianbo Liu <jianbol@nvidia.com>
Date:   Wed Oct 29 11:50:25 2025 +0200

    xfrm: Prevent locally generated packets from direct output in tunnel mode
    
    [ Upstream commit 59630e2ccd728703cc826e3a3515d70f8c7a766c ]
    
    Add a check to ensure locally generated packets (skb->sk != NULL) do
    not use direct output in tunnel mode, as these packets require proper
    L2 header setup that is handled by the normal XFRM processing path.
    
    Fixes: 5eddd76ec2fd ("xfrm: fix tunnel mode TX datapath in packet offload mode")
    Signed-off-by: Jianbo Liu <jianbol@nvidia.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>